使用MID命令使用组合框和SQL进行筛选

使用MID命令使用组合框和SQL进行筛选,sql,database,vba,ms-access,Sql,Database,Vba,Ms Access,我已经试过了,试着让这段代码正常工作,但没有成功 代码应该选择与源代码具有相同产品代码部分的产品 Private Sub cmbSource_AfterUpdate() Dim Worktop As String If ProductType = 1 Then Worktop = "SELECT [products/stock].[Product Code], [products/stock].Description, [products/stock].[Stock Level] FROM

我已经试过了,试着让这段代码正常工作,但没有成功

代码应该选择与源代码具有相同产品代码部分的产品

Private Sub cmbSource_AfterUpdate()

Dim Worktop As String

If ProductType = 1 Then

Worktop = "SELECT [products/stock].[Product Code], [products/stock].Description, [products/stock].[Stock Level] FROM [products/stock] " & _
"WHERE Category = 'DPALRC' " & _
"AND Mid('[Product Code]',1,5) = Mid('" & Me.cmbSource.Value & "',1,5) " & _
"AND Mid('[Product Code]',9,6) = Mid('" & Me.cmbSource.Value & "',9,6) " & _
"ORDER BY [Product Code];"

Me.cmbResult.rowSource = Worktop
Me.cmbResult = vbNullString

End If
有什么想法吗

提前感谢,,
鲍勃P

这里只是一个猜测

Worktop = "SELECT ps.[Product Code], ps.Description, ps.[Stock Level]" & vbCrLf & _
"FROM [products/stock] AS ps" & vbCrLf & _
"WHERE ps.Category = 'DPALRC'" & vbCrLf & _
"AND Mid([Product Code],1,5) = '" & Mid(Me.cmbSource,1,5) & "'" & vbCrLf & _
"AND Mid([Product Code],9,6) = '" & Mid(Me.cmbSource,9,6) & "'" & vbCrLf & _
"ORDER BY ps.[Product Code];"
Debug.Print Worktop
转到即时窗口(Ctrl+g)并从那里复制语句。然后创建一个新的Access查询,切换到SQL视图,粘贴到语句文本中,然后运行它

如果我建议的代码没有返回您想要的结果,请向我们显示实际的SQL语句文本,并解释它的错误

Worktop = "SELECT [products/stock].[Product Code], [products/stock].Description, [products/stock].[Stock Level] FROM [products/stock] " & _
"WHERE Category = 'DPALRC' " & _
"AND Mid([Product Code],1,5) = Mid('" & Me.cmbSource.Value & "',1,5) " & _
"AND Mid([Product Code],9,6) = Mid('" & Me.cmbSource.Value & "',9,6) " & _
"ORDER BY [Product Code];"

这是我的更新版本,原来编码中唯一的错误是在
[产品代码]

周围有单引号。请确保为cmbResult组合框发出重新查询命令,否则它将不会更新项目。这种情况感觉像
[产品代码]
可能是某些类型的复合值,其部分可以拆分为单独的字段。这可以使搜索数据更容易。当您需要查看组装为
[产品代码]
的部件时,只需将它们组合在一个查询中即可。我同意Hans,但是这个数据库不是我自己设计的:(我被赋予它是为了尽可能地分解和理解,然后为另一种业务开发它。这意味着
[产品代码]
已经绑定到其他访问区域中的许多其他命令中,因此我无法将其分解:(。