-- 作者:qtxsp
-- 发布时间:2019/5/31 17:13:00
-- 如何查找后台数据,找到后加载并对其进行更新修改?!
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
|