以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 暂停遍历、弹出窗口选择后再继续遍历 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=121233) |
-- 作者:huangxueyao -- 发布时间:2018/7/2 12:23:00 -- 暂停遍历、弹出窗口选择后再继续遍历 Dim cmd As New SQLCommand cmd.C cmd.CommandText = "sel ect a.报价,b.供应商编号,b.供应商名称 from 采购报价明细表 a left join 采购报价表 b on a.采购报价编号 = b.采购报价编号 where b.业务状态 = \'2\' and b.审核状态 = \'2\' and a.物料编号 = \'" & tr1("物料编号") & "\'" Dim dtBJ As DataTable = cmd.ExecuteReader If dtBJ.datarows.count = 0 Then \'未找到有效报价,报错返回提示增加有效报价 msgbox("出现错误:以下物料未找到有效报价:" & vbcrlf & tr1("物料编号") & "|" & tr1("物料名称") & vbcrlf & vbcrlf & "原因可能是:" & vbcrlf & "1?原有报价过期失效;" & vbcrlf & "2?尚未进行报价." & vbcrlf & vbcrlf & "请检查清楚并处理后,再执行本操作.") Return ElseIf dtBJ.datarows.count = 1 Then \'找到有效报价且唯一,直接采纳 Dim drBJ As DataRow = dtBJ.datarows(0) dr1_1("供应商编号") = drBJ("供应商编号") dr1_1("供应商名称") = drBJ("供应商名称") dr1_1("报价") = drBJ("报价") Else \'找到有效报价且不唯一,则弹出窗体,提示选择其中一个供应商 vars("采购订单选择供应商") = tr1("物料编号") & "|" & tr1("物料名称") forms("采购订单选择供应商").open \'打开窗体选择供应商后返回供应商编号 Dim drBJ As DataRow = dtBJ.find("供应商编号 = \'" & vars("采购订单选择供应商") & "\'") dr1_1("供应商编号") = drBJ("供应商编号") dr1_1("供应商名称") = drBJ("供应商名称") dr1_1("报价") = drBJ("报价") End If 以上: 这样实际运行跟设计的不一样,看了先对事件暂停貌似也不对,有什么方法可以实现类似效果?
|
-- 作者:有点甜 -- 发布时间:2018/7/2 12:26:00 -- 1、你在什么时候遍历?
2、如果你【采购订单选择供应商】是模式窗口,肯定没问题。
3、具体问题做个例子说明。 |
-- 作者:huangxueyao -- 发布时间:2018/7/2 14:15:00 -- Dim tb23 As Table = e.Form.Controls("table23").Table Dim tb24 As Table = e.Form.Controls("table24").Table SystemReady = False Try \'【第一步】建表 Dim dtb As New DataTableBuilder("采购评估") dtb.AddDef("物料编号", Gettype(String), 32) dtb.AddDef("物料名称", Gettype(String), 50) dtb.AddDef("物料类型", Gettype(String), 16) dtb.AddDef("结算单位", Gettype(String), 16) dtb.AddDef("计划量", Gettype(Single)) dtb.AddDef("供应商编号", Gettype(String), 16) dtb.AddDef("供应商名称", Gettype(String), 50) dtb.AddDef("供应商报价", Gettype(Single)) dtb.Build() Dim db As DataTable = DataTables("采购评估") \'【第二步】合并采购计划各明细的总计划量 For Each tr1 As Row In tb23.rows \'循环遍历每个记录 Dim dr1 As DataRow = db.find("物料编号 = \'" & tr1("物料编号") & "\'") \'查询采购评估表是否已有此物料 If dr1 IsNot Nothing Then \'如有则直接修改 dr1("计划量") = dr1("计划量") + tr1("计划量") \'有,增加总需求量 Else \'如果采购评估表中不存在,则新增记录,并查询其供应商报价 Dim dr1_1 As DataRow = db.addnew dr1_1("物料编号") = tr1("物料编号") dr1_1("物料名称") = tr1("物料名称") dr1_1("物料类型") = tr1("物料类型") dr1_1("结算单位") = tr1("结算单位") dr1_1("计划量") = tr1("计划量") Dim cmd As New SQLCommand cmd.C cmd.CommandText = "sel ect a.报价,b.供应商编号,b.供应商名称 from 采购报价明细表 a left join 采购报价表 b on a.采购报价编号 = b.采购报价编号 where b.业务状态 = \'2\' and b.审核状态 = \'2\' and a.物料编号 = \'" & tr1("物料编号") & "\'" Dim dtBJ As DataTable = cmd.ExecuteReader If dtBJ.datarows.count = 0 Then \'未找到有效报价,报错返回提示增加有效报价 msgbox("出现错误:以下物料未找到有效报价:" & vbcrlf & tr1("物料编号") & "|" & tr1("物料名称") & vbcrlf & vbcrlf & "原因可能是:" & vbcrlf & "1?原有报价过期失效;" & vbcrlf & "2?尚未进行报价." & vbcrlf & vbcrlf & "请检查清楚并处理后,再执行本操作.") Return ElseIf dtBJ.datarows.count = 1 Then \'找到有效报价且唯一,直接采纳 Dim drBJ As DataRow = dtBJ.datarows(0) dr1_1("供应商编号") = drBJ("供应商编号") dr1_1("供应商名称") = drBJ("供应商名称") dr1_1("报价") = drBJ("报价") Else \'找到有效报价且不唯一,则弹出窗体,提示选择其中一个供应商 vars("采购订单选择供应商") = tr1("物料编号") & "|" & tr1("物料名称") forms("采购订单选择供应商").open Dim drBJ As DataRow = dtBJ.find("供应商编号 = \'" & vars("采购订单选择供应商") & "\'") dr1_1("供应商编号") = drBJ("供应商编号") dr1_1("供应商名称") = drBJ("供应商名称") dr1_1("报价") = drBJ("报价") End If End If Next Catch ex As Exception MessageBox.Show("操作失败") End Try DataTables("采购评估").Save tb24.DataSource = DataTables("采购评估") SystemReady = True 【采购订单选择供应商】改为模式窗后,代码确实自动暂停了。 但是新问题出现了, 【采购订单选择供应商】里面的代码执行不了,点了没任何反应…… 代码如下: Dim tr As Row = e.Form.Controls("table1").Table.current vars("采购订单选择供应商") = tr("供应商编号") e.Form.Close [此贴子已经被作者于2018/7/2 14:26:03编辑过]
|
-- 作者:huangxueyao -- 发布时间:2018/7/2 14:44:00 -- 找到原因了。 SystemReady = True
|