Foxtable(狐表)用户栏目专家坐堂 → 暂停遍历、弹出窗口选择后再继续遍历


  共有1596人关注过本帖树形打印复制链接

主题:暂停遍历、弹出窗口选择后再继续遍历

帅哥哟,离线,有人找我吗?
huangxueyao
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
暂停遍历、弹出窗口选择后再继续遍历  发帖心情 Post By: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

以上:
这样实际运行跟设计的不一样,看了先对事件暂停貌似也不对,有什么方法可以实现类似效果?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/2 12:26:00 [只看该作者]

1、你在什么时候遍历?

 

2、如果你【采购订单选择供应商】是模式窗口,肯定没问题。

 

3、具体问题做个例子说明。


 回到顶部
帅哥哟,离线,有人找我吗?
huangxueyao
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
  发帖心情 Post By:2018/7/2 14:44:00 [只看该作者]

找到原因了。

SystemReady = True

 回到顶部