以文本方式查看主题

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

--  作者:清谷
--  发布时间:2016/10/12 8:45:00
--  [求助]无法在 System.DateTime 和 System.String 上执行“=”操作

综合分布表

单位名称(监管对象情况_单位名称) ----> 字符型(30)

县(监管对象情况_单位地址_县) ----> 字符型(3)

乡镇(监管对象情况_单位地址_乡镇) ----> 字符型(4)

街道村(监管对象情况_单位地址_街道村) ----> 字符型(4)

门牌号(监管对象情况_单位地址_门牌号) ----> 字符型(30)

许可证号(监管对象情况_许可证号) ----> 字符型(30)

有效期限(监管对象情况_有效期限) ----> 日期型

法人姓名(监管对象情况_经营者情况_法人姓名) ----> 字符型(3)

联系电话(监管对象情况_经营者情况_联系电话) ----> 字符型(11)

从业人数(监管对象情况_经营者情况_从业人数) ----> 微整数

健康证数(监管对象情况_经营者情况_健康证数) ----> 微整数

主体类别(监管对象情况_主体业态_主体类别) ----> 字符型(4)

经营形式(监管对象情况_主体业态_经营形式) ----> 字符型(12)

普通项目(监管对象情况_经营项目_普通项目) ----> 字符型(10)

项目说明(监管对象情况_经营项目_项目说明) ----> 字符型(30)

评估时间(其他说明_量化分级情况_评估时间) ----> 日期型

等级(其他说明_量化分级情况_等级) ----> 字符型(1)

分数(其他说明_量化分级情况_分数) ----> 单精度小数

备注() ----> 字符型(1073741823)

计划名称1(监督检查情况_第一次检查情况_计划名称) ----> 字符型(30)

检查日期1(监督检查情况_第一次检查情况_检查日期) ----> 日期型

检查人员1(监督检查情况_第一次检查情况_检查人员) ----> 字符型(7)

检查结果1(监督检查情况_第一次检查情况_检查结果) ----> 字符型(3)

检查记录1(监督检查情况_第一次检查情况_检查记录) ----> 字符型(60)

整改期限1(监督检查情况_第一次检查情况_整改期限) ----> 日期型

复查结果1(监督检查情况_第一次检查情况_复查结果) ----> 字符型(3)

计划名称2(监督检查情况_第二次检查情况_计划名称) ----> 字符型(30)

检查日期2(监督检查情况_第二次检查情况_检查日期) ----> 日期型

检查人员2(监督检查情况_第二次检查情况_检查人员) ----> 字符型(7)

检查结果2(监督检查情况_第二次检查情况_检查结果) ----> 字符型(3)

检查记录2(监督检查情况_第二次检查情况_检查记录) ----> 字符型(60)

整改期限2(监督检查情况_第二次检查情况_整改期限) ----> 日期型

复查结果2(监督检查情况_第二次检查情况_复查结果) ----> 字符型(3) 


监督检查表

 

单位名称(监管对象情况_单位名称) ----> 字符型(30)

县(监管对象情况_单位地址_县) ----> 字符型(3)

乡镇(监管对象情况_单位地址_乡镇) ----> 字符型(4)

街道村(监管对象情况_单位地址_街道村) ----> 字符型(4)

门牌号(监管对象情况_单位地址_门牌号) ----> 字符型(30)

计划名称(检查情况_计划名称) ----> 字符型(30)

检查日期(检查情况_检查日期) ----> 日期型

检查人员(检查情况_检查人员) ----> 字符型(7)

检查结果(检查情况_检查结果) ----> 字符型(3)

检查记录(检查情况_检查记录) ----> 字符型(60)

整改期限(检查情况_整改期限) ----> 日期型

复查结果(检查情况_复查结果) ----> 字符型(3) 


已知上述两表的结构,欲实现的目的如下:
在“综合分布表”第一次检查情况中增加内容,监督检查表也对应增加此内容;
在综合分布表中更改第一次检查情况中的检查日期、检查结果或复查结果后,监督检查表也能同步修改。
同样地,在第二次检查情况中增加内容,监督检查表也对应增加此内容。

在综合分布表的DataColChanged事件代码设置如下:
 Select Case e.DataCol.name
    Case "检查日期1"
        Dim dr As DataRow = DataTables("监督检查表").Find("检查日期 = \'" & e.OldValue & "\'")
        If dr Is Nothing Then 
            dr = DataTables("监督检查表").AddNew()
            dr("单位名称") = e.DataRow("单位名称")
            dr("县") = e.DataRow("县")
            dr("乡镇") = e.DataRow("乡镇")
            dr("街道村") = e.DataRow("街道村")
            dr("门牌号") = e.DataRow("门牌号")
            dr("计划名称") = e.DataRow("计划名称1")
            dr("检查日期") = e.DataRow("检查日期1")
            dr("检查人员") = e.DataRow("检查人员1")
            dr("检查结果") = e.DataRow("检查结果1")
            dr("检查记录") = e.DataRow("检查记录1")
            dr("整改期限") = e.DataRow("整改期限1")
            dr("复查结果") = e.DataRow("复查结果1")
        Else
            dr("检查日期") = e.DataRow("检查日期1")
        End If
    Case "检查结果","复查结果"
        Dim dr As DataRow = DataTables("监督检查表").Find("检查日期 = \'" & e.DataRow("检查日期1") & "\'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select

测试后显示运行错误:
调用的目标发生了异常。
无法在 System.DateTime 和 System.String 上执行“=”操作。

日期时间型数据与字符型数据代码不一样,但未能找出答案。特向大神求教。

附注:如果该目的无法实现,将之反之亦可。
如在监督检查表中输入相应数据,在综合分布表也能对应增加相应内容。


--  作者:有点蓝
--  发布时间:2016/10/12 9:03:00
--  
Select Case e.DataCol.name
    Case "检查日期1"
        If e.OldValue <> Nothing Then
            Dim dr As DataRow = DataTables("监督检查表").Find("检查日期 = \'" & e.OldValue & "\'")
            If dr Is Nothing Then
                dr = DataTables("监督检查表").AddNew()
                dr("单位名称") = e.DataRow("单位名称")
                dr("县") = e.DataRow("县")
                dr("乡镇") = e.DataRow("乡镇")
                dr("街道村") = e.DataRow("街道村")
                dr("门牌号") = e.DataRow("门牌号")
                dr("计划名称") = e.DataRow("计划名称1")
                dr("检查日期") = e.DataRow("检查日期1")
                dr("检查人员") = e.DataRow("检查人员1")
                dr("检查结果") = e.DataRow("检查结果1")
                dr("检查记录") = e.DataRow("检查记录1")
                dr("整改期限") = e.DataRow("整改期限1")
                dr("复查结果") = e.DataRow("复查结果1")
            Else
                dr("检查日期") = e.DataRow("检查日期1")
            End If
        End If
    Case "检查结果","复查结果"
        If e.DataRow.Isnull("检查日期1") = False Then
            Dim dr As DataRow = DataTables("监督检查表").Find("检查日期 = \'" & e.DataRow("检查日期1") & "\'")
            If dr IsNot Nothing Then
                dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
            End If
        End If
End Select

另外这2个表应该是根据“单位名称”进行关联的吧,也许这样更合理

Dim dr As DataRow = DataTables("监督检查表").Find("检查日期 = \'" & e.OldValue & "\' and 单位名称=\'" & e.DataRow("单位名称") & "\'")



--  作者:清谷
--  发布时间:2016/10/12 11:11:00
--  [求助]回复:(有点蓝)Select Case e.DataCol.name  &...
谢谢版主的指导~
采用上述代码后,运行时不再弹出错误窗口。
但是无法同步日期数据,截图如下:
输入的内容如下:

图片点击可在新窗口打开查看此主题相关图片如下:01.png
图片点击可在新窗口打开查看
同步的内容如下:

图片点击可在新窗口打开查看此主题相关图片如下:02.png
图片点击可在新窗口打开查看
不知如何解决……

--  作者:有点蓝
--  发布时间:2016/10/12 11:27:00
--  
Select Case e.DataCol.name
    Case "检查日期1"
        Dim dr As DataRow 
        If e.OldValue <> Nothing Then
            dr = DataTables("监督检查表").Find("检查日期 = \'" & e.OldValue & "\' and 单位名称=\'" & e.DataRow("单位名称") & "\'")
        Else
            dr = DataTables("监督检查表").Find("单位名称=\'" & e.DataRow("单位名称") & "\' and 检查日期 is null")
        End If
        If dr Is Nothing Then
            dr = DataTables("监督检查表").AddNew()
            dr("单位名称") = e.DataRow("单位名称")
            dr("县") = e.DataRow("县")
            dr("乡镇") = e.DataRow("乡镇")
            dr("街道村") = e.DataRow("街道村")
            dr("门牌号") = e.DataRow("门牌号")
            dr("计划名称") = e.DataRow("计划名称1")
            dr("检查日期") = e.DataRow("检查日期1")
            dr("检查人员") = e.DataRow("检查人员1")
            dr("检查结果") = e.DataRow("检查结果1")
            dr("检查记录") = e.DataRow("检查记录1")
            dr("整改期限") = e.DataRow("整改期限1")
            dr("复查结果") = e.DataRow("复查结果1")
        Else
            dr("检查日期") = e.DataRow("检查日期1")
        End If
    Case "检查结果","复查结果"
        If e.DataRow.Isnull("检查日期1") = False Then
            Dim dr As DataRow = DataTables("监督检查表").Find("检查日期 = \'" & e.DataRow("检查日期1") & "\' and 单位名称=\'" & e.DataRow("单位名称") & "\'")
            If dr IsNot Nothing Then
                dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
            End If
        Else
            msgbox("请先输入检查日期1")
        End If
End Select