如何使combox框的下拉框中的数据随输入而变换?(在线)

cqqjzb 2004-07-15 03:47:07
我有一个combox框,它的下拉框中的数据来自一个很大的员工表,如果只让它选择很麻烦,我想在输入一个数据的同时,它的下拉框中的数据能跟着变,例如:我输入"张"时,combox下拉框中只显示姓张的员工,请各位大侠帮帮忙
...全文
471 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zpsinz 2004-08-25
  • 打赏
  • 举报
回复
什么代码都不要写的。只要用企业版sp5的2.0(combo)控件就可以了。自带这一功能的。我用过很多次。
落伍者 2004-07-31
  • 打赏
  • 举报
回复
看楼主的要求
最简单的方法是将combobox绑定到一个记录集的员工姓名字段上。
blnInFind=false
sub Combo1_change()
if blnInFind=true then exit sub
blnInFind=true
rs.filter=""
rs.filter="员工姓名 like '%" combobox.text & "' "
'刷新combo,这个很久没有用你试试
combo1.refresh
blnInfind=false
end sub
chuting1 2004-07-31
  • 打赏
  • 举报
回复
在CSDN上搜索一下吧
pzlk 2004-07-25
  • 打赏
  • 举报
回复
试了一下,上面的方法好象不行

1.combobox中只能输入一个字符
2.并未检测出对应的符合条件的记录
northwolves 2004-07-25
  • 打赏
  • 举报
回复
sendmessage:

try:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Sub Combo1_Change()

combox1.Clear
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset

Dim iStart As Integer
Dim sString As String
Static iLeftOff As Integer

'cnn.Open ........ ' add your connectionstring
rst.Open "select DISTINCT [NAME] from employee where [NAME] like '" & Trim(combo1.Text) & "'%", cnn, 3, 3
Do While Not rst.EOF
combox1.AddItem rst.fields(0).Value
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Set cnn = Nothing


iStart = 1
iStart = combo1.SelStart

If iLeftOff <> 0 Then combo1.SelStart = iLeftOff: iStart = iLeftOff

sString = CStr(Left(combo1.Text, iStart))
combo1.ListIndex = SendMessage(combo1.hwnd, &H14C, -1, ByVal CStr(Left(combo1.Text, iStart)))

If combo1.ListIndex = -1 Then iLeftOff = Len(sString): combo1.Text = sString
If combo1.Text <> "" Then SendMessage combo1.hwnd, &H14F, True, 0

combo1.SelStart = iStart
combo1.SelLength = 0
iLeftOff = 0

End Sub

pzlk 2004-07-25
  • 打赏
  • 举报
回复
Employee:

name code

张三 ZS
张二 ZE
张一 ZY
李四 LS
王五 WW
如何在combobox中动态显示跟输入的code相近的name,并且输入的时候下拉框自动展开
pzlk 2004-07-25
  • 打赏
  • 举报
回复
上面的方法好象不行!
zcm123 2004-07-17
  • 打赏
  • 举报
回复

rs.open "select * from employeetable where employeename like '" & combox1.text & "%'"
chenyu5188 2004-07-15
  • 打赏
  • 举报
回复
同意楼上
LichKingSZ 2004-07-15
  • 打赏
  • 举报
回复
private sub combox1_change()
dim rs as adodb.recordset
...
combox1.clear
rs.open "select * from employeetable where employeename like '" & combox1.text & "'"
do while not rs.eof
combox.additem rs.fields(x).value
rs.next
loop
rs.close
set rs=nothing
...
end sub
zyguyue 2004-07-15
  • 打赏
  • 举报
回复
其实你输入张后,点开下拉,他自动也会定位到张打头的员工的
要实现你的目的,需要及时刷新下拉信息,重新传入条件查询数据库
很多公司是自己做了控件的来支持这种功能
yzd 2004-07-15
  • 打赏
  • 举报
回复
它有个属性,可以设置匹配类型

1,066

社区成员

发帖
与我相关
我的任务
社区描述
VB 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧