以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  设置 DataSource 属性后无法修改项集合  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=78721)

--  作者:kaituozhe
--  发布时间:2015/12/15 18:18:00
--  设置 DataSource 属性后无法修改项集合

在ComboBox3的ValueChanged事件中设置了以下代码,执行时提示错误

e.Form.Controls("ComboBox3").Combolist = DataTables("报告").GetComboListString("类型")
e.Form.Controls("ComboBox2").Combolist = DataTables("报告").GetComboListString("查询人", "[类型] = \'" & e.Form.Controls("ComboBox3").text & "\'")
e.Form.Controls("ComboBox1").Combolist = DataTables("报告").GetComboListString("序号", "[类型] = \'" & e.Form.Controls("ComboBox3").text & "\'")

 

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2015.11.11.1
错误所在事件:窗口,查证汇总表,ComboBox3,ValueChanged
详细错误信息:
设置 DataSource 属性后无法修改项集合。


--  作者:kaituozhe
--  发布时间:2015/12/15 18:28:00
--  
找到原因了
--  作者:kaituozhe
--  发布时间:2015/12/15 18:43:00
--  

下面黄色的运行有错误,不知道错在那里了,怎么修改

If e.Form.Controls("ComboBox2").text = Nothing Then
    \'MessageBox.show("部门能为空,请输入","提示")
Else
    Dim dr As DataRow = DataTables("查证汇总表").find("户名 = \'" & e.Form.Controls("ComboBox2").text & "\'")

    If dr Is Nothing Then
        MessageBox.show("您输入的查询人不存在,请核对后再输入","提示")
        Return
    Else
With CurrentTable
    Dim r As Integer
    r = .FindRow("[查询人] Like \'% \'" & e.Form.Controls("ComboBox2").text & "\' %\'") \'从第一行开始查找
    If r >= 0 Then \'如果找到的话
        .Position = r \'定位到找到的行.
    End If
End With


--  作者:大红袍
--  发布时间:2015/12/15 18:46:00
--  
r = .FindRow("[查询人] Like \'%" & e.Form.Controls("ComboBox2").text & "%\'") \'从第一行开始查找
--  作者:kaituozhe
--  发布时间:2015/12/15 19:16:00
--  

在窗口中,想定位ComboBox2的值指向的行,但是不能不知道是什么原因?

With Tables("查证汇总表")
            Dim r As Integer
            r = .FindRow("[户名] Like \'% " & e.Form.Controls("ComboBox2").text & "%\'") \'从第一行开始查找
            If r >= 0 Then \'如果找到的话
                .Position = r \'定位到找到的行.
            End If
        End With


--  作者:kaituozhe
--  发布时间:2015/12/15 19:23:00
--  
解决了
--  作者:kaituozhe
--  发布时间:2015/12/15 19:42:00
--  

Dim wz As Integer = Tables("查证汇总表").FindRow(dr)
        If wz >= 0 Then
            Tables("查证汇总表").Position = wz
        End If

上述代码会从第一行开始,逐项查找,能不能找到所在行


--  作者:大红袍
--  发布时间:2015/12/15 19:45:00
--  

找到所有行?找到你要做什么?直接用select

 

http://www.foxtable.com/help/topics/0400.htm

 


--  作者:kaituozhe
--  发布时间:2015/12/15 19:48:00
--  

在上述窗口还设计了一个下一行的按钮,但是会从第一行开始查找,

上述代码会从第一行开始,逐项查找,能不能找到所在行,怎么能从当前行的下一行查找,把代码修改如下:

Dim wz As Integer = Tables("查证汇总表").FindRow(dr,Tables("查证汇总表").Current, True )
        If wz >= 0 Then
            Tables("查证汇总表").Position = wz
        End If

但是提示 datarowf无法转换为string类型


--  作者:kaituozhe
--  发布时间:2015/12/15 19:55:00
--  

If e.Form.Controls("ComboBox2").text = Nothing Then
    \'MessageBox.show("部门能为空,请输入","提示")
Else
    Dim dr As DataRow = DataTables("查证汇总表").find("户名 = \'" & e.Form.Controls("ComboBox2").text & "\'")
    If dr Is Nothing Then
               Return
    Else
        Dim wz As Integer = Tables("查证汇总表").FindRow(dr)
        If wz >= 0 Then
            Tables("查证汇总表").Position = wz
        End If
 End If
End If
  

上述代码查到 e.Form.Controls("ComboBox2").text  并定位到所在的行