给你一段我的程序,看看有没有用.我的库存量,直接在供应入库表中,库存量是表达式列,,由入库量-出库量得来.出库量是由供应出库表中的库数量汇总而来.汇总的具体代码是红色部分,这样就自动了
供应出库_DataColChanged
Select e.DataCol.Name
Case "出库数量" '验证库中是否有货,并指出数量
CurrentTable.Current.Save() '先让变更的数据进入数据库,以保证汇总全部数据
Dim cmd As New SQLCommand '从后台查询并返回同一入库单号的数据,以备汇总
Dim rkdt As DataTable
cmd.ConnectionName = "hsknbgl"
cmd.CommandText = "Select * From {供应出库} Where [入库单号] = " & e.DataRow("入库单号")
rkdt = cmd.ExecuteReader
If e.DataRow.Isnull("入库单号") Then
e.DataRow("出库数量") = Nothing
Else
'如果出库成功,则汇总出库总数,并填到入库表的对应记录的出库量列中.
Dim ddr As DataRow
ddr = DataTables("供应入库").Find("入库单号 = '" & e.DataRow("入库单号") & "'")
If ddr Is Nothing Then '查看 供应入库 中要写入的那一行是否已经加载
MessageBox.Show("请给'供应入库'多加载点数据,直到在'供应入库中'能找到入库单号为" & e.DataRow("入库单号") & "的这一条记录")
Else
ddr("出库数量")=CDbl(rkdt.Compute("Sum(出库数量)", "入库单号 = '" & e.DataRow("入库单号") & "'")) '将同一入库单号的出库量汇总值写入供应入库中
End If
If ddr("剩余数量") < 0 Then '若出库数量多于单的剩余量,将出库数量清零
messagebox.show("此条入库单上数量不够!只有" & ddr("剩余数量")+e.DataRow("出库数量") & "请减小出库量" )
e.DataRow("出库数量") = 0
End If
End If
End Select
<!--EndFragment-->