老师好,我的软件出了些问题。
窗口保存按钮用于保存数据行及一些数据处理功能,数据行写入表之后,需要先保存这个数据行,然后对这个数据行进行下一步处理。
但是问题是,数据行写入后,这个表变成空白表,后续代码需要查找这一数据行的时候找不到,所以报错。这个表不管怎么刷新,数据都不显示,只有卸载掉这个表,重新加载,才能看到数据,这个时候,可以发现刚才保存的数据行是已经保存完了的。
我在代码中插一个判断语句,来看是否存在刚才写入的行,提示也是未发现。不知道是什么原因。
代码片段如下,见注释:
'写入R_GoodsInfo表
Dim nr_Goods As DataRow = dt_Goods.AddNew()
'写入数据的代码
nr_Goods.Save()
'写入R_StockFlow表
'其它无关代码
'-------------->出问题部分:
dtSFlow.SQLDeleteFor("sys_Done Is Null")
For Each drFlow As DataRow In dtSFlow.SQLSelect("sys_D")
Dim drGoods As DataRow = DataTables("R_GoodsInfo").SQLFind("ID = '" & drFlow("BarCode") & "'")
If drGoods IsNot Nothing '——加判断语句验证,提示未找到drGoods数据行
MessageBox.Show("yes")
Else
MessageBox.Show("no")
End If
'------此后代码无法进行下去了
drGoods("Stock") = IIF(drGoods.IsNull("Stock"),0,drGoods("Stock")) + drFlow("Qty")
drGoods.Save()
Dim drSList As DataRow = dtSList.SQLFind("BarCode = '" & drFlow("BarCode") & "' and Shop = '" & drFlow("Shop") & "'")
If drSList IsNot Nothing Then
drSList.SQLSetValue("Qty",drSList("Qty") + drFlow("Qty"))
Else
Dim nrSList As DataRow = dtSList.SQLAddNew()
nrSList("Shop") = drFlow("Shop")
nrSList("BarCode") = drFlow("BarCode")
nrSList("Qty") = drFlow("Qty")
nrSList.Save()
End If
drFlow.SQLSetValue("sys_Done","D")
Next
End If
见图
保存完数据行后,整个表变成空白的,而后用于验证的判断语句给出了不存在刚才保存的行的判断:
此主题相关图片如下:1.jpg
点击No的确定按钮后,开始报错。
此主题相关图片如下:2.jpg
而后不管怎么刷新页面和数据,都无法显示任何数据
此主题相关图片如下:3.jpg
只有先卸载数据表,而后重新加载数据表,数据才能再次显示,可以发现,刚才写入的数据行确实已经保存完成。
(只能上传3个文件,这个看不到了)
然而,虽然表是空白表,但是数据似乎都隐身了,鼠标点击之处还是可以选中数据行,双击某处,还能弹出此处对应的数据的编辑窗口,好像数据表全都透明了一样。
不知道是怎么回事?
[此贴子已经被作者于2019/11/20 22:16:07编辑过]