|
本帖最后由 todaynew 于 2010-10-22 14:22 编辑
我们习惯上常用几个组合框构成联级筛选,联级筛选的基本原理就是用其他组合框的控件值,来改变需要筛选的组合框行来源的SQL语句。从这个原理出发,只要我们能获得本组合框输入的数据,那么就可以利用这些数据对组合框进行自筛选。
要达成这样一个自筛选的效果,需要用到的是组合框的【不在列表中】事件,在这个事件中有两个参数其一名曰NewData,其二名曰 Response 。其中NewData就是输入时不在列表中的那个值,我们便可以用这个值来构造Where子句。这样我们就可以不拖出去枪毙,就地正法即可了。
Private Sub Form_Load()
Dim ssql As String
ssql = "SELECT cpk.产品编号, '名称:' & [产品名称及规格] & ' 颜色:' & [颜色] & ' 单位:' & [单位] AS 品名 FROM cpk"
Me.产品编号.RowSource = ssql
End Sub
Private Sub 产品编号_AfterUpdate()
Dim ssql As String
ssql = "SELECT cpk.产品编号, '名称:' & [产品名称及规格] & ' 颜色:' & [颜色] & ' 单位:' & [单位] AS 品名 FROM cpk"
Me.产品编号.RowSource = ssql
Me.进货数量.SetFocus
End Sub
Private Sub 产品编号_NotInList(NewData As String, Response As Integer)
Dim ssql As String
Dim WH As String
Response = acDataErrContinue
ssql = "SELECT cpk.产品编号, '名称:' & [产品名称及规格] & ' 颜色:' & [颜色] & ' 单位:' & [单位] AS 品名 FROM cpk"
WH = " Where instr([产品名称及规格] & [颜色] & [单位],'" & NewData & "')>0"
Me.产品编号.RowSource = ssql & WH
If Me.产品编号.ListCount = 1 Then
Me.产品编号.Value = Me.产品编号.Column(0, 0)
ssql = "SELECT cpk.产品编号, '名称:' & [产品名称及规格] & ' 颜色:' & [颜色] & ' 单位:' & [单位] AS 品名 FROM cpk"
Me.产品编号.RowSource = ssql
Me.进货数量.SetFocus
Else
Me.产品编号.Dropdown
End If
End Sub
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|