以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]跨表输入报错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=122278)

--  作者:33chyh
--  发布时间:2018/7/22 10:55:00
--  [求助]跨表输入报错
在表“产品描述”列“订单号”中输入数字后,在表“用户1”、“用户2”列“订单号”中就出现相应的订单号。具体DataColChanged事件代码如下:
If e.DataRow("订单号").length > 0 Then
    For Each dt As DataTable In DataTables
        For Each xsdr As DataRow In DataTables("用户").DataRows
            If dt.name = xsdr("用户名") Then
                Dim ddhdr As DataRow = DataTables(dt.name).find("订单号 = \'" & e.DataRow("订单号") & "\'")
                If ddhdr Is Nothing Then
                   ddhdr("订单号") = e.DataRow("订单号")
                End If
            End If
        Next
    Next
End If
运行过程中出现如图所示错误: 


图片点击可在新窗口打开查看此主题相关图片如下:跨表输入报错图.png
图片点击可在新窗口打开查看

查程序,应该是涂荧光的语句出现错误,但是不知道错在什么地方,如何改?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

请高手帮助!!!

[此贴子已经被作者于2018/7/22 12:38:29编辑过]

--  作者:有点甜
--  发布时间:2018/7/22 17:17:00
--  

1、你这样做是不正确的,没必要这样做。你需要得到每个客户的订单信息,完全可以通过统计生成临时表的方式。

 

2、没看懂你例子或者你代码的意思。这样?

 

If e.DataRow("订单号").length > 0 Then
    For Each xsdr As DataRow In DataTables("用户").DataRows
        Dim ddhdr As DataRow = DataTables(xsdr("用户名")).find("订单号 = \'" & e.DataRow("订单号") & "\'")
        If ddhdr Is Nothing Then
            ddhdr = DataTables(xsdr("用户名")).addnew
        End If
        ddhdr("订单号") = e.DataRow("订单号")
    Next
End If


--  作者:33chyh
--  发布时间:2018/7/22 18:59:00
--  

有点甜老师:

ddhdr = DataTables(xsdr("用户名")).addnew

有这样一个语句确实可以将e.DataRow("订单号")的内容写到ddhdr("订单号") 中。因为已经有了一些空白行,能否通过不加空白行e.DataRow("订单号")的内容写到ddhdr("订单号") 中呢?

以下是我将相关语句的注释补充上,请您帮助!!!

If e.DataRow("订单号").length > 0 Then   \'如果当前表中的订单号存在
    For Each dt As DataTable In DataTables   \'在当前项目中查找与用户表中用户名列相同的表
        For Each xsdr As DataRow In DataTables("用户").DataRows
            If dt.name = xsdr("用户名") Then    \'如果表名与用户名列中某一用户名相同
                Dim ddhdr As DataRow = DataTables(dt.name).find("订单号 = \'" & e.DataRow("订单号") & "\'")  \'在用户名相同的表中查找与产品描述表中当前输入订单号相同的行
                If ddhdr Is Nothing Then  \'如果没有找到
                   ddhdr("订单号") = e.DataRow("订单号")   \'将当前产品描述表中输入的订单号赋给该用户表中的订单号列中第一个空白单元格
                End If
            End If
        Next
    Next
End If
[此贴子已经被作者于2018/7/22 18:59:09编辑过]

--  作者:有点甜
--  发布时间:2018/7/22 19:57:00
--  
If e.DataRow("订单号").length > 0 Then
    For Each xsdr As DataRow In DataTables("用户").DataRows
        Dim ddhdr As DataRow = DataTables(xsdr("用户名")).find("订单号 = \'" & e.DataRow("订单号") & "\'")
        If ddhdr Is Nothing Then
            ddhdr = DataTables(xsdr("用户名")).find("订单号 is null")
            If ddhdr Is Nothing Then ddhdr = DataTables(xsdr("用户名")).addnew
        End If
        ddhdr("订单号") = e.DataRow("订单号")
    Next
End If

--  作者:33chyh
--  发布时间:2018/7/23 7:02:00
--  
谢谢有点甜老师,已经能实现要求了!!!
[此贴子已经被作者于2018/7/23 7:02:56编辑过]