以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  代码问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=64435)

--  作者:爱相随
--  发布时间:2015/2/13 15:04:00
--  代码问题

老师,下面的代码表示:在贷款汇总表的DataColChanged的代码,表的“汇总”列是逻辑列,当点击“汇总”列时,如果在收支汇总表找到相同的合同或协议号时,提示已存在相同的合同或协议号,否则,将本行内容复制到收支汇总表。贷款汇总表的“合同或协议号”对应收支汇总表的“记录编号”。执行后提示:

.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.11.11.1
错误所在事件:表,贷款信息总表, DataColChanged
详细错误信息:
Exception has been thrown by the target of an invocation.
Cannot find column [合同或协议号].

都反复检查了,列名没有错。

Dim dn As DataRow = DataTables("收支汇总表").Find("合同或协议号 = \'" & e.DataRow("合同或协议号") & "\'")
If dn IsNot Nothing Then ’如果找到相同的合同或协议号
    MessageBox.Show("收支汇总表已经存在相同合同或协议号的行!") 

  Else
   If e.DataCol.Name = "汇总" AndAlso e.DataRow("汇总") = True Then
    Dim nma() As String = { "贷款主体","贷款银行","合同或协议名称","合同或协议号","贷款项目名称","FKJE","贷款额度" } \'A表数据来源列
    Dim nmb() As String = { "主体单位","款项来源单位","款项来源名称或类别","记录编号","贷款项目名称","到位资金","贷款或申请额度" } \'B表数据接收列
    Dim dr As DataRow = DataTables("收支汇总表").AddNew
    For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
    Next
 End If
End If

 

我又把表B的记录编号改为合同或协议号了,不再提示错误了,但代码不起作用,收支汇总表没有任合的合同或协议号记录,汇总列的状态还是TRUE,不变化

[此贴子已经被作者于2015/2/13 15:09:25编辑过]

--  作者:有点甜
--  发布时间:2015/2/13 15:11:00
--  

 这个意思?

 

If e.DataCol.Name = "汇总" AndAlso e.DataRow("汇总") = True Then
    Dim dn As DataRow = DataTables("收支汇总表").Find("合同或协议号 = \'" & e.DataRow("合同或协议号") & "\'")
    If dn IsNot Nothing Then \'如果找到相同的合同或协议号
        MessageBox.Show("收支汇总表已经存在相同合同或协议号的行!")
       
    Else
        Dim nma() As String = { "贷款主体","贷款银行","合同或协议名称","合同或协议号","贷款项目名称","FKJE","贷款额度" } \'A表数据来源列
        Dim nmb() As String = { "主体单位","款项来源单位","款项来源名称或类别","记录编号","贷款项目名称","到位资金","贷款或申请额度" } \'B表数据接收列
        Dim dr As DataRow = DataTables("收支汇总表").AddNew
        For i As Integer = 0 To nma.Length - 1
            dr(nmb(i)) = e.DataRow(nma(i))
        Next
    End If
End If

 


--  作者:爱相随
--  发布时间:2015/2/13 15:12:00
--  

老师,你就帮我看这段代码,为何不对呢??要表达的意思是:在贷款汇总表的DataColChanged的代码,表的“汇总”列是逻辑列,当点击“汇总”列时,如果在收支汇总表找到相同的合同或协议号时,提示已存在相同的合同或协议号,否则,将本行内容复制到收支汇总表。

Dim dn As DataRow = DataTables("收支汇总表").Find("合同或协议号 = \'" & e.DataRow("合同或协议号") & "\'")
If dn IsNot Nothing Then ’如果找到相同的合同或协议号
    MessageBox.Show("收支汇总表已经存在相同合同或协议号的行!") 

  Else
   If e.DataCol.Name = "汇总" AndAlso e.DataRow("汇总") = True Then
    Dim nma() As String = { "贷款主体","贷款银行","合同或协议名称","合同或协议号","贷款项目名称","FKJE","贷款额度" } \'A表数据来源列
    Dim nmb() As String = { "主体单位","款项来源单位","款项来源名称或类别","合同或协议","贷款项目名称","到位资金","贷款或申请额度" } \'B表数据接收列
    Dim dr As DataRow = DataTables("收支汇总表").AddNew
    For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
    Next
 End If
End If

[此贴子已经被作者于2015/2/13 15:12:05编辑过]

--  作者:有点甜
--  发布时间:2015/2/13 15:13:00
--  
 看2楼,列名写正确来。
--  作者:爱相随
--  发布时间:2015/2/13 15:15:00
--  
还是不得行
--  作者:有点甜
--  发布时间:2015/2/13 15:17:00
--  
 提示什么?不行就上传例子。
--  作者:爱相随
--  发布时间:2015/2/13 15:19:00
--  
什么都没有提示
--  作者:有点甜
--  发布时间:2015/2/13 15:20:00
--  
以下是引用爱相随在2015/2/13 15:19:00的发言:
什么都没有提示

 

呃,那你重置汇总列。


--  作者:爱相随
--  发布时间:2015/2/13 15:27:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

 

现在是收支汇总表为空,按道理在贷款汇总表重置列——合同或协议编号,汇总列应全部变为FALSE才对,现在是重置列——合同或协议号列,没有反应。


--  作者:爱相随
--  发布时间:2015/2/13 15:31:00
--  
通过高速导入,少了好几列,是怎么回事呢?/
[此贴子已经被作者于2015/2/13 15:31:38编辑过]