以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]下拉窗口问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=105068) |
-- 作者:minxizai -- 发布时间:2017/8/10 20:59:00 -- [求助]下拉窗口问题 同样的代码,紫色的代码不起作用,找了很久都没找到原因 为什么先选择商品再删除,然后重新选择就有用了? If e.Selected Then \'如果选择了值
Dim tbl As Table = Tables("下拉_Table1") If tbl.Current IsNot Nothing Then e.Form.DropDownBox.Value = tbl.Current("商品名称") If kou = "入库明细" Then Tables("入库.入库明细").Current("规格") = tbl.Current("规格") Tables("入库.入库明细").Current("单位") = tbl.Current("大单位") Tables("入库.入库明细").Current("单价") = tbl.Current("进货价") Else Tables("出库.出库明细").Current("规格") = tbl.Current("规格") Tables("出库.出库明细").Current("副单位") = tbl.Current("中单位") If xia = 0 Then Tables("出库.出库明细").Current("单位") = tbl.Current("大单位") ElseIf xia = 1 Then Tables("出库.出库明细").Current("单位") = tbl.Current("中单位") End If End If If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的 e.Form.DropTable.FinishEditing() Else \'如果是通过窗口下拉的 e.Form.DropDownBox.WriteValue() End If End If End If [此贴子已经被作者于2017/8/10 22:05:29编辑过]
|
-- 作者:minxizai -- 发布时间:2017/8/10 22:49:00 -- Select Case e.DataCol.name Case "商品名称" If e.DataRow.Isnull("商品名称") Then Dim ts() As String = {"规格","数量","单价","金额","单位"} For Each t As String In ts e.DataRow(t) = Nothing Next Else Dim q As DataRow = DataTables("商品").Find("商品名称 = \'" & e.DataRow("商品名称") & "\'") If q IsNot Nothing Then e.DataRow("单价") = q("进货价") e.DataRow("数量") = 1 End If End If Case "数量","单价" \'为什么这个地方变成 Case "数量" 就能用了?是所有都需要用isnull进行判断吗? e.DataRow("金额") = e.DataRow("数量") * e.DataRow("单价") Dim r As String = Tables("入库").current("编号") Tables("入库").current("采购数量") = Tables("入库.入库明细").DataTable.Compute("sum(数量)","编号 = \'"& r &"\'") Case "金额" e.DataRow("单价") = e.DataRow("金额") / e.DataRow("数量") Dim r As String = Tables("入库").current("编号") Tables("入库").current("应付货款") = Tables("入库.入库明细").DataTable.Compute("sum(金额)","编号 = \'"& r &"\'") End Select |
-- 作者:有点甜 -- 发布时间:2017/8/10 22:55:00 -- 改一下代码
Case "数量","单价" SystemReady = False \'不触发 金额 的datacolchanged事件 SystemReady = True |
-- 作者:minxizai -- 发布时间:2017/8/10 23:08:00 -- 以下是引用有点甜在2017/8/10 22:55:00的发言:
改一下代码
Case "数量","单价" SystemReady = False \'不触发 金额 的datacolchanged事件 SystemReady = True Select Case e.DataCol.name |
-- 作者:minxizai -- 发布时间:2017/8/10 23:17:00 -- 修改成下面这样后,系统被锁死了,该如何解决? Select Case e.DataCol.name Case "商品名称" If e.DataRow.Isnull("商品名称") Then Dim ts() As String = {"规格","数量","单价","金额","单位"} For Each t As String In ts e.DataRow(t) = Nothing Next Else e.DataRow("数量") = 1 End If Case "数量","单价" SystemReady = False e.DataRow("金额") = e.DataRow("数量") * e.DataRow("单价") Dim r As String = Tables("入库").current("编号") Tables("入库").current("采购数量") = Tables("入库.入库明细").DataTable.Compute("sum(数量)","编号 = \'"& r &"\'") Case "金额" e.DataRow("单价") = e.DataRow("金额") / e.DataRow("数量") Dim r As String = Tables("入库").current("编号") Tables("入库").current("应付货款") = Tables("入库.入库明细").DataTable.Compute("sum(金额)","编号 = \'"& r &"\'") SystemReady = True
End Select |
-- 作者:有点甜 -- 发布时间:2017/8/11 0:07:00 -- Case "数量","单价" SystemReady = False \'不触发 金额 的datacolchanged事件 Tables("入库").current("应付货款") = Tables("入库.入库明细").DataTable.Compute("sum(金额)","编号 = \'"& r &"\'") SystemReady = True Case "金额" e.DataRow("单价") = e.DataRow("金额") / e.DataRow("数量") Dim r As String = Tables("入库").current("编号") Tables("入库").current("应付货款") = Tables("入库.入库明细").DataTable.Compute("sum(金额)","编号 = \'"& r &"\'") |
-- 作者:minxizai -- 发布时间:2017/8/11 10:57:00 -- 谢谢甜版! [此贴子已经被作者于2017/8/11 11:01:10编辑过]
|
-- 作者:minxizai -- 发布时间:2017/8/11 19:09:00 -- 甜版,除了使用systemready 还有别的方法实现吗? 用systemready总是有其他列出问题 或者能详解一下systemready吗?帮助文档看着还是不理解。 [此贴子已经被作者于2017/8/11 19:12:31编辑过]
|
-- 作者:minxizai -- 发布时间:2017/8/11 19:22:00 -- 主要问题是追加的代码总是会触发datacolchanged事件, 代码1 SystemReady = False 代码3 一旦用了systemready 要么是代码1或者代码3不执行,要么是其他表的事件不执行 |
-- 作者:有点蓝 -- 发布时间:2017/8/11 21:04:00 -- 在同一个事件里,systemready 不会影响本身任何代码。只是在代码2 执行完毕之前,其他表的事件不执行。 如果不用systemready 就会造成死循环。 或者下面的case,只能保留其中一个 Case "数量","单价"
|