北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |
Private mblnAfterUpdate As Boolean '是否已经触发了更新后事件标志
Private Sub Combo0_BeforeUpdate(Cancel As Integer)
End Sub
Private Sub Combo0_Change()
If mblnAfterUpdate Then
'如果是在“更新后”事件之后触发的“更改”事件,需要加载所有数据,以确保能正常显示,
'否则当绑定列和显示的列不是同一字段的时候,会造成实际是有值的,但是显示的是空的
Me.Combo0.RowSource = " SELECT MSysObjects.id, MSysObjects.name FROM MSysObjects WHERE TYPE=1 AND FLAGS=0 ORDER BY name"
mblnAfterUpdate = False '然后再恢复标志变量
Else
'正常输入触发“更新后”事件时,根据当前输入的文字,对其进行模糊查询
'这里要注意3点:
'1. 需要用Text属性才能正确取得输入的文字内容,因为这时值还未更新,所以不能使用Value属性
'2.
Me.Combo0.RowSource = " SELECT MSysObjects.id, MSysObjects.name FROM MSysObjects " _
& " WHERE name Like '*" & Trim(Replace(Me.Combo0.Text, "'", "''")) & "*'" _
& " OR HZPY(name) Like '*" & HZPY(Trim(Replace(Me.Combo0.Text, "'", "''"))) & "*'" _
& " ORDER BY name"
Me.Combo0.Dropdown
End If
End Sub
'这里的“获得焦点”事件不是必需的,但是在某些情况下不用它,会造成有值但显示为空的情况
Private Sub Combo0_GotFocus()
Me.Combo0.RowSource = " SELECT MSysObjects.id, MSysObjects.name FROM MSysObjects"
End Sub
Private Sub Combo0_AfterUpdate()
'因为“更新后”事件触发之后,还会触发“更改”事件的原因,造成更新后又会进行模糊查询,
mblnAfterUpdate = True
End Sub
'在按上、下箭头键时禁用查询功能,因为这个时候我们需要的是在列表中选择列表项
Private Sub Combo0_KeyDown(KeyCode As Integer, Shift As Integer)
EnabledComboSearch Me.Combo0, KeyCode, Shift
End Sub
我已经写好了一个查询表名的代码,但怎么设置,当我选中一个表名后,自动在子窗口,弹出它对应的表的数据(如下图)