以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]有判断怎么会还提示出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=125944)

--  作者:ajie5211
--  发布时间:2018/10/10 11:39:00
--  [求助]有判断怎么会还提示出错

订单修改确认代码如下,不是已加了判断吗,怎么还会有错哪?

Dim xsdh As String = args(0)
If  Forms("订单计划一览表").Opened = True Then
    Dim cmdht As New SQLCommand
    Dim htdt As DataTable
    cmdht.C
    cmdht.CommandText = "SE LEC T * From {SG2生管订单完工情况} where 销售单号 = \'" & xsdh & "\'"
    htdt = cmdht.ExecuteReader()
    Dim htdr As DataRow = htdt.Find("销售单号 = \'" & xsdh & "\'")
    If htdr IsNot Nothing  Then
        Functions.BeginSyncExecute("订单填写",htdr)
    End If
End If

错误提示如下:


图片点击可在新窗口打开查看此主题相关图片如下:企业微信截图_15391363301767(1).png
图片点击可在新窗口打开查看

--  作者:y2287958
--  发布时间:2018/10/10 11:43:00
--  
自定义函数代码呢?
[此贴子已经被作者于2018/10/10 11:45:29编辑过]

--  作者:ajie5211
--  发布时间:2018/10/10 11:45:00
--  

订单填写代码如下:

Dim htdr As DataRow =Args(0)
Dim dr As DataRow = DataTables("订单计划一览表").Find("销售单号 = \'"& htdr("销售单号") &"\'")
If dr IsNot Nothing  Then
    \'加载更新项
    Dim sfxgpd As Boolean = False
    For Each dc As DataCol In DataTables("订单计划一览表").DataCols
        Dim key As String = "订单计划一览表:" & dr("销售单号") & ":" & dc.Name
        If tbrk.Contains(key) = False Then \'如果本人之前已经编辑此行,则正常编辑
            If dc.IsDate Then
                If htdr(dc.Name) = #1/1/1900# Then
                    dr(dc.Name) = Nothing
                End If
            Else If dc.Name = "操作记录" Then
                If htdr.IsNull(dc.Name) = False Then
                    If dr.IsNull(dc.Name) Then
                        dr(dc.Name) = htdr(dc.Name)
                    Else
                        If dr(dc.Name) <> htdr(dc.Name) Then
                            dr(dc.Name) = dr(dc.Name) & htdr(dc.Name)
                        End If
                    End If
                End If
            Else
                If dr(dc.Name) <> htdr(dc.Name) Then
                    dr(dc.Name) = htdr(dc.Name)
                End If
            End If
        Else
            sfxgpd = True
        End If
    Next
    If sfxgpd = False Then
        dr.Save()
    End If
Else
    Dim ndr As DataRow = DataTables("订单计划一览表").AddNew() \'没有时追加行
    For Each dc As DataCol In DataTables("订单计划一览表").DataCols
        ndr(dc.Name) = htdr(dc.Name)
        If dc.IsDate Then
            If ndr(dc.Name) = #1/1/1900# Then
                ndr(dc.Name) = Nothing
            End If
        End If
    Next
    ndr.Save()
End If


--  作者:ajie5211
--  发布时间:2018/10/10 11:47:00
--  
以下是引用y2287958在2018/10/10 11:43:00的发言:
自定义函数代码呢

而且这个错误并不是每次都出来,上线两天了,多人使用中,目前出现有两次。


--  作者:有点蓝
--  发布时间:2018/10/10 11:57:00
--  
首先,订单填写完整代码给出来

其次{SG2生管订单完工情况}和"订单计划一览表"2个表所有的列名都一样?

--  作者:ajie5211
--  发布时间:2018/10/10 12:04:00
--  
以下是引用有点蓝在2018/10/10 11:57:00的发言:
首先,订单填写完整代码给出来

其次{SG2生管订单完工情况}和"订单计划一览表"2个表所有的列名都一样?

订单填写完整代码见3楼。

列名是一样的

SEL E CT TOP 1000 [下单日期] ,[销售单号] ,[业务员] ,[品名规格] ,[P数] ,[数量] ,[总线数] ,[出货日期],[业务备注] ,[备注],[客户] ,[组别] ,[塑件材料状况],[计划生产日],[完成日期] ,[五金材料状况] ,[其它备注] ,[延迟信息] ,[是否完成] ,[合同评审单号],[原序号] ,[订单状态],[判断是否已回交期] ,[入库状态] ,[生管交期] ,[生管备注] ,[操作记录] ,[ID] ,[Identify]
  FROM [excel].[dbo].[SG2生管订单完工情况]

订单计划一览表

"下单日期""销售单号""业务员""品名规格""P数""数量""总线数""出货日期""业务备注""备注""客户""组别""塑件材料状况""计划生产日""完成日期""五金材料状况""其它备注""延迟信息""是否完成""合同评审单号""原序号""订单状态""判断是否已回交期""入库状态""生管交期""生管备注""操作记录""ID""Identify"


--  作者:有点蓝
--  发布时间:2018/10/10 12:18:00
--  
Functions.BeginSyncExecute("订单填写",htdr)

改为

Functions.Execute("订单填写",htdr)

函数里有操作表格的用法,不适合使用异步函数:http://www.foxtable.com/mobilehelp/scr/277.htm

--  作者:ajie5211
--  发布时间:2018/10/10 13:46:00
--  
以下是引用有点蓝在2018/10/10 12:18:00的发言:
Functions.BeginSyncExecute("订单填写",htdr)

改为

Functions.Execute("订单填写",htdr)

函数里有操作表格的用法,不适合使用异步函数:http://www.foxtable.com/mobilehelp/scr/277.htm

用Execute不是在子线程中操作当前表了,不是不可以在子线程中操作界面和访问主线程的表吗?这里的帮助有写http://www.foxtable.com/mobilehelp/index.htm?page=277.htm


--  作者:有点蓝
--  发布时间:2018/10/10 14:18:00
--  
不理解你的意思。

订单修改确认函数是异步调用的?

--  作者:有点甜
--  发布时间:2018/10/10 14:29:00
--  

1、偶尔一两次报错?并不是每次执行到函数都报错?这样的错误比较难排查;

 

2、是不是你【订单填写】函数操作了表格,触发了【表事件】导致的出错?