以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]自定义录入界面的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=41079)

--  作者:hzcaqjf
--  发布时间:2013/10/10 21:15:00
--  [求助]自定义录入界面的问题
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:录入界面.table


如果收款人对应多个账号
在前几行,录入收款人后,按enter健,自动录入(窗口2)同一行收款人账号.
而在后几行(大于500行),录入收款人后,按enter健,录入的却是(窗口2)后一行账号(相同收款人).
[此贴子已经被作者于2013-10-10 21:15:42编辑过]

--  作者:有点甜
--  发布时间:2013/10/10 21:25:00
--  
 我测试了一下,正确,都是自动录入选中行的数据的啊。
--  作者:hzcaqjf
--  发布时间:2013/10/10 21:32:00
--  
输入"zjsd"按向下键选取539号行试试
如果下一行收款人不同,都能正确录入选定行(账号)数据;
如果下一行收款人相同,前几行ID号,也能正确录入选定行(账号)数据;
                             大于500行ID号,就跳到下一行(账号)数据;

[此贴子已经被作者于2013-10-10 21:42:48编辑过]

--  作者:sunsenfeng
--  发布时间:2013/10/10 21:34:00
--  

看了一下,没有错行啊

 


--  作者:hzcaqjf
--  发布时间:2013/10/10 21:46:00
--  
1:注意(窗口2)中选定行的下一行收款人是否相同.
2:注意ID是否大于500号.

--  作者:有点甜
--  发布时间:2013/10/10 22:03:00
--  
 测试了一下,是按下回车键选择的时候才出错的吧?

 用下面的代码就行了。原因是:执行e.Text = t.Current("收款人")时,触发了changeedit事件,重新筛选,导致current改变。

If e.Col.Name = "收款人"  Then
    Forms("窗口2").Open()
    Dim t As Table = Tables("窗口2_Table1")
    If e.keycode = keys.Down
        t.position = t.Position +1
        e.Cancel = True
    ElseIf e.keycode = keys.up
        t.position = t.Position -1
        e.Cancel = True
    ElseIf e.Keycode = keys.Enter And t.Current IsNot Nothing
        e.Row("收款人账号") = t.Current("收款人账号")
        e.Row("收款人开户银行") = t.Current("收款人开户银行")
        e.Row("省") = t.Current("省")
        e.Row("ID") = t.Current("ID")
        e.Text = t.Current("收款人")
        Forms("窗口2").close()
    End If
End If

--  作者:hzcaqjf
--  发布时间:2013/10/10 22:20:00
--  
有点甜老师,真是佩服,这样的问题也能迅速解决,谁会想到是e.text触发了ChangEdit事件.
真的很谢谢您.