以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  ACCESS数据库转换成SQL数据库报错  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=173991)

--  作者:whx007
--  发布时间:2021/12/26 2:34:00
--  ACCESS数据库转换成SQL数据库报错
把ACCESS数据库转换成SQL数据库后高效流水账代码报错:

图片点击可在新窗口打开查看此主题相关图片如下:屏幕截图 2021-12-25 194614.png
图片点击可在新窗口打开查看

我从sql数据库中查看订单付款明细表中有_SortKey列

图片点击可在新窗口打开查看此主题相关图片如下:屏幕截图 2021-12-25 194738.png
图片点击可在新窗口打开查看

订单付款明细表DataColChanged:
If Tables("订单付款明细表").Current IsNot Nothing Then
    Dim r1 As Row = Tables("订单付款明细表").Current
    Dim r As DataRow = DataTables("销售订单").find("订单号 = \'" & r1("订单号") & "\'")
    If r IsNot Nothing  Then
        r1("订单总额") = r("GrandTotal")
        r1("客户名称") = r("客户名称")
        r1("客户电话") = r("客户电话")
    End If
End If

Select Case e.DataCol.Name
    Case "订单号","订单总额","付款金额"
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [订单号] = \'" & mr("订单号") & "\'", "[_SortKey] Desc")
        If dr Is Nothing Then
            mr("未付金额") = mr("订单总额") - mr("付款金额")
            dr = mr
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [订单号] = \'" & dr("订单号") & "\'", "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
            drs(i)("未付金额") = drs(i-1)("未付金额") - drs(i)("付款金额")
        Next
        If e.DataCol.Name = "订单号" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [订单号] = \'" & e.OldValue & "\'", "[_SortKey] Desc")
            If dr Is Nothing Then
                dr = e.DataTable.Find("[订单号] = \'" & e.OldValue & "\'", "[_SortKey]")
                If dr IsNot Nothing Then
                    dr("未付金额") = dr("订单总额") - dr("付款金额")
                End If
            End If
            If dr IsNot Nothing Then
                drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [订单号] = \'" & dr("订单号") & "\'", "[_SortKey]")
                For i As Integer = 1 To drs.Count - 1
                    drs(i)("未付金额") = drs(i-1)("未付金额") - drs(i)("付款金额")
                Next
            End If
        End If
End Select

If e.DataCol.Name = "付款金额" Then
    Dim pr As DataRow
    pr = DataTables("销售订单").Find("订单号 = \'" & e.DataRow("订单号") & "\'")
    If pr IsNot Nothing Then
        pr("已付款")= pr("已付款") + e.NewValue - e.OldValue
    End If
End If

订单出库明细表也有同样的流水账代码,没有报这个错。


[此贴子已经被作者于2021/12/26 2:36:31编辑过]

--  作者:有点蓝
--  发布时间:2021/12/26 20:23:00
--  
BeforeConnectOuterDataSource是不是有代码连接到其它数据库了?

备份项目。到外部表管理中打开这个表,重新选一下表,预览看看有没有这个列,然后点击确定返回

如果还不行,把这个表从外部表管理中删除,然后重新添加,在把表事件代码复制进去

--  作者:whx007
--  发布时间:2021/12/26 21:31:00
--  
以下是引用有点蓝在2021/12/26 20:23:00的发言:
BeforeConnectOuterDataSource是不是有代码连接到其它数据库了?
BeforeConnectOuterDataSource里面没有代码

备份项目。到外部表管理中打开这个表,重新选一下表,预览看看有没有这个列,然后点击确定返回
预览没有这个列

如果还不行,把这个表从外部表管理中删除,然后重新添加,在把表事件代码复制进去
删除后重新添加,预览还是没有这个列,数据库中的表又确实存在这列
我查看了一下其他几个表,数据库中都有_sortkey这列,但只有一个表在外部表管理中能看到,其他表在外部表管理中都没有这列。

[此贴子已经被作者于2021/12/26 21:42:07编辑过]

--  作者:有点蓝
--  发布时间:2021/12/26 21:44:00
--  
这些表还是内部表,不是外部表吧,到重定向里看看