以下是引用muhua在2013-3-4 11:20:00的发言:
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT Name From {Users}"
dt = cmd.ExecuteReader()
通过这种方法来获取外部数据源表
也就是
Dim v As Integer = DataTables("销售出库单子表").Compute("sum(数量_本次交)","客户订单编号 = '" & e.DataRow("客户订单编号") & "'And 料号 ='" & e.DataRow("料号") & "'")
换成:
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT * From {销售出库单子表} where 客户订单编号 = '" & e.DataRow("客户订单编号") & "'And 料号 ='" & e.DataRow("料号") & "'"
dt = cmd.ExecuteReader()
Dim v As Integer = dt.Compute("sum(数量_本次交)","")
这个方法只能查询,我需要的是同时把后台数据给替换掉,你看这句
For Each pr As DataRow In DataTables("销售出库单子表").Select("客户订单编号 = '" & e.DataRow("客户订单编号") & "' And 料号 ='" & e.DataRow("料号") & "'")
pr("数量_累交数") = v
pr("数量_未交数") = e.DataRow("数量_订单数")-v
Next
如果我用UPDATE来直接更新后台数据的话
dr("累交数") = e.DataRow("数量_累交数")
dr("未交数") = dr("数量")-dr("累交数")
...
等等这些值的更新又会涉及到当前行是新增的还是在已经在数据库里的判断,非常复杂,我昨晚上全部用COMMAND写的,自己都看晕了,也没完成,我把代码也贴一下吧
所以今天我想把数据加载到前台来,统计完了后保存到后台去,这样子最方便,可是就碰到上面的问题
=================
If e.DataCol.Name = "数量_本次交" Then
Dim dt As DataTable
Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "select * from {客户订单子表} where 客户订单编号 ='" & e.DataRow("客户订单编号") & "' And OPN ='" & e.DataRow("料号") & "'"
dt = cmd.ExecuteReader '生成客户订单子表
Dim dr As DataRow = dt.Find("客户订单编号 ='" & e.DataRow("客户订单编号") & "'And OPN ='" & e.DataRow("料号") & "'")
msgbox(dr("OPN"))
Dim cmd1 As New SQLCommand
cmd1.C
cmd1.CommandText ="select * from {销售出库单子表} where 客户订单编号 = '" & e.DataRow("客户订单编号") & "'And 料号 ='" & e.DataRow("料号") & "'"
Dim dt1 As DataTable = cmd1.ExecuteReader ' 生成销售出库单子表
Dim v As Integer = dt1.Compute("sum(数量_本次交)","客户订单编号 = '" & e.DataRow("客户订单编号") & "'And 料号 ='" & e.DataRow("料号") & "'")
msgbox(v)
Dim cmd2 As New SQLCommand
cmd2.C
cmd2.CommandText = "UPDATE {销售出库单子表} SET 数量_未交数 = V 数量_未交数 = '" & e.DataRow("数量_订单数") & "' - v Where 客户订单编号 = '" & e.DataRow("客户订单编号") & "'And 料号 ='" & e.DataRow("料号") & "'"
Dim dr1 As DataRow = dt1.Find("_Identify ='" & e.DataRow("_Identify") & "'")
If dr1 Is Nothing Then
e.DataRow("数量_累交数") = V + e.NewValue
Else
e.DataRow("数量_累交数") =V + e.NewValue -e.OldValue
End If
e.DataRow("数量_未交数") = e.DataRow("数量_订单数") - e.DataRow("数量_累交数")
Dim cmd3 As New SQLCommand
cmd3.C
cmd3.CommandText ="UPDATE {客户订单子表} SET 累交数 = V 未交数 = 数量-v Where 客户订单编号 = '" & e.DataRow("客户订单编号") & "'And OPN ='" & e.DataRow("料号") & "'"
Dim cmd4 As New SQLCommand
cmd4.C
cmd4.CommandText = "UPDATE {产品资料子表} SET 当前库存= 当前库存 - '" & e.NewValue & "' + '" & e.OldValue & "' where 料号 ='" & e.DataRow("料号") & "'"
Dim cmd5 As New SQLCommand
cmd5.C
Dim temp As Integer = dt.Compute("sum(未交数)","客户订单编号 = '" & e.DataRow("客户订单编号") & "'")
If temp > 0 Then
cmd5.CommandText = "UPDATE {客户订单主表} SET 结案 = 0 where 客户订单编号 = '" & e.DataRow("客户订单编号") & "'"
Else
cmd5.CommandText = "UPDATE {客户订单主表} SET 结案 = 1 where 客户订单编号 = '" & e.DataRow("客户订单编号") & "'"
End If
End If
[此贴子已经被作者于2013-3-4 11:28:24编辑过]