以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  一运行就出错  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=154486)

--  作者:zaq3574020
--  发布时间:2020/9/16 10:41:00
--  一运行就出错

Dim ck As DataTable
Dim cmd As New SqlCommand()
cmd.C
Try
    cmd.BeginTransaction()
    cmd.CommandText = "S elect * From Dlyndx"
    ck = cmd.ExecuteReader(True) \'加上参数True,生成的DataTable可修改保存
    Dim dr As DataRow = ck.AddNew() \'增加一个订单
    dr("DATE") = "2020-09-15"
    dr("btypeid") = "0002500044"
    dr("btypeid") = "00010"
    dr("ktypeid") = "00006"
    dr("SUMMARY") = "9.12燕瑞出武义2件(金额:638*0.44=280.72元.直调出库单:DO-2201-200912-0935)"
    dr("TOTAL") = "280.72"
    ck.Save()
    If ck.HasChanges Then \'如果任何一个表保存失败
        cmd.Rollback()  \'则回滚事务
    Else
        cmd.Commit()  \'否则提交事务
    End If
Catch ex As Exception  \'如果出错
    cmd.Rollback()  \'则回滚事务
    MessageBox.Show(ex.Message, "错误",MessageBoxButtons.OK,MessageBoxIcon.Error)
End Try

 

 

 

运行出错


--  作者:有点蓝
--  发布时间:2020/9/16 10:42:00
--  
提示什么错误?
--  作者:zaq3574020
--  发布时间:2020/9/16 10:52:00
--  
以下是引用有点蓝在2020/9/16 10:42:00的发言:
提示什么错误?
对于不返回任何键列信息的SelectCommand,不支持UpdateCommand的动态SQL生成。


--  作者:有点蓝
--  发布时间:2020/9/16 11:02:00
--  
Dlyndx这个表没有主键:http://www.foxtable.com/webhelp/topics/1807.htm
--  作者:zaq3574020
--  发布时间:2020/9/16 16:00:00
--  
以下是引用有点蓝在2020/9/16 11:02:00的发言:
Dlyndx这个表没有主键:http://www.foxtable.com/webhelp/topics/1807.htm

我查询了一下,确实这个表格没有设置主键。我使用的管家婆,如果给表格设置了主键,会不会影响软件。这个问题要怎么验证


--  作者:有点蓝
--  发布时间:2020/9/16 16:11:00
--  
别人的数据库我没有办法判断是否有影响,您咨询管家婆吧

或者换种方式,不要使用datatable,直接使用sql插入数据:http://www.foxtable.com/webhelp/topics/3266.htm

--  作者:zaq3574020
--  发布时间:2020/9/16 18:01:00
--  
以下是引用有点蓝在2020/9/16 16:11:00的发言:
别人的数据库我没有办法判断是否有影响,您咨询管家婆吧

或者换种方式,不要使用datatable,直接使用sql插入数据:http://www.foxtable.com/webhelp/topics/3266.htm

Dim cmd As new  SQLCommand
cmd.C
cmd.CommandText = "Insert Into Dlyndx (DATE,btypeid,etypeid,ktypeid,SUMMARY,TOTAL) Values(?,?,?,?,?,?)"
cmd.Parameters.Add("@DATE","01")
cmd.Parameters.Add("@btypeid",Date.Today)
cmd.Parameters.Add("@etypeid",100)
cmd.Parameters.Add("@ktypeid",100)
cmd.Parameters.Add("@SUMMARY",100)
cmd.Parameters.Add("@TOTAL",100)
cmd.ExecuteNonQuery

 

执行毫无反应


--  作者:有点蓝
--  发布时间:2020/9/17 8:35:00
--  
确定列名叫DATE的不是日期?叫btypeid的才是日期?

cmd.CommandText = "Insert Into Dlyndx ([DATE],btypeid,etypeid,ktypeid,[SUMMARY],[TOTAL]) Values(?,?,?,?,?,?)"

sql里的列名都加上中括号,避免和关键字冲突