以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  以A表中的数据为条件查找B表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102116)

--  作者:裴保民
--  发布时间:2017/6/13 16:26:00
--  以A表中的数据为条件查找B表
怎样实现在A表中双击某一个字段,以这个字段上的数据作为查找条件来查找B表中符合条件的数据呢。
--  作者:有点蓝
--  发布时间:2017/6/13 17:27:00
--  
DoubleClick事件

If e.Col.Name = "第十列" Then
    e.Cancel = True \'禁止进入编辑状态
    Dim dr As DataRow = DataTables("表B").Find("第一列=\'" & e.Row("第十列") &"\'")
    If dr IsNot Nothing Then
        其它处理
    End If
End If

--  作者:裴保民
--  发布时间:2017/6/13 18:48:00
--  
老师追问一下假如第十列是一个布尔变量只有是‘‘否’’的情况下执行并将查询到的数据行每个字段进行赋值怎么处理呢?
--  作者:有点色
--  发布时间:2017/6/13 19:10:00
--  
If e.Col.Name = "第十列" Then
    e.Cancel = True \'禁止进入编辑状态
    For Each dr As DataRow In DataTables("表B").Select("第一列=" & e.Row("第十列"))
        dr("第二列") = 123
        dr("第三列") = 123
    Next
End If

--  作者:peibaomin
--  发布时间:2017/6/13 21:01:00
--  

运行代码时出错


图片点击可在新窗口打开查看此主题相关图片如下:125.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2017/6/13 21:25:00
--  
贴出你的代码,并说明列类型
--  作者:peibaomin
--  发布时间:2017/6/13 23:31:00
--  

Dim cz As DataRow = DataTables("表B").Find("id=\'" & e.Row("id") & "\'")
If cz Is Nothing Then
    MessageBox.Show("查找的数据不存在,无法添加数据","提示")
Else
    If e.Col.Name = "id" Then
        e.Cancel = True \'禁止进入编辑状态
        For Each dr As DataRow In DataTables("表B").Select("id=" & e.Row("id")) \'赋值所有行
            dr("id") = e.Row("id")
            dr("第二列") = e.Row("第二列")
            dr("第三列") = e.Row("第三列")
        Next
    End If
End If

 

“ID”必须是数字运行不出错,只要是其他类型都会报错,是怎么回事呢?


图片点击可在新窗口打开查看此主题相关图片如下:2222.png
图片点击可在新窗口打开查看


 双击的次数多了就会弹出下面的对话框


图片点击可在新窗口打开查看此主题相关图片如下:33333.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/6/13 23:42:45编辑过]

--  作者:有点蓝
--  发布时间:2017/6/13 23:51:00
--  
If e.Col.Name = "id" Then
    Dim cz As DataRow = DataTables("表B").Find("id=" & e.Row("id"))
    If cz Is Nothing Then
        MessageBox.Show("查找的数据不存在,无法添加数据","提示")
    Else
        e.Cancel = True \'禁止进入编辑状态
        For Each dr As DataRow In DataTables("表B").Select("id=" & e.Row("id")) \'赋值所有行
            dr("id") = e.Row("id")
            dr("第二列") = e.Row("第二列")
            dr("第三列") = e.Row("第三列")
        Next
    End If
End If

如果是字符改为
DataTables("表B").Find("id=\'" & e.Row("id") & "\'")
For Each dr As DataRow In DataTables("表B").Select("id=\'" & e.Row("id") & "\'"

字符和数字的用法不一样的,不能一起用