1

VBAとSQLを使用してAccessでクエリを実行する方法についてネットを検索していて、これを思いつきました。一般的な考え方は、コンボ ボックスから選択された値が、たとえば選択された ID に基づいてクエリを実行する必要があるということです。ユーザーは、companys テーブルで ID が 5 の会社を選択します。これにより、下のテキスト ボックスに関連データが入力されます。従業員の会社 ID = 5 の場合、この場合は asda で働いている場合、主キーとして CompanyID を使用して会社のテーブルと関係を持つ従業員データを含む別のテーブルもあります。何らかの理由で、このクエリを実行すると、関数の評価でエラーが発生した可能性があるというエラーが表示されます

Public Function DataLookup()
Dim CompDetailSQL As String
Dim rst As DAO.Recordset
Dim CompID As String
CompID = Me.lstBoxCompanyName.Value
CompDetailSQL = "SELECT Companies.CompanyID, Companies.CompanyName,       Companies.AddressNo, Companies.AddressLine1, Companies.AddressLine2, Companies.AddressLine3, Companies.AddressPostcode, Companies.AddressCounty, Link_Table.FirstName, Link_Table.LastName FROM Companies INNER JOIN Link_Table ON Companies.CompanyID = Link_Table.CompanyID WHERE " = CompID
Set rst = CurrentDb.OpenRecordset(CompDetailSQL, dbOpenSnapshot)
Me.lblAddressLine1.Value = rst!Companies.AddressLine1
Me.lblAddressLine2.Value = rst!Companies.AddressLine2
Me.lblAddressLine3.Value = rst!Companies.AddressLine3
Me.lblAddressPostcode.Value = rst!Companies.AddressPostcode
Me.lblAddressCounty.Value = rst!Companies.AddressCounty
rst.Close
Set rst = Nothing
End Function
4

2 に答える 2

2

ここに問題がある可能性があります...

CompDetailSQL = "SELECT ... WHERE " = CompID

エラーがスローされるかどうかに関係なく、そのWHERE句は必要なことを実行しないと思います。

コードが作成する完成した SQL ステートメントを調べる機会を自分に与えてください。後にこの行を含めますCompDetailSQL = ...

Debug.Print CompDetailSQL 

その後、コードを実行し、イミディエイト ウィンドウ ( Ctrl+ g) に移動して出力を表示します。ステートメント テキストをコピーして、テスト用に新しい Access クエリの SQL ビューに貼り付けることができます。

必要なクエリがある場合は、フィールド名でレコードセット フィールドを参照します。ソース テーブルの名前で修飾されていません。

'rst!Companies.AddressLine1
rst!AddressLine1

テキストボックスに入力すると言いました。lblAddressLine1が本当にテキスト ボックスである場合、これは機能するはずです...

Me.lblAddressLine1.Value = rst!AddressLine1

ただし、lblAddressLine1実際にラベル コントロールの場合は、.Caption代わりに.Valueプロパティを設定します。

Me.lblAddressLine1.Caption = rst!AddressLine1
于 2013-09-23T17:02:59.550 に答える
1

乾杯みんなの問題が解決しました。SQL クエリ自体は、アクセス クエリの設計では実行されません。

CompDetailSQL = "SELECT Companies.CompanyID, 
Companies.CompanyName, 
Companies.AddressNo, 
Companies.AddressLine1, 
Companies.AddressLine2, 
Companies.AddressLine3, 
Companies.AddressPostcode, 
Companies.AddressCounty,
Link_Table.FirstName, 
Link_Table.LastName
FROM Companies 
INNER JOIN 
Link_Table ON Companies.CompanyID = Link_Table.CompanyID 
WHERE Companies.CompanyID = " & Me.lstBoxCompanyName.Value

ただし、上記のクエリは機能しましたが、解決された問題が見つからなかったようでCompanies.CompanyID、新しい問題が発生しました。しかし、まったく別の質問です。助けてくれてありがとう@hansUp @bamie9l

于 2013-09-24T14:02:33.313 に答える