以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  无法理解,不知道错在哪里?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192880)

--  作者:hitzfeld
--  发布时间:2024/7/29 16:56:00
--  无法理解,不知道错在哪里?
Dim drs As List(Of DataRow) = DataTables("入库明细").SQLSelect("入库日期 >=  \'" & dt1 & "\' And 入库日期 <= \'" & dt2 & "\' and 供应商 = \'" & gys & "\' and 审核=\'已审核\'")
For Each dr1 As DataRow In drs
    dr1("过账") = False
Next
DataTables("入库明细").SQLUpdate(drs)
DataTables("入库明细").load
msgbox("反过账完成!")
    
    End If

这段代码是更新后台数据的状态(逻辑值)。问题在于执行的时候,第一次可以,状态有变,第二次不行。第三次又可以,第四次不行。不知道错在哪里?感觉代码没有问题啊?
特别说明,不行的时候,看了sql后台数据,确实没更新。

--  作者:有点蓝
--  发布时间:2024/7/29 16:59:00
--  
调试看看每次查询的结果数量

Dim drs As List(Of DataRow) = DataTables("入库明细").SQLSelect("入库日期 >=  \'" & dt1 & "\' And 入库日期 <= \'" & dt2 & "\' and 供应商 = \'" & gys & "\' and 审核=\'已审核\'")
msgbox(drs.count)
For Each dr1 As DataRow In drs

--  作者:hitzfeld
--  发布时间:2024/7/29 17:03:00
--  
老师好,msgbox(drs.count)返回值都是正确的。除了状态没有改变。仍然是按1,3,5可以。2,4,6不行的情况
--  作者:有点蓝
--  发布时间:2024/7/29 17:17:00
--  
如果使用的是SqlServer数据库,跟踪一下2,4,6的时候后台数据库执行了什么sql
--  作者:kaiyu
--  发布时间:2024/7/31 9:08:00
--  
 dr1都没有保存

--  作者:有点蓝
--  发布时间:2024/7/31 9:38:00
--  
我测试这种用法没有问题。请上传实例测试
--  作者:lur320
--  发布时间:2024/7/31 10:22:00
--  
 
Dim drs As List(Of DataRow) = DataTables("入库明细").SQLSelect("入库日期 >=  \'" & dt1 & "\' And 入库日期 <= \'" & dt2 & "\' and 供应商 = \'" & gys & "\' and 审核=\'已审核\'")
For Each dr1 As DataRow In drs
    dr1("过账") = False
Next
DataTables("入库明细").SQLUpdate(drs)   后台保存了,客户端呢?
DataTables("入库明细").load  load会先保存本地的数据至SQL然后再从数据库加载至本地,可以试试load(false)
msgbox("反过账完成!")

--  作者:cd_tdh
--  发布时间:2024/7/31 10:58:00
--  
客服端需要刷新表内容才能看到数据库里面修改了的最新数据