Foxtable(狐表)用户栏目专家坐堂 → 如何查找后台数据,找到后加载并对其进行更新修改?!


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

主题:如何查找后台数据,找到后加载并对其进行更新修改?!

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


加好友 发短信
等级:幼狐 帖子:71 积分:927 威望:0 精华:0 注册:2014/12/8 15:38:00
如何查找后台数据,找到后加载并对其进行更新修改?!  发帖心情 Post By: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(rq1Then  '确定表达式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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/31 18:17:00 [只看该作者]

如果你的年度列,是整数列,改成下面这样子那个

 

ls_find = "年度= " & rq_y & " and 网点名称 = '" & jgdm & "'"


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


加好友 发短信
等级:幼狐 帖子:71 积分:927 威望:0 精华:0 注册:2014/12/8 15:38:00
  发帖心情 Post By:2019/5/31 18:59:00 [只看该作者]

“年度”列是字符型数据啊!


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


加好友 发短信
等级:幼狐 帖子:71 积分:927 威望:0 精华:0 注册:2014/12/8 15:38:00
  发帖心情 Post By:2019/5/31 19:00:00 [只看该作者]

但“网点名称”列是表达式列,有没有关系?


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


加好友 发短信
等级:幼狐 帖子:71 积分:927 威望:0 精华:0 注册:2014/12/8 15:38:00
  发帖心情 Post By:2019/5/31 19:02:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:aa.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105958 积分:538865 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/5/31 20:14:00 [只看该作者]

Find可以使用表达式列,sqlfind不能使用表达式列。因为sqlfind是从数据库查数据的,而表达式是不存在数据库的

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


加好友 发短信
等级:幼狐 帖子:71 积分:927 威望:0 精华:0 注册:2014/12/8 15:38:00
  发帖心情 Post By:2019/5/31 20:43:00 [只看该作者]

正是如此,谢谢!又懂得了一个知识点!狐表,越用越喜欢。

 回到顶部