以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- Sql Command之inser语句Bug (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174586) |
-- 作者:lgzhao -- 发布时间:2022/1/22 4:12:00 -- Sql Command之inser语句Bug 我的程序用了很久了都ok。 之前一直没问题,最近更改了数据库事务执行代码,从connection.begintransaction 改成最新的cmd.begintransaction。 *********************************************************** 正常操作过程如下代码,这样无论如何都是正确结果。 Dim cmd As New SQLCommand cmd.ConnectionName = _ConnectionName cmd.CommandText = "ins**ert into {GLedger_InventoryTrans} (Date,PeriodCode,TranscType,TranscNo,StockID,UnitCost) " & _ " values(?,?,?,?,?,?) " cmd.Parameters.Clear cmd.Parameters.Add("@Date", format(Date.Today, "yyyy-MM-dd")) cmd.Parameters.Add("@PeriodCode", 202202) cmd.Parameters.Add("@TranscType", "test") cmd.Parameters.Add("@TranscNo", "TEst01") cmd.Parameters.Add("@StockID", "TEst") cmd.Parameters.Add("@UnitCost", system.dbnull.value) cmd.Execute**NonQuery ************************************** 上面代码直接执行永远是正确的,unitcost列是双精度类型。 **************************************************** 但如果在下面代码中,就会出问题。大概过程(代码拼写随便打字别当真) Dim cmd As New SQLCommand cmd.ConnectionName = _ConnectionName cmd.begintransaction --- cmd.text = " sdfvsdfadsdsfsdffdsdf dsfdfdf " dim tbx as datatable =cmd.exex uratereader(true) dim nr as datarow =tbx.addnew ... tbx.save cmd.CommandText = "ins**ert into {GLedger_InventoryTrans} (Date,PeriodCode,TranscType,TranscNo,StockID,UnitCost) " & _ " values(?,?,?,?,?,?) " cmd.Parameters.Clear cmd.Parameters.Add("@Date", format(Date.Today, "yyyy-MM-dd")) cmd.Parameters.Add("@PeriodCode", 202202) cmd.Parameters.Add("@TranscType", "test") cmd.Parameters.Add("@TranscNo", "TEst01") cmd.Parameters.Add("@StockID", "TEst") cmd.Parameters.Add("@UnitCost", system.dbnull.value) cmd.Execute**NonQuery cm.commit 引起错误的代码是cmd.Parameters.Add("@UnitCost", system.dbnull.value) ,报错信息是 Parameter[一个数字], the oleDbType property is uninitialized: oleDbtype.empty 居然不允许空值插入。 第二段代码的bug,估计是由于cmd第一步生成了一个datatable或者是来自于事务。总之应该是foxtable内部的问题。请核查。 |
-- 作者:有点蓝 -- 发布时间:2022/1/22 15:29:00 -- access和SqlServer我测试都没有问题。请上传实例说明。 是不是这个列在数据库里设置为不允许为空?
|
-- 作者:lgzhao -- 发布时间:2022/1/23 10:54:00 -- 列数据都允许为空。 |