以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]后台数据库修改代码出错(已解决) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=105027) |
-- 作者:yyzlxc -- 发布时间:2017/8/10 12:26:00 -- [求助]后台数据库修改代码出错(已解决) 一段代码,在代码增加数据源SCZD的前提下,生成后台表dt1,并与“器材清单”表结构一致,同一器材编号,通过比对“操作信息_时间”,如果不一致,就把dt1的该行数据删除,并从“器材清单”表复制一条相同编号的数据到后台数据库。 执行代码后出现错误提示,而后台数据库的数据也没有发生变化,如何解决,请各位老师指教,谢谢!! 代码如下: 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编辑过]
|
-- 作者:有点甜 -- 发布时间:2017/8/10 13:02:00 -- 看不懂你要做什么,删除行这样写
If Connections.Contains("SCZD") = True Then |
-- 作者:yyzlxc -- 发布时间: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
|
-- 作者:有点甜 -- 发布时间: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 -- 发布时间:2017/8/11 10:52:00 -- 正是想问的,又学了一招,谢谢有点甜老师的指教。 |