在一个过程中用到了两次CONN.EXCUTE SQL ,偶尔会出现有第一条CONN.EXCUTE SQL没有保存结果的情况,以下是相关代码
If myCardMgr.WriteicGoudianCard() = true Then ‘写卡函数 操作读卡器往卡中写数据
sql = "SELECT yhxx.用户编号,yhxx.用户号, yhxx.用户姓名,yhxx.用户类型, yhlx.单价 FROM yhxx INNER JOIN yhlx ON yhxx.用户类型 = yhlx.用户类型 Where yhxx.用户编号 = " + CStr(GoudianKahao)
Rst1.Close
Rst1.Open sql, Conn, adOpenKeyset, adLockPessimistic
sql = "Insert into sdjl (用户编号,用户表号,用户号,用户姓名,用户类型,[电价(元/kWh)],[购电量(kWh)],[购电金额(元)],[调剂电量(kWh)],购电日期,售电员,现金余额,备注)" + " values (" + CStr(GoudianKahao) + " , " + CStr(pbiaohao) + " , " + CStr(Trim(Text26.Text)) + ",'" + Rst1.Fields("用户姓名") + "','" + Rst1.Fields("用户类型") + "'," + CStr(Rst1.Fields("单价")) + "," + Text16.Text + "," + Text15.Text + "," + Text14.Text + ",#" + CStr(sj(ShoudianSJ)) + "#," + CStr(userID) + "," + CStr(Text19.Text) + ",'" + Text17.Text + "')" + Text16.Text + "," + Text15.Text + "," + Text14.Text + ",'" + CStr(ShoudianSJ) + "'," + CStr(userID) + "," + CStr(Text19.Text) + ",'" + Text17.Text + "')" ‘向数据库中写一条售电记录
Conn.Execute sql ‘第一处
sql = "update yhxx set 购电次数=" + CStr(GoudianCS) + ",总购电量=总购电量+" + Text16.Text + "+" + Text14.Text + ",总购金额=总购金额+" + Text15.Text + " where 用户编号=" + CStr(GoudianKahao) ‘向用户信息表中更新相关字段
Conn.Execute sql ’第二处近期偶尔出现的一些情况,经查全是第一处CONN.EXECUTE SQL,没有保存数据(不知道是什么原因),而第二处确确实实是保存了。 如果第一处CONN.EXECUTE SQL 执行失败的话,第二处也应该不会被执行吧。
难道说CONN.EXCUTE SQL执行 的 可靠性 有问题。
If myCardMgr.WriteicGoudianCard() = true Then ‘写卡函数 操作读卡器往卡中写数据
sql = "SELECT yhxx.用户编号,yhxx.用户号, yhxx.用户姓名,yhxx.用户类型, yhlx.单价 FROM yhxx INNER JOIN yhlx ON yhxx.用户类型 = yhlx.用户类型 Where yhxx.用户编号 = " + CStr(GoudianKahao)
Rst1.Close
Rst1.Open sql, Conn, adOpenKeyset, adLockPessimistic
sql = "Insert into sdjl (用户编号,用户表号,用户号,用户姓名,用户类型,[电价(元/kWh)],[购电量(kWh)],[购电金额(元)],[调剂电量(kWh)],购电日期,售电员,现金余额,备注)" + " values (" + CStr(GoudianKahao) + " , " + CStr(pbiaohao) + " , " + CStr(Trim(Text26.Text)) + ",'" + Rst1.Fields("用户姓名") + "','" + Rst1.Fields("用户类型") + "'," + CStr(Rst1.Fields("单价")) + "," + Text16.Text + "," + Text15.Text + "," + Text14.Text + ",#" + CStr(sj(ShoudianSJ)) + "#," + CStr(userID) + "," + CStr(Text19.Text) + ",'" + Text17.Text + "')" + Text16.Text + "," + Text15.Text + "," + Text14.Text + ",'" + CStr(ShoudianSJ) + "'," + CStr(userID) + "," + CStr(Text19.Text) + ",'" + Text17.Text + "')" ‘向数据库中写一条售电记录
Conn.Execute sql ‘第一处
sql = "update yhxx set 购电次数=" + CStr(GoudianCS) + ",总购电量=总购电量+" + Text16.Text + "+" + Text14.Text + ",总购金额=总购金额+" + Text15.Text + " where 用户编号=" + CStr(GoudianKahao) ‘向用户信息表中更新相关字段
Conn.Execute sql ’第二处近期偶尔出现的一些情况,经查全是第一处CONN.EXECUTE SQL,没有保存数据(不知道是什么原因),而第二处确确实实是保存了。 如果第一处CONN.EXECUTE SQL 执行失败的话,第二处也应该不会被执行吧。
难道说CONN.EXCUTE SQL执行 的 可靠性 有问题。
Dim strSql As String
strSql = "Insert xxxx"
cn.Execute (strSql)
If Not cn Is Nothing Then
If cn.State <> adStateClosed Then cn.Close
Set cn = Nothing
End If
存储过程可以用SQL语句先在程序中添加么。还有就是可以设置超时。不过还是推荐使用存储过程,这样会等待执行结束并接受返回的值也并不难。参考