以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  副本表筛选情况下的自定义录入窗口问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174025)

--  作者:z769036165
--  发布时间:2021/12/27 20:32:00
--  副本表筛选情况下的自定义录入窗口问题
http://www.foxtable.com/webhelp/topics/2465.htm
这有个窗口表A,设置为副本表,表因为内容多设置了筛选,如 "其他列1 = \'A\'",同时存在这个自定义录入窗口DropDownForm的功能,
但是目前这段代码中
If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("窗口1_Table1")
    If
 tbl.Current IsNot Nothing 
Then
        e.Form.DropDownBox.Value = tbl.Current(
"客户ID")
        
Tables("订单").Current("其它列1") = tbl.Current("其它列1")
        Tables("订单").Current("其它列2") = tbl.Current("其它列2")
        Tables("订单").Current("其它列3") = tbl.Current("其它列3")
        If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的
            e.Form.DropTable.FinishEditing()
        Else \'如果是通过窗口下拉的
            e.Form.DropDownBox.WriteValue()
        End If

    End 
If
End If
采用的是Tables("订单").Current,选中行,但如果是副本表,Tables("订单_table1").Current("其它列1") = "B" 进行了筛选列的修改,则会自动进行筛选,导致之前选择的行的内容会错位更新到筛选后的行

If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("窗口1_Table1")
    If
 tbl.Current IsNot Nothing 
Then
     Dim w as datarow = datatable("订单").find("_Identify = \'" & Tables("订单_table1").Current("_Identify") & "\'")
    if w isnot nothing then       
          w("客户ID") = tbl.Current("客户ID")
          w("其它列1") = tbl.Current("其它列1")
          w("其它列2") = tbl.Current("其它列2")
          w("其它列3") = tbl.Current("其它列3")
      end if
        If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的
            e.Form.DropTable.FinishEditing()
        Else \'如果是通过窗口下拉的
            e.Form.DropDownBox.WriteValue()
        End If

    End 
If
End If

我改成这样还是错误,这个在不改变副本表属性的情况下如何改?

--  作者:有点蓝
--  发布时间:2021/12/27 20:54:00
--  
If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("窗口1_Table1")
    If
 tbl.Current IsNot Nothing 
Then
        e.Form.DropDownBox.Value = tbl.Current(
"客户ID")
dim r as row = Tables("订单_table1").Current
       
r("其它列1") = tbl.Current("其它列1")
        r("其它列2") = tbl.Current("其它列2")
        r("其它列3") = tbl.Current("其它列3")
        If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的
            e.Form.DropTable.FinishEditing()
        Else \'如果是通过窗口下拉的
            e.Form.DropDownBox.WriteValue()
        End If

    End 
If
End If

--  作者:z769036165
--  发布时间:2021/12/27 21:09:00
--  
不行啊,这个我有筛选的值修改后,这个Tables("订单_table1").Current就不是原来的,实际修改了2行了


--  作者:有点蓝
--  发布时间:2021/12/27 21:15:00
--  
不可能的,3楼代码不可能会改2行
--  作者:z769036165
--  发布时间:2021/12/28 9:29:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.foxdb

我做了个测试的,用这个也是修改了2行

--  作者:有点蓝
--  发布时间:2021/12/28 9:58:00
--  
输入焦点的问题,调换一下代码位置即可
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试 (1).zip



--  作者:z769036165
--  发布时间:2021/12/28 10:51:00
--  
可以了,非常感谢!