0

我需要根据当前记录 [AllocID] 的 IDKey 过滤组合框的可用选项

在组合框的 Rowsource 中直接尝试各种版本的 WHERE 子句未成功后,我遇到了一个解决方案,建议我在表单的 On Current 事件中设置行源:

Private Sub Form_Current()
MSMgeID.RowSource = "SELECT[MSMge].[PrjID] ... FROM MSMge WHERE [PrjID] ='" & Me.AllocID & " '"
End Sub

[PrjID] 和 [AllocID] 都是 Long Integer 类型的数字字段,但我得到“标准表达式中的数据不匹配”。

我在我的 SQL 语法中所做的事情是否将其中一个字段混淆为文本?

4

1 回答 1

1

试试这个:

MSMgeID.RowSource = "SELECT [MSMge].[PrjID] ... FROM MSMge WHERE [PrjID] =" & CStr(Me.AllocID) 

这是一个解释:

正如 OP 所说,[MSMge].[PrjID] 和 Me.AllocID 都是数值。Where [PrjID] = '<some value>'因此,我们需要使用函数将Me.AllocIDVB 代码转换为字符串,而不是使用(这将触发 Access 中的类型不匹配错误)。CStr()上面的语句将被翻译成Where [PrjID] = <some numeric value>(注意我已经去掉了单撇号)

于 2013-02-27T03:15:30.913 回答