以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于表事件datacolchangde的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=60693) |
-- 作者:lijin951 -- 发布时间:2014/11/29 11:41:00 -- [求助]关于表事件datacolchangde的问题 大概结构,入库明细表通过datacolchangde事件传递值给库存表,来生成库存 入库明细表事件代码 Select Case e.DataCol.Name Case "物料编号","供应商","物料名称","型号规格","购进数量" Dim filter As String = "物料编号 = \'" & e.DataRow("物料编号") & "\' and 供应商 = \'" & e.DataRow("供应商") & "\' and 物料名称 = \'" & e.DataRow("物料名称") & "\' and 型号规格 = \'" & e.DataRow("型号规格") & "\'" If not (e.DataRow.IsNull("供应商") OrElse e.DataRow.IsNull("物料名称") OrElse e.DataRow.IsNull("型号规格") OrElse e.DataRow.IsNull("物料编号")) Then Dim fdr As DataRow = DataTables("库存表").Find(filter) If (fdr Is Nothing) Then fdr = DataTables("库存表").AddNew fdr("物料编号") = e.DataRow("物料编号") fdr("物料名称") = e.DataRow("物料名称") fdr("型号规格") = e.DataRow("型号规格") fdr("供应商") = e.DataRow("供应商") End If End If If e.DataCol.Name = "购进数量" Then DataTables("库存表").DataCols("供应商").RaiseDataColChanged(filter) Else DataTables("库存表").DataCols("供应商").RaiseDataColChanged() End If End Select 库存表事件代码 Select Case e.DataCol.Name Case "物料编号","物料名称","型号规格","供应商" \'\'这个例子包含3个字段 Dim filter As String = "物料编号 = \'" & e.DataRow("物料编号") & "\'and 供应商 = \'" & e.DataRow("供应商") & "\' and 物料名称 = \'" & e.DataRow("物料名称") & "\' and 型号规格 = \'" & e.DataRow("型号规格") & "\'" e.DataRow("库存数量") = DataTables("入库明细表").Compute("sum(购进数量)", filter) End Select 本来这个结构没问题,但是现在需要给入库明细表加入一个判断列,只有为TRUE的时候再会计入库存表里面,为FALSE则不计入。这个判读是可以手动更改的 综上所诉,要求就是在入库明细表有值后,不要第一时间生成库存,而是需要在查询页面手动选定记录让判断列为TRUE后才生成库存 其实事件都有,只是如何在查询页面手动更改判读为TRUE后正确调用入库明细表的datacolchangde事件,及如何在datacolchangde事件中加入IF判断来检查判断列是否为TRUE 备注:判断字段 BINGO
int NULL,
|
-- 作者:lijin951 -- 发布时间:2014/11/29 11:55:00 -- 还有我是用的SQL数据库,能不能通过SQL代码来弄,比如UPDATE触发器 |
-- 作者:狐狸爸爸 -- 发布时间:2014/11/29 17:04:00 -- 入库明细表:
Select Case e.DataCol.Name
Case "物料编号","供应商","物料名称","型号规格","购进数量","判断列"
Dim filter As String = "物料编号 = \'" & e.DataRow("物料编号") & "\' and 供应商 = \'" & e.DataRow("供应商") & "\' and 物料名称 = \'" & e.DataRow("物料名称") & "\' and 型号规格 = \'" & e.DataRow("型号规格") & "\'"
If not (e.DataRow.IsNull("供应商") OrElse e.DataRow.IsNull("物料名称") OrElse e.DataRow.IsNull("型号规格") OrElse e.DataRow.IsNull("物料编号")) Then
Dim fdr As DataRow = DataTables("库存表").Find(filter)
If (fdr Is Nothing) Then
fdr = DataTables("库存表").AddNew
fdr("物料编号") = e.DataRow("物料编号")
fdr("物料名称") = e.DataRow("物料名称")
fdr("型号规格") = e.DataRow("型号规格")
fdr("供应商") = e.DataRow("供应商")
End If
End If
If e.DataCol.Name = "购进数量" Then
DataTables("库存表").DataCols("供应商").RaiseDataColChanged(filter)
Else
DataTables("库存表").DataCols("供应商").RaiseDataColChanged()
End If
End Select 库存表:
Select Case e.DataCol.Name
Case "物料编号","物料名称","型号规格","供应商"
Dim filter As String = "物料编号 = \'" & e.DataRow("物料编号") & "\'and 供应商 = \'" & e.DataRow("供应商") & "\' and 物料名称 = \'" & e.DataRow("物料名称") & "\' and 型号规格 = \'" & e.DataRow("型号规格") & "\'"
Filter = Filter & " 判断列 = True"
e.DataRow("库存数量") = DataTables("入库明细表").Compute("sum(购进数量)", filter)
End Select
|