Foxtable(狐表)用户栏目专家坐堂 → 找不到“”的datatable


  共有1696人关注过本帖树形打印复制链接

主题:找不到“”的datatable

帅哥哟,离线,有人找我吗?
newsun2k
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1491 积分:11108 威望:0 精华:0 注册:2014/8/13 16:19:00
找不到“”的datatable  发帖心情 Post By:2024/2/1 10:05:00 [只看该作者]

我写了一个函数,想把修改前的整列记录下来。
是在全局的beforesaverow的事件中调用的。
偶尔报错了,说找不到名称为“”的datatable
也就是dr的datatable不存在?
到底是哪行记录出错了,现在也搞不清,没有datatable,就不能读明细。
已经发布了,发现这个问题,大神救命。

Dim dr As DataRow = Args(0)
Dim strAllFields As String = ""
For Each dc As DataCol In dr.DataTable.DataCols
    If strAllFields <> "" Then strAllFields = strAllFields & "|"
    strAllFields = strAllFields & dc.Name & "(" & dr.OriginalValue(dc.Name).ToString & ")"
Next

Return strAllFields

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110450 积分:562116 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/2/1 10:08:00 [只看该作者]

把e参数传入函数

Dim e = Args(0)
Dim strAllFields As String = ""
For Each dc As DataCol In e.DataTable.DataCols
    If strAllFields <> "" Then strAllFields = strAllFields & "|"
    strAllFields = strAllFields & dc.Name & "(" & e.datarow.OriginalValue(dc.Name).ToString & ")"
Next

Return strAllFields

 回到顶部
帅哥哟,离线,有人找我吗?
newsun2k
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1491 积分:11108 威望:0 精华:0 注册:2014/8/13 16:19:00
  发帖心情 Post By:2024/2/1 10:55:00 [只看该作者]

搞不懂原理,因为我还有其他地方调用这个,我干脆做了两个函数,一个传e,一个传datarow
传datarow的,改成这样,还是有问题。
是不是要把dr.OriginalValue这个也传进来?

Dim dr As DataRow = Args(0)
Dim strTableName As String = Args(1)
Dim strAllFields As String = ""
If dr.RowState = DataRowState.Added Then Return strAllFields
MessageBox.Show(strTableName)
For Each dc As DataCol In DataTables(strTableName).DataCols
    If strAllFields <> "" Then strAllFields = strAllFields & "|"
    strAllFields = strAllFields & dc.Name & "(" & dr.OriginalValue(dc.Name).ToString & ")"
Next

Return strAllFields

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110450 积分:562116 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/2/1 10:57:00 [只看该作者]

在什么地方调用函数有问题?把这个地方的完整代码发上来

 回到顶部
帅哥哟,离线,有人找我吗?
newsun2k
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1491 积分:11108 威望:0 精华:0 注册:2014/8/13 16:19:00
  发帖心情 Post By:2024/2/1 11:05:00 [只看该作者]

调用函数的地方:
'记录修改痕迹
Functions.Execute("save保存更新记录", drZLNF, "rd专利年费")

函数save保存更新记录
Dim dr As DataRow = Args(0)
Dim strTableName As String = Args(1)
Dim strUser As String = Vars("gsYongHuM")
Dim strBeforeFields As String
Dim strAfterFields As String
strBeforeFields = Functions.Execute("merge合并记录更新前所有列", dr, strTableName)   '这里报错了
'strAfterFields = Functions.Execute("merge合并记录更新后所有列", dr, strTableName)
’Functions.Execute("insert新增更新记录", strTableName, strUser, strBeforeFields, strAfterFields)

函数merge合并记录更新前所有列
Dim dr As DataRow = Args(0)
Dim strTableName As String = Args(1)
Dim strAllFields As String = ""
If dr.RowState = DataRowState.Added Then Return strAllFields
MessageBox.Show(strTableName)
For Each dc As DataCol In DataTables(strTableName).DataCols
    If strAllFields <> "" Then strAllFields = strAllFields & "|"
    strAllFields = strAllFields & dc.Name & "(" & dr.OriginalValue(dc.Name).ToString & ")"
Next

Return strAllFields


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110450 积分:562116 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/2/1 11:19:00 [只看该作者]

Functions.Execute("save保存更新记录", drZLNF, "rd专利年费")在什么事件调用的?把这个事件完整代码发上来

 回到顶部
帅哥哟,离线,有人找我吗?
newsun2k
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1491 积分:11108 威望:0 精华:0 注册:2014/8/13 16:19:00
  发帖心情 Post By:2024/2/1 11:22:00 [只看该作者]

感觉接近真相了。
如果通过检索得到的dr
dr=datatables("t1").sqlfind("第一列='1'")
通过函数调用,传入dr,获取OriginalValue,就会报datatable名称为空?

 回到顶部
帅哥哟,离线,有人找我吗?
newsun2k
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1491 积分:11108 威望:0 精华:0 注册:2014/8/13 16:19:00
  发帖心情 Post By:2024/2/1 11:27:00 [只看该作者]

Functions.Execute("save保存更新记录", drZLNF, "rd专利年费")在什么事件调用的?把这个事件完整代码发上来
这个也是在一个函数里面调的。有删减的完整代码如下

Dim dr As DataRow = args(0)
If dr.RowState = DataRowState.Modified Then
    If dr.OriginalValue("联系人") <> dr("联系人") Or dr.OriginalValue("联系人电话") <> dr("联系人电话") Or dr.OriginalValue("联系人邮箱") <> dr("联系人邮箱")  Then
        Functions.Execute("update联系人同步","rd授权通知书",dr("案卷编码"),dr("联系人"),dr("联系人电话"),dr("联系人邮箱"))
    End If
    Return True   '修改的场合,不对应修改专利清单
End If
If dr.IsNull("申请号") Then
    showMsg("申请号为空!",2)
    Return False
End If
Dim drZLQD As DataRow = DataTables("rd专利清单").sqlfind("申请号 = '" & dr("申请号") & "'")
If drZLQD Is Nothing Then
    showMsg("专利清单中未找到申请号[" & dr("申请号") & "]的数据!",2)
    Return False
End If
'

'增加专利年费
Dim drZLNF As DataRow = DataTables("rd专利年费").SqlFind("申请号 = '" & dr("申请号") & "'")
If drZLNF IsNot Nothing Then
    showMsg("专利年费中申请号[" & dr("申请号") & "]的数据已经存在!",3)
    drZLQD.Reject
    drSQF.Reject
    SystemReady = True
    Return False
End If
drZLNF  = DataTables("rd专利年费").Find("申请号 = '" & dr("申请号") & "'")
If drZLNF IsNot Nothing Then
    showMsg("专利年费中申请号[" & dr("申请号") & "]的数据已经存在!",3)
    drZLQD.Reject
    drSQF.Reject
    SystemReady = True
    Return False
End If

drZLNF  = DataTables("rd专利年费").AddNew
drZLNF("编码") = drSQF("编码")
drZLNF("申请号") =  dr("申请号")
drZLNF("授权发文日") = dr("发文日")
drZLNF("申请日") = drZLQD("申请日")
drZLNF("专利年度") = dr("授权年度")
drZLNF("缴费期限") = drSQF("缴费期限")
drZLNF("费减比例") = dr("费减比例")
drZLNF("缴费次数") = 1
drZLNF("当年年费") = dr("当年年费")
drZLNF("代理费") = Functions.Execute("get服务费标准_n",drZLQD("客户编码"),"年费服务费")
drZLNF("官费请款状态") =  "QKZT02"
drZLNF("官费到款状态") = "DKZT02"
If drZLNF.IsNull("官费请款方式") Then drZLNF("官费请款方式") = "QKFS02"
drZLNF("代理费请款方式") = drZLNF("官费请款方式")
drZLNF("缴费状态") = "JFZT03"
drZLNF("代理费请款状态") = "QKZT02"
drZLNF("代理费到款状态") = "DKZT02"
drZLNF("垫交状态") = "DFZT01"
drZLNF("授权年度") = dr("授权年度")
drZLNF("收据抬头") = drZLQD("客户名称")
drZLNF("代理人编码") = drZLQD("代理人编码")
drZLNF("代理人姓名") = drZLQD("代理人姓名")
drZLNF("申请人区域") = drZLQD("申请人区域")
drZLNF("所属分公司") = drZLQD("所属分公司")
drZLNF("发明人") = drZLQD("发明人")
drZLNF("发明名称") = drZLQD("发明名称")
drZLNF("客户编码") = drZLQD("客户编码")
drZLNF("客户名称") = drZLQD("客户名称")
drZLNF("专利类型") = drZLQD("专利类型")
drZLNF("申请人") = drZLQD("申请人")
drZLNF("发明名称") = drZLQD("发明名称")
drZLNF("法律状态") = "FLZT05"
drZLNF("监管状态") = "JGZT01"
drZLNF("合同编码") = drZLQD("合同编码")
drZLNF("合同类型") = drZLQD("合同类型")
drZLNF("案卷编码") = drZLQD("案卷编码")
drZLNF("授权及年费请款") = drZLQD("授权及年费请款")
drZLNF("业务员编码") = drZLQD("业务员编码")
drZLNF("业务员姓名") = drZLQD("业务员姓名")
drZLNF("开piao状态") = "KPZT04"
drZLNF("沟通记录") = Vars("cntModelGTJL")
drZLNF("录入人") = Vars("gsYuanGongBH")
drZLNF("录入日") = Date.Today
drZLNF("监管费备注") = Functions.Execute("get监管费备注_s",drZLNF("客户编码"))
'保存
drZLNF.save
drZLQD.save
drSQF.save
Functions.Execute("add收文日志",dr("发文序列号"),dr("申请号"),drZLQD("发明名称"),dr("发文日"),"FWMC004",Date.Today,drZLQD("代理人姓名"),Vars("gsYuanGongBH"),drZLQD("所属分公司"),drZLQD("申请人"))
SystemReady = True
'记录修改痕迹
Functions.Execute("save保存更新记录", drZLNF, "rd专利年费")
Functions.Execute("save保存更新记录", drZLQD, "rd专利清单")
Functions.Execute("save保存更新记录", drSQF, "rd授权费")
Return True

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110450 积分:562116 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/2/1 11:33:00 [只看该作者]

sqlfind查找出来的是独立的行,是没有datatable的

 回到顶部
帅哥哟,离线,有人找我吗?
newsun2k
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1491 积分:11108 威望:0 精华:0 注册:2014/8/13 16:19:00
  发帖心情 Post By:2024/2/1 13:26:00 [只看该作者]

我感觉不是这个问题,我在命令窗口执行一下代码

Dim dr As DataRow
Dim strAllFields, strTableName As String
strTableName = "rd专利清单"
dr = DataTables("rd专利清单").SQLFind("申请号 = '20232100'")
MessageBox.Show(dr.OriginalIsNull("申请日"))                             ’false
MessageBox.Show(dr.OriginalValue("申请日").ToString)                 '报错
在读这个日期值的时候报错了,但是肯定是有值的。而且还有其他的日期值没有出错。
有点疯了。

 回到顶部
总数 11 1 2 下一页