以文本方式查看主题

-  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=154156)

--  作者:北狐
--  发布时间:2020/9/5 19:53:00
--  赋值无效
\'代码写在控件中,R05_RetailShipment为外部表(因为某些原因无法在表事件中写代码处理)

Dim dr As DataRow
dr = DataTables("R05_RetailShipment").SQLFind("outboundQuantity > 0  and outboundWagePrice=0")
If dr IsNot Nothing Then \'如果找到符合条件的
    MessageBox.Show(1)
    Dim dr1 As DataRow
    dr1 = DataTables("R05_RetailShipment").SQLFind("tableCode=\'R03_InboundProducts\' Or tableCode=\'R03_Delegation\' And (itemID = \'" & dr("itemID") & "\') and (number> \'"&dr("number")&"\') ")
    If dr1 IsNot Nothing Then \'如果找到符合条件的
        MessageBox.Show(3)
        dr("outboundWagePrice")=dr1("inboundWagePrice")  \'此行代码无效,求老师帮看下是什么原因

MessageBox.Show(4)
    End If
Else
    MessageBox.Show(2)
End If

--  作者:有点蓝
--  发布时间:2020/9/6 19:45:00
--  
没有保存:

……
        dr("outboundWagePrice")=dr1("inboundWagePrice")  \'此行代码无效,求老师帮看下是什么原因
        dr.save
……


--  作者:北狐
--  发布时间:2020/9/10 17:32:00
--  
老师,加上了还是不行,是不是因为R05_RetailShipment为外部数据表,会有所不同?
--  作者:有点蓝
--  发布时间:2020/9/10 17:37:00
--  
不可能,只要有值,保存了肯定可以。除非R05_RetailShipment是查询表或者临时表

不过注意保存后数据在数据库里,界面需要刷新才会重新加载数据的
[此贴子已经被作者于2020/9/10 17:38:09编辑过]

--  作者:北狐
--  发布时间:2020/9/10 17:44:00
--  
R05_RetailShipment是通过这里添加的
图片点击可在新窗口打开查看此主题相关图片如下:d28l~v3firh2vjd$sgcwxc.png
图片点击可在新窗口打开查看
测了  DataTables("R06_CheckMaterialAmount_Detail").Type = 3 
   

[此贴子已经被作者于2020/9/10 17:58:37编辑过]

--  作者:北狐
--  发布时间:2020/9/10 17:50:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:h3d6)v@f2u9jzp71ctsz`cp.png
图片点击可在新窗口打开查看
Output.Show(dr1("inboundWagePrice"))  没有出现值,但(有刷新看的)表界面有显示数值9.8的

[此贴子已经被作者于2020/9/10 18:05:03编辑过]

--  作者:有点蓝
--  发布时间:2020/9/10 20:15:00
--  
……
        dr("outboundWagePrice")=dr1("inboundWagePrice")  \'此行代码无效,求老师帮看下是什么原因
        dr.save
MessageBox.Show(4) \'这里能不能弹出来?
……

--  作者:北狐
--  发布时间:2020/9/15 16:58:00
--  
MessageBox.Show(4) \'这里不能弹出来
代码改成下面,在数据量极少的情况就可以,但数据量(即行数多)的话,就没效果(是因为查询和赋值并存导致的原因吗?是的话,代码具体要怎么优化)
For Each dr As DataRow In DataTables("R06_CheckMaterialAmount_Detail").DataRows
    dr = DataTables("R06_CheckMaterialAmount_Detail").Find("outboundQuantity >0  and outboundWagePrice is null")
    If dr IsNot Nothing Then \'如果找到符合条件的
        Dim dr1 As DataRow
        dr1 = DataTables("R06_CheckMaterialAmount_Detail").Find("(tableCode=\'R03_InboundProducts\' Or tableCode=\'R03_Delegation\') And (itemID = \'" & dr("itemID") & "\') and (number> \'"&dr("number")&"\')","number",0)
        If dr1 IsNot Nothing Then \'如果找到符合条件的
            dr("outboundWagePrice")=dr1("inboundWagePrice")
            dr.save
        End If
    End If
Next
[此贴子已经被作者于2020/9/15 16:59:03编辑过]

--  作者:2900819580
--  发布时间:2020/9/15 17:03:00
--  
For Each dr As DataRow In DataTables("R06_CheckMaterialAmount_Detail").DataRows
    dr = DataTables("R06_CheckMaterialAmount_Detail").Find("outboundQuantity >0  and outboundWagePrice is null")

 

 

第一行循环了得到DR的变量,第二行又给DR再赋值,看不懂第一行循环的作用在那里?


--  作者:2900819580
--  发布时间:2020/9/15 17:05:00
--  
For Each dr As DataRow In DataTables("R06_CheckMaterialAmount_Detail").Select("outboundQuantity >0  and outboundWagePrice is null")
   \' dr = DataTables("R06_CheckMaterialAmount_Detail").Find("outboundQuantity >0  and outboundWagePrice is null") 删除这行
    If dr IsNot Nothing Then \'如果找到符合条件的
        Dim dr1 As DataRow
        dr1 = DataTables("R06_CheckMaterialAmount_Detail").Find("(tableCode=\'R03_InboundProducts\' Or tableCode=\'R03_Delegation\') And (itemID = \'" & dr("itemID") & "\') and (number> \'"&dr("number")&"\')","number",0)
        If dr1 IsNot Nothing Then \'如果找到符合条件的
            dr("outboundWagePrice")=dr1("inboundWagePrice")
            dr.save
        End If
    End If
Next
是不是这才是你想要的效果!