1、外部数据库与数据源,启动系统后,当前表已打开,未导入数据(用[_Identify] is null )过滤。
2、问题描述(设计主要思路):(1)通过 find 查找判断有无数据,有就更新此数据(此步正常)。(2)如没有,则通过 SQLFind 对外部数据源后台数据进行查找,发现有数据,(3)则通过datatables("全省网点余额").Loadfilter(条件) 与.load 语句来载入数据,同时通过.find 来定位记录,对此记录进行更新数据。 (以下用黄底标注)
问题发现:
(1)没有导入外部已经存在与查找到的数据记录;以前好象可以正常执行,导入后台数据并实施更新(实际上后台是有此数据的)。最近发现,无法实现此功能了。
(2)一是后台数据没有找到或找到未载入当前数据表中,或无法定位;二是实施了新增记录的代码(见如下的桔黄色底的代码),百思不得其解,
敬请老师指导,代码错了哪了?谢谢。
以下附近代码:
For Each file As String In filesys .GetFiles("D:\百度云同步盘\丽水\数据\金融客管系统\网点余额") '获取该目录下的所有文件集
If file.EndsWith(".xls") OrElse file.EndsWith(".xlsx") Then
Dim Book As New XLS.Book(file)
Dim Sheet As XLS.Sheet = Book.Sheets("页面1_1") '打开工作表
Dim LB As String = left(right(sheet(4,0).Text,4),2) '是否是代理数据
If Lb <> "代理" Then
MessageBox.show("对不起,当前数据(" & lb & ")不是代理网点数据,无法执行,任意键退出!","警告!",messageboxbuttons.ok)
Return
End If
Dim rq As Date = sheet(4,4).Text
Dim rq1 As String = sheet(4,4).text
Dim rq_y As String = left(rq1.trim(" "),4)
Dim rq_m As String = Format(rq.month,"00")
If IsDate(rq1) Then '确定表达式expression能否转换成日期格式. len(rq1.trim(" ")) = 10 And
MessageBox.show("当前月份[" & rq_y & "年 " & rq_m & "月]!","警告!",messageboxbuttons.ok)
Else
MessageBox.show("当前日期[" & rq1 & "]格式错误,请按[YYYY-MM-DD]重输!","警告!",messageboxbuttons.ok)
Return
End If
For n As Integer = 8 To Sheet.Rows.Count -1
Dim jgdm As String = sheet(n,0).Text
jgdm=jgdm.trim(" ")
Dim je As Double = val(sheet(n,1).Text)
' If MessageBox.Show("je =" & je & "] 行,将对其进行更新!选【 Y 】中止!"," 提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
' Return
' End If
If ( je = 0 OrElse je = Nothing OrElse jgdm = " " ) Then '1
Continue For
Else
Dim dr As DataRow = DataTables("全省网点余额").Find("年度= '" & rq_y & "' and 网点名称 = '" & jgdm & "'","年度 DESC")
If dr Is Nothing Then
'If MessageBox.Show("到后台找 " & rq_y & " 网点名称=[" & jgdm & "]的行,将对其进行更新!选【 Y 】中止!"," 提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
' Return
'End If
Dim lsdm,ls_s,ls_x,ls_find As String
ls_find = "年度= '" & rq_y & "' and 网点名称 = '" & jgdm & "'"
dr = DataTables("全省网点余额").SQLFind(ls_find,"年度 DESC")
If dr IsNot Nothing Then '如果不存在同日期与机构代码的,将增加数据(自动过滤机构代码为空的行数)
DataTables("全省网点余额").LoadFilter = ls_find
DataTables("全省网点余额").Load
dr = DataTables("全省网点余额").Find(ls_find,"年度 DESC")
dr("ye" & rq_m & "") = je 'sheet(n,1).text '期末余额
Continue For
Else
Dim dr1 As DataRow = DataTables("全省网点余额").SQLFind(" 网点名称 = '" & jgdm & "'","网点名称")
If dr1 IsNot Nothing Then
lsdm = dr1("机构号")
ls_s = dr1("市")
ls_x = dr1("县")
Else '找不到在机构代码中查找,
Dim dr2 As DataRow = DataTables("机构代码").SQLFind(" 网点名称 = '" & jgdm & "'")
If dr2 IsNot Nothing Then
lsdm = dr2("老机构号")
ls_s = dr2("市")
ls_x = dr2("县")
ElseIf dr2 Is Nothing Then
If MessageBox.Show("第n=[" & (n+1) & "]行 单位 =" & jgdm & "; 金额= " & je & " 找不到此单位,请记录!选【 Y 】中止!"," 提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
Return
Else
Continue For
End If
End If
End If
dr = DataTables("全省网点余额").AddNew()
dr("年度") = rq_y
dr("机构号") = lsdm
dr("市") = ls_s
dr("县") = ls_x
dr("ye" & rq_m & "") = je 'sheet(n,1).text '期末余额
Continue For
End If
End If
If e.Form.Controls("checkbox1").Checked = True Then
dr("ye" & rq_m & "") = je 'sheet(n,1).text '期末余额
End If
application.Doevents
End If
Next
End If
Next
'End If
Tables("全省网点余额").ResumeRedraw()
DataTables("全省网点余额").save