以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]狐爸,代码有问题啊。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=30323)

--  作者:sadfox
--  发布时间:2013/3/25 22:07:00
--  [求助]狐爸,代码有问题啊。

Dim txt As String =  e.Form.Controls("TextBox1").Value
If txt = "" Then
    Return
End If
Dim flt As String
If IsNumeric(txt) Then
    If txt.Length <> 6 Then
        messagebox.show("请输入正确的六位数编号")
        Return
    Else
        flt = "编号 = \'" & txt & "\'"
    End If
Else
    flt = "姓名 = \'" & txt & "\'"
End If
Dim i As Integer = Tables("表A").FindRow(flt,0,False)
If i < 0 Then
    messagebox.show("查无此人")
Else
    Tables("表A").filter = flt
End If

谁能帮忙改下,让其下次开始查询是从表A查,而不是在上次结果中查询,老白,一个,才开始学习中,真不懂。

 

[此贴子已经被作者于2013-3-26 9:12:28编辑过]

--  作者:sadfox
--  发布时间:2013/3/25 22:50:00
--  

狐爸在吗?测试有问题。

1、第二次查询就是从上次的结果中查找。

2、使用另外的查询后,再使用该查询每次显示的列就是其他查询设置显示的列、而不是全部列。

 

[此贴子已经被作者于2013-3-26 9:11:36编辑过]

--  作者:sadfox
--  发布时间:2013/3/26 9:13:00
--  
狐爸在不?快来帮忙啊!
--  作者:狐狸爸爸
--  发布时间:2013/3/26 9:22:00
--  
Dim txt As String =  e.Form.Controls("TextBox1").Value
If txt = "" Then
    Return
End If
Dim flt As String
If IsNumeric(txt) Then
    If txt.Length <> 6 Then
        messagebox.show("请输入正确的六位数编号")
        Return
    Else
        flt = "编号 = \'" & txt & "\'"
    End If
Else
    flt = "姓名 = \'" & txt & "\'"
End If
Dim i As Integer = Tables("表A").FindRow(flt,0,False)
If i < 0 Then
    messagebox.show("查无此人")
Else
    Tables("表A").Position = i
End If

--  作者:sadfox
--  发布时间:2013/3/26 9:29:00
--  

这样的话,每次查询显示的结果是表的所有数据都在。

我需要只显示出查询到的一行结果


--  作者:狐狸爸爸
--  发布时间:2013/3/26 9:33:00
--  
Dim txt As String =  e.Form.Controls("TextBox1").Value
If txt = "" Then
    Return
End If
Dim flt As String
If IsNumeric(txt) Then
    If txt.Length <> 6 Then
        messagebox.show("请输入正确的六位数编号")
        Return
    Else
        flt = "编号 = \'" & txt & "\'"
    End If
Else
    flt = "姓名 = \'" & txt & "\'"
End If
If  DataTables("表A").Find(flt) Is Nothing Then
    messagebox.show("查无此人")
Else
    Tables("表A").filter = flt
End If

--  作者:sadfox
--  发布时间:2013/3/26 9:58:00
--  

感谢狐爸,已经解决,能说明一下If DataTables("表A").Find(flt) Is Nothing Then 和 Dim i As Integer = Tables("表A").FindRow(flt,0,False) If i < 0 Then
这2句的意思和区别吗?老白学习中!
另外我将其用在窗口中查询时,还是出现同样的问题,当使用其他设定显示查询后,再用这个查询,还是会只显示上次查询的列,而不是全部列.

昨天晚上我将代码改成这样后,效果还一样

Dim flt As String
Dim txt As String =  e.Form.Controls("xmzd").Value
If txt = "" Then
    Return
End If
If IsNumeric(txt) Then
    If txt.Length <> 6 Then
        messagebox.show("请输入正确的位数6位数编号")
        Return
    Else
        flt = "编号 = \'" & txt & "\'"
    End If
Else
    flt = "姓名 = \'" & txt & "\'"
End If
Tables("窗口1_表A").Filter = flt
Dim i As Integer = Tables("窗口1_表A").FindRow(flt,0,False)
If i < 0 Then
    messagebox.show("查无此人,请重新输入正确的姓名")
End If

[此贴子已经被作者于2013-3-26 10:11:25编辑过]

--  作者:sadfox
--  发布时间:2013/3/26 10:13:00
--  

但是和现在都是同样的问题!


--  作者:狐狸爸爸
--  发布时间:2013/3/26 10:15:00
--  

你依葫芦画瓢就行啊。我最后的几行代码是:

 

....

If  DataTables("表A").Find(flt) Is Nothing Then
    messagebox.show("查无此人")
Else
    Tables("表A").filter = flt
End If

 

你最后的几行是:

....

Tables("窗口1_表A").Filter = flt
Dim i As Integer = Tables("窗口1_表A").FindRow(flt,0,False)
If i < 0 Then
    messagebox.show("查无此人,请重新输入正确的姓名")
End If

 

你看出差别了吗?

 

 

呵呵,其实你这样是学不会foxtable的,更不可能学好,我建议您先踏踏实实按顺序看帮助文件,因为磨刀不误砍柴工,心急吃不得热豆腐。

 

看帮助一定要按顺序,头一两遍可以不求甚解,第三遍开始要将每个例子实际操作演练一遍,不明白的就上论坛求助。
三遍之后才开始做系统,先设计好表,想做什么功能,就做什么功能,遇到问题在帮助找答案,找不到的在论坛提问,不断遇到问题,不断解决问题,慢慢就熟悉了。
此外一定要先掌握《使用指南》,然后再看《开发指南》

 

 

[此贴子已经被作者于2013-3-26 10:17:17编辑过]

--  作者:sadfox
--  发布时间:2013/3/26 10:19:00
--  

对啊,我把

If DataTables("表A").Find(flt) Is Nothing Then
messagebox.show("查无此人")
Else
Tables("表A").filter = flt
End If

改成

If DataTables("表A").Find(flt) Is Nothing Then
messagebox.show("查无此人")
Else
Tables("窗口_表A").filter = flt
End If

后,就会出现上述问题!

呵呵,帮助我已经看了几遍了,关键是年龄大了,很多东西只看完全就是看天书,而且记不住,语言更没学过,现在这样的效果对我来说不错,学起来要快多了。

[此贴子已经被作者于2013-3-26 10:26:20编辑过]