以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  无法在 System.DateTime 和 System.String 上执行“=”操作。”  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=170297)

--  作者:qibing19780
--  发布时间:2021/7/20 23:54:00
--  无法在 System.DateTime 和 System.String 上执行“=”操作。”
如题。
各位老师,我制作的项目使用了“非关联表数据同步”,在表格A里输入数据可以正常同步,但是使用窗口录入日期的时候机会报错
“.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2021.5.29.1
错误所在事件:表,基础数据表,DataColChanged
详细错误信息:
调用的目标发生了异常。
无法在 System.DateTime 和 System.String 上执行“=”操作。”
不知是哪里的问题!

A表“DataColChanged”代码:
Select Case e.DataCol.name
    Case "日期"
        Dim dr As DataRow = DataTables("mryxsj").Find(" 日期 = \'" & e.OldValue & "\'")
        If dr Is Nothing Then
            dr = DataTables("mryxsj").AddNew()
            dr("日期") = e.DataRow("日期")
            dr("大兴机场_实际出港架次") = e.DataRow("大兴机场_实际出港架次")
            dr("大兴机场_实际进港架次") = e.DataRow("大兴机场_实际进港架次")
            dr("大兴机场_小时高峰架次") = e.DataRow("大兴机场_小时高峰架次")
            dr("大兴机场_高峰时段") = e.DataRow("大兴机场_高峰时段")
            dr("当日执行RECAT的数量") = e.DataRow("当日执行RECAT的数量")
            dr("当日航班开始时间") = e.DataRow("当日航班开始时间")
            dr("当日航班结束时间") = e.DataRow("当日航班结束时间")
            dr("受天气影响11L无法出港") = e.DataRow("受天气影响11L无法出港")
            dr("不正常情况") = e.DataRow("不正常情况")
        Else
            dr("日期") = e.DataRow("日期")
        End If
      Case "日期","大兴机场_实际出港架次","大兴机场_实际进港架次","大兴机场_小时高峰架次","大兴机场_高峰时段","当日航班结束时间","当日航班开始时间","当日执行RECAT的数量","受天气影响11L无法出港","不正常情况"
        Dim dr As DataRow = DataTables("mryxsj").Find("日期 = \'" & e.DataRow("日期") & "\'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
    End Select

请大神帮助!!!!!!

--  作者:有点蓝
--  发布时间:2021/7/21 8:39:00
--  
上面是【错误所在事件:表,基础数据表,DataColChanged】的全部代码吗?
--  作者:qibing19780
--  发布时间:2021/7/21 15:00:00
--  
是的


--  作者:有点蓝
--  发布时间:2021/7/21 15:02:00
--  
看不出什么,调试一下:http://www.foxtable.com/webhelp/scr/1485.htm,看哪一句代码出错
--  作者:qibing19780
--  发布时间:2021/7/21 15:06:00
--  
调试语句应该怎么编,我昨天试了一下,没有显示是哪错误?
--  作者:有点蓝
--  发布时间:2021/7/21 15:15:00
--  
关闭退出项目,删除项目所在的文件夹里的bin目录,然后重启项目试试。

调试就是每一句代码后加上提示框,看哪一个提示框出不来
    Case "日期"
        Dim dr As DataRow = DataTables("mryxsj").Find(" 日期 = \'" & e.OldValue & "\'")
msgbox(1)
        If dr Is Nothing Then
msgbox(2)
            dr = DataTables("mryxsj").AddNew()
msgbox(3)
            dr("日期") = e.DataRow("日期")
msgbox(4)
……

--  作者:qibing19780
--  发布时间:2021/7/21 15:58:00
--  
现在调试的结果应该是“ Dim dr As DataRow = DataTables("mryxsj").Find(" 日期 = \'" & e.OldValue & "\'")”这句的问题,A表的“日期”和mryxsj的“日期”都是日期类型,窗口的是“DateTimePicker”,在表里直接输入没有问题,但是在窗口里输入就有问题了。
窗口事件设置了打开窗口增加一空白行,然后输入。

--  作者:有点蓝
--  发布时间:2021/7/21 16:08:00
--  
判断一下

if e.OldValue  <> nothing then
 Dim dr As DataRow = DataTables("mryxsj").Find(" 日期 = \'" & e.OldValue & "\'")
……

--  作者:qibing19780
--  发布时间:2021/7/21 16:27:00
--  
这样判断了,不报错了。但是不能同步了


--  作者:qibing19780
--  发布时间:2021/7/21 16:28:00
--  
If e.OldValue  <> Nothing Then
        Dim dr As DataRow = DataTables("mryxsj").Find(" 日期 = \'" & e.OldValue & "\'")

        If dr Is Nothing Then

            dr = DataTables("mryxsj").AddNew()

            dr("日期") = e.DataRow("日期")