Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

在于弹窗筛选客户资料问题

子煜  发表于:2011-12-16 16:52:12  
复制

详见附档,谢谢!

 

点击下载此附件

 

Top
煮茶论道 发表于:2011-12-16 19:59:33
子煜 发表于:2011-12-16 20:21:32

我要的不是这个效果啊?

我想要弹窗,并且可以在弹窗里模糊查询到需要的记录,然后双击加进来。。

你这个还是要拉滚动条找啊。。



子煜 发表于:2011-12-16 20:43:59

如下图效果,点击客户编号框旁边的按钮,弹出客户名称窗口,然后可以在里面模糊查询到客户。。

比如查找可以输入编号,也可以输入客户名称包含的内容,然后点查找,就可以定位到,然后双击记录,加入当前窗口。。

不知这样在ACCESS里可否实现。

 

 



lyxiong 发表于:2011-12-16 21:45:16

1、新建一模块

Option Compare Database

Public Function ComboBoxKeyPress(KeyAscii As Integer) As String
'调用方法  在组合框的keypress方法中加入:
'--------------------------------------------
'    If ComboBoxKeyPress(KeyAscii) <> "" Then KeyAscii = 0
'--------------------------------------------
On Error GoTo Err
Dim I As Integer
With Screen.ActiveControl
    If .ControlType = acComboBox And (KeyAscii >= Asc("a") And KeyAscii <= Asc("z")) Then
    '只能由组合框输入小写字母时调用
        ComboBoxKeyPress = Nz(HZPY(Left(.Text, .SelStart))) & Chr(KeyAscii)
        While HZPY(Left(.ItemData(I), .SelStart + 1)) <> ComboBoxKeyPress And I < .ListCount - 1
            I = I + 1
        Wend
        If I <> .ListCount And Mid(.ItemData(I), .SelStart + 1, 1) <> Chr(KeyAscii) Then
            ComboBoxKeyPress = Left(.ItemData(I), .SelStart + 1)
            .Value = Null
            SendKeys ComboBoxKeyPress
        Else
            ComboBoxKeyPress = ""      '为英文时不代换,否则会进入死循环
        End If
    End If
End With
Exit Function
Err:
    ComboBoxKeyPress = ""
End Function

Function HZPY(hzstr As String) As String
Dim p0 As String, C As String, str As String
Dim I As Integer, J As Integer
p0 = "吖八嚓咑妸发旮铪讥讥咔垃呣拿讴趴七呥仨他哇哇哇夕丫匝咗"
For I = 1 To Len(hzstr)
    C = "z"
    str = Mid(hzstr, I, 1)
    If Asc(str) > 0 Then
        C = str
    Else
        For J = 1 To 26
            If Mid(p0, J, 1) > str Then
                C = Chr(95 + J)
                Exit For
            End If
        Next
    End If
    HZPY = HZPY + C
Next
End Function

 

2、客户名称文本框改为组合框,控件来源设为未绑定,行来源写入代码:SELECT 客户表.Cust_Name FROM 客户表;

3、客户名称组合框击键事件过程写入事件代码:

Private Sub 客户名称_KeyPress(KeyAscii As Integer)
If ComboBoxKeyPress(KeyAscii) <> "" Then KeyAscii = 0
End Sub

 

请在客户名称组合框中试试用拼音输入要查找的客户名称,如:hs 它会自动显示:黄山

 

 



lyxiong 发表于:2011-12-16 21:48:22
http://accessoft.com/blog/article-show.asp?userid=2790&Id=5807   里面也有这方面的例子可以参考一下。

子煜 发表于:2011-12-19 08:33:10

谢谢Lyxiong

但是我要以客户编号为主字段查询,因为客户编号才是唯一值,利用选择客户编号,然后带出客户名称及地址。这个怎么解决呢?



子煜 发表于:2011-12-19 09:28:05

我想要的是这样效果,点击客户编号旁边的按钮,弹出选择窗口,可以模糊查询任意列,查询到后双击记录,可以加入到当前窗口对应的栏。

 

 

 

点击下载此附件

网行者 发表于:2011-12-19 21:18:26
网行者 发表于:2011-12-19 21:24:12

双击客户编号,可以加入到当前窗口对应的栏

 

点击下载此附件

总记录:9篇  页次:1/1 9 1 :