Foxtable(狐表)用户栏目专家坐堂 → [求助]后台数据库修改代码出错(已解决)


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

主题:[求助]后台数据库修改代码出错(已解决)

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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]后台数据库修改代码出错(已解决)  发帖心情 Post By:2017/8/10 12:26:00 [只看该作者]

一段代码,在代码增加数据源SCZD的前提下,生成后台表dt1,并与“器材清单”表结构一致,同一器材编号,通过比对“操作信息_时间”,如果不一致,就把dt1的该行数据删除,并从“器材清单”表复制一条相同编号的数据到后台数据库。

执行代码后出现错误提示,而后台数据库的数据也没有发生变化,如何解决,请各位老师指教,谢谢!!



图片点击可在新窗口打开查看此主题相关图片如下:捕获1.png
图片点击可在新窗口打开查看


代码如下:

If Connections.Contains("SCZD") = True Then
    Dim cmd1 As New SQLCommand
    cmd1.Conne  ction  Name = "SCZD"
    cmd1.CommandText = "Select * Fro m {器材清单}"
    Dim dt1 As DataTable = cmd1.ExecuteReader()
    For Each dr As DataRow In DataTables("器材清单").DataRows
        If dr.IsNull("器材编号") = False Then
            Dim pr As DataRow = dt1.Find("器材编号 = '" & dr("器材编号") & "'")
            If pr IsNot Nothing And dr("操作信息_时间") <> pr("操作信息_时间") Then
                '替换行
                DataTables("器材清单").LoadFilter = ""
                DataTables("器材清单").Load
                '删除编号(PC端)
                Dim cmd7 As New SQLCommand
                cmd7.Conne  ction  Name = "SCZD"
                cmd7.CommandText = "DELETE FRO M {器材清单} WHERE 器材编号 = '" & dr("器材编号") & "'"
                cmd7.ExecuteNonQuery()
                '导出编号到PC端
                Dim cmd8 As new SQLCmmand
                cmd8.Conne  ction  Name = "SCZD"
                cmd8.CommandText = "SELECT * FRO M {器材清单} WHERE 器材编号 = '" & dr("器材编号") & "'"
                Dim dt8 As DataTable = cmd8.ExecuteReader(True)
                Dim f8 As New Filler
                f8.SourceTable = DataTables("器材清单") '手持机
                f8.DataTable = dt8 'PC端
                f8.Filter = "器材编号 = '" & dr("器材编号") & "'"
                f8.Fill() '填充数据
                dt8.Save()
            End If
        End If
    Next
End If
[此贴子已经被作者于2017/8/10 15:42:01编辑过]

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


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

看不懂你要做什么,删除行这样写

 

If Connections.Contains("SCZD") = True Then
    Dim cmd1 As New SQLCommand
    cmd1.ConnectionName = "SCZD"
    cmd1.CommandText = "Select * Fro m {器材清单}"
    Dim dt1 As DataTable = cmd1.ExecuteReader(True)
    For Each dr As DataRow In DataTables("器材清单").DataRows
        If dr.IsNull("器材编号") = False Then
            Dim pr As DataRow = dt1.Find("器材编号 = '" & dr("器材编号") & "'")
            If pr IsNot Nothing And dr("操作信息_时间") <> pr("操作信息_时间") Then
                pr.delete
            End If
        End If
    Next
    dt1.save
End If


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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2017/8/10 15:41:00 [只看该作者]

谢谢有点甜老师的指教,问题解决,代码修改如下,达到预期效果。再次感谢甜老师的指教!!

If Connections.Contains("SCZD") = True Then
    Dim cmd1 As New SQLCommand
    cmd1.ConnectionName = "SCZD"
    cmd1.CommandText = "Select * Fro m {器材清单}"
    Dim dt1 As DataTable = cmd1.ExecuteReader(True)
    For Each dr As DataRow In DataTables("器材清单").DataRows
        If dr.IsNull("器材编号") = False Then
            Dim pr As DataRow = dt1.Find("器材编号 = '" & dr("器材编号") & "'")
            If pr IsNot Nothing And dr("操作信息_时间") <> pr("操作信息_时间") Then
                '替换行
                '删除PC端编号行
                pr.delete
                dt1.save
                '导出编号行到PC端
                Dim cmd8 As new SQLCommand
                cmd8.ConnectionName = "SCZD"
                cmd8.CommandText = "SELECT * FRO M {器材清单} WHERE 器材编号 = '" & dr("器材编号") & "'"
                Dim dt8 As DataTable = cmd8.ExecuteReader(True)
                Dim f8 As New Filler
                f8.SourceTable = DataTables("器材清单") '手持机
                f8.DataTable = dt8 'PC端
                f8.Filter = "器材编号 = '" & dr("器材编号") & "'"
                f8.Fill() '填充数据
                dt8.Save()
            End If
        End If
    Next
End If

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


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

新增行也不需要这样。你直接新增,如

 

Dim ndr As DataRow = dt1.AddNew

For Each dc As DataCol in dt1.DataCols

    ndr(dc.name) = dr(dc.name)

Next

dt1.Save


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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2017/8/11 10:52:00 [只看该作者]

正是想问的,又学了一招,谢谢有点甜老师的指教。

 回到顶部