以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  基于多表生成的数据修改  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=169854)

--  作者:刘林
--  发布时间:2021/7/3 17:01:00
--  基于多表生成的数据修改
Dim  tb1 As Table = Tables("免统审核_table1")
Dim cmd As new SQLCommand
cmd.ConnectionName = 
cmd.CommandText ="Se/ect {成绩}.[_identify],{成绩}.单位名称,{成绩}.学校班级,{成绩}.考号,{成绩}.姓名,{成绩}.身份证件号,{成绩}.语文_语总,{成绩}.数学_数总,{成绩}.英语_英总,{成绩}.政治_政总,{成绩}.历史_历总,{成绩}.物理_物总,{成绩}.化学_化总,{成绩}.免统说明,{免统审核},{学生信息}.[_identify],{学生信息}.健康状况 from{成绩} left join {学生信息} on {成绩}.身份证件号= {学生信息}.身份证件号 where {成绩}.考试名称=\'21春期末\' And {成绩}.免统说明 is not null"
Dim dt As DataTable = cmd.ExecuteReader()
tb1.DataSource =dt
tb1.AutoSizeCols
tb1.AllowEdit=True


老师,我想对上面生成的表,进行数据修改后保存,用cmd.ExecuteReader(true),报错,请问如何对如上生成的表进行修改后能保存

--  作者:有点蓝
--  发布时间:2021/7/3 17:16:00
--  
没有办法直接修改,只能遍历所有行逐行使用sql处理
Dim cmd As new SQLCommand
cmd
.ConnectionName = "数据源名称"
for each r as row in tables("xxx").rows
if r.datarow.rowstate = DataRowState.Added then
cmd.CommandText = "Insert Into 订单 (客户日期订单编号) Values(?,?,?)"
cmd.Parameters.clear
cmd
.Parameters.Add("@客户",r("客户"))
cmd
.Parameters.Add("@日期",r("日期"))
cmd
.Parameters.Add("@订单编号",r(订单编号"))
cmd
.ExecuteNonQuery
elseif r.datarow.rowstate = DataRowState.Modified then
cmd.CommandText = "UPDATE 订单 SET 客户 = ?,日期=? WHERE [_idntify] = ?"
cmd.Parameters.clear
cmd.Parameters.Add("@客户",r("客户"))
cmd
.Parameters.Add("@日期",r("日期"))
cmd.Parameters.Add("@idntify",r("_idntify"))
cmd
.ExecuteNonQuery
else.....
next