以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  下拉窗口数据录入错乱  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=126107)

--  作者:andy123
--  发布时间:2018/10/14 15:30:00
--  下拉窗口数据录入错乱
用下拉窗口录入数据,录入数据错乱。
明明选择的工序A,品名B,结果填入的是工序A,品名C
关键代码如下:

Dim tbl As Table =  Tables("机加工价选取_table1")
If tbl.Current IsNot Nothing Then
    Dim tbc As Row = Tables(e.Form.DropTable.Name).Current   \'取得当前表当前行
    Select e.Form.DropCol.Name
        Case "产品"
            e.Form.DropDownBox.Value = tbl.Current("产品")  \'产品列填入产品
            tbc("工序")= tbl.Current("工序")
            tbc("工价")= tbl.Current("工价")
            tbc("版本")= tbl.Current("版本")
        Case "工序"
            If tbc.IsNull("产品") Then  \'产品列为空值
                e.Form.DropDownBox.Value = tbl.Current("工序")
                tbc("产品")= tbl.Current("产品")
                tbc("工价")= tbl.Current("工价")
                tbc("版本")= tbl.Current("版本")
            Else
                e.Form.DropDownBox.Value = tbl.Current("工序")
                tbc("工价")= tbl.Current("工价")
                tbc("产品")= tbl.Current("产品")
                tbc("版本")= tbl.Current("版本")
            End If
    End Select
End If

Forms("机加工价选取").DropDownBox.CloseDropDown()

操作录像如下:

图片点击可在新窗口打开查看此主题相关图片如下:测试文件.gif
图片点击可在新窗口打开查看


查了一天了,实在查不出哪里有问题了。



[此贴子已经被作者于2018/10/14 17:01:45编辑过]

--  作者:有点甜
--  发布时间:2018/10/14 16:47:00
--  

\'If e.Selected Then \'如果选择了值
Dim tbl As Table =  Tables("机加工价选取_table1")
If tbl.Current IsNot Nothing Then
    Dim tbc As Row = Tables(e.Form.DropTable.Name).Current   \'取得当前表当前行
Dim r As Row = tbl.Current
    Select e.Form.DropCol.Name
        Case "产品"
            e.Form.DropDownBox.Value = r("产品")  \'产品列填入产品
            tbc("工序")= r("工序")
            tbc("工价")= r("工价")
            tbc("版本")= r("版本")
        Case "工序"
            If tbc.IsNull("产品") Then  \'产品列为空值
                e.Form.DropDownBox.Value = r("工序")
                tbc("产品")= r("产品")
                tbc("工价")= r("工价")
                tbc("版本")= r("版本")
            Else
                e.Form.DropDownBox.Value = r("工序")
                tbc("工价")= r("工价")
                tbc("产品")= r("产品")
                tbc("版本")= r("版本")
            End If
    End Select
End If
\'End If

Forms("机加工价选取").DropDownBox.CloseDropDown()


--  作者:andy123
--  发布时间:2018/10/14 17:01:00
--  
今天还在回复,太感谢了
没明白为什么

--  作者:有点甜
--  发布时间:2018/10/14 18:28:00
--  

tbl.Current 每一次调用的时候,有可能不是同一行。

 

比如,你设置值的过程中,触发了事件代码对表格进行了筛选以后,表格数据改变,这个时候current就不是你本来那个了。