以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  多个下拉组合框如何一次同时输入信息  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=123148)

--  作者:whx007
--  发布时间:2018/8/8 22:06:00
--  多个下拉组合框如何一次同时输入信息

如图,客户名称和客户电话两个下拉组合框都绑定一个下拉窗口“客户信息”,当选择一行客户信息时,如何一次实现同时向这两个下拉框写入客户名称和客户电话。


图片点击可在新窗口打开查看此主题相关图片如下:下拉.jpg
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2018/8/8 22:11:00
--  

比如

 

forms("窗口1").controls("TextBox1").Text = 表格.current("客户名称")

forms("窗口1").controls("TextBox2").Text = 表格.current("客户电话")


--  作者:whx007
--  发布时间:2018/8/8 22:48:00
--  

好的,谢谢


--  作者:whx007
--  发布时间:2018/8/8 23:33:00
--  

DropDownClosed:

If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("客户信息_Table1")
    If tbl.Current IsNot Nothing Then
        e.Form.DropDownBox.Value = tbl.Current("客户电话")
        Forms("订单新增").Controls("DropBox3").Text = tbl.Current("客户名称")

            If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的
            e.Form.DropTable.FinishEditing()
        Else \'如果是通过窗口下拉的
            e.Form.DropDownBox.WriteValue()
        End If
    End If
End If

双击的时候,有时出现只有客户电话能输入,客户名称不能。


--  作者:有点甜
--  发布时间:2018/8/9 9:16:00
--  

Forms("订单新增").Controls("DropBox3").Text = tbl.Current("客户名称")

Forms("订单新增").Controls("DropBox3").WriteValue


--  作者:whx007
--  发布时间:2018/8/9 21:28:00
--  

代码改后仍然有问题:

If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("客户信息_Table1")
    If tbl.Current IsNot Nothing Then
        e.Form.DropDownBox.Value = tbl.Current("客户电话")
        Forms("订单新增").Controls("DropBox3").Text = tbl.Current("客户名称")
        \'e.Form.DropDownBox.Value = tbl.Current("客户电话")
        If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的
            e.Form.DropTable.FinishEditing()
        Else \'如果是通过窗口下拉的
            e.Form.DropDownBox.WriteValue()
            Forms("订单新增").Controls("DropBox3").WriteValue()
        End If
    End If
End If

 

改成以上代码后,出现客户电话和客户名称不对应的问题,当选择客户电话后,客户名称出来的是上一次记录的客户名称:


此主题相关图片如下:tim截图20180809150838.jpg
按此在新窗口浏览图片


 

现在是客户名称绑定到销售订单.客户名称,客户电话绑定到销售订单.客户电话,而下拉窗口都绑定了“客户信息”下拉窗口,TextChanged、Validating,KeyPress,KeyDown代码都相同:

TextChanged:

Dim drp As WinForm.DropDownBox = e.sender
If drp.DroppedDown Then \'如果下拉窗口已经打开
    Dim tbl As Table = Tables("客户信息_Table1")
    If drp.Text = "" Then \'如果内容为空
        tbl.Filter = "" \'显示所有客户
    Else \'否则根据输入内容进行模糊筛选
        Dim txt As String = "\'%" & drp.Text & "%\'"
        tbl.Filter = "客户电话 Like " & txt  & " Or 客户名称 Like " & txt
    End If
End If

 

Validating:

Dim drp As WinForm.DropDownBox = e.sender
If drp.DroppedDown Then \'如果下拉窗口已经打开
    drp.CloseDropdown(False) \'关闭下拉窗口
End If

 

KeyPress:

Dim drp As WinForm.DropDownBox = e.Sender
If drp.DroppedDown = False \'如果下拉窗口没有打开
    drp.OpenDropDown() \'打开下拉窗口
End If

 

KeyDown:

Dim drp As WinForm.DropDownBox = e.sender
If drp.DroppedDown Then \'如果下拉窗口已经打开
    Dim tbl As Table = Tables("客户信息_Table1")
    If e.KeyCode = Keys.Up Then \'如果按下的是上箭头按键
        tbl.Position = tbl.Position - 1 \'向上移动一行
        e.Cancel = True
    ElseIf e.KeyCode = Keys.Down Then \'如果按下的是下箭头按键
        tbl.Position = tbl.Position + 1 \'向下移动一行
        e.Cancel = True
    End If
End If

[此贴子已经被作者于2018/8/9 21:30:52编辑过]

--  作者:有点甜
--  发布时间:2018/8/9 21:35:00
--  
If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("客户信息_Table1")
    If tbl.Current IsNot Nothing Then
        Systemready = False
        e.Form.DropDownBox.Value = tbl.Current("客户电话")
        Forms("订单新增").Controls("DropBox3").Text = tbl.Current("客户名称")
        Forms("订单新增").Controls("DropBox3").WriteValue()
       
        If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的
            e.Form.DropTable.FinishEditing()
        Else \'如果是通过窗口下拉的
            e.Form.DropDownBox.WriteValue()
        End If
        Systemready = True
    End If
End If

--  作者:whx007
--  发布时间:2018/8/9 23:33:00
--  

甜老师,客户名称有时候还是会错乱。

还有一个问题,如果暂停执行事件代码,客户购买记录窗口当选择了客户电话或者客户名称就不会有购买记录出来。

我上传了实例,请帮忙看看,谢谢!

[此贴子已经被作者于2018/8/10 19:14:52编辑过]

--  作者:有点甜
--  发布时间:2018/8/10 9:09:00
--  
If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("客户信息_Table1")
    If tbl.Current IsNot Nothing Then
        If e.Form.DropDownBox.name = "dropbox1" Then
            e.Form.DropDownBox.Value = tbl.Current("客户电话")
            e.Form.DropDownBox.WriteValue()
            Forms("订单新增").Controls("DropBox3").Text = tbl.Current("客户名称")
            Forms("订单新增").Controls("DropBox3").WriteValue()
        ElseIf e.Form.DropDownBox.name = "dropbox3" Then
            e.Form.DropDownBox.Value = tbl.Current("客户名称")
            e.Form.DropDownBox.WriteValue()
            Forms("订单新增").Controls("DropBox1").Text = tbl.Current("客户电话")
            Forms("订单新增").Controls("DropBox1").WriteValue()
           
        End If
    End If
End If

--  作者:whx007
--  发布时间:2018/8/10 19:10:00
--  

搞定了,谢谢甜老师