0

現在のレコード [AllocID] の IDKey に従って、コンボボックスの利用可能なオプションをフィルタリングする必要があります。

コンボボックスの行ソースでさまざまなバージョンの WHERE 句を直接試して失敗した後、次のフォームの On Current イベントで行ソースを設定することを提案する解決策に出会いました。

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

[PrjID] と [AllocID] はどちらも長整数型の数値フィールドですが、「条件式でデータが一致しません」というメッセージが表示されます。

SQL 構文で、フィールドの 1 つをテキストとして混同していることはありますか?

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>'(Access で型の不一致エラーが発生する) を使用する代わりにMe.AllocID、関数を使用して VB コードで文字列にキャストする必要がありCStr()ます。上記のステートメントは次のように変換されますWhere [PrjID] = <some numeric value>(単一のアポストロフィを削除したことに注意してください)。

于 2013-02-27T03:15:30.913 に答える