• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access クエリのフィールドに他のクエリの複数条件を満たすレコードの項目を表示させる)

Accessクエリで他のクエリの条件を満たすレコードの項目を表示する方法

このQ&Aのポイント
  • Accessのクエリで、あるフィールドに他のクエリの特定の条件を満たすレコードの項目を表示する方法を教えてください。
  • 具体的には、データ元とするクエリの構成と組みたいクエリの構成を説明しました。
  • DLookupを使用する方法についても考えましたが、うまくいきません。初心者なので、詳しい方法を教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.1

クエリ1: ID_社員番号_時間帯別業務内容_業務割合 _1______101_業務内容_A_____________50 _2______101_業務内容_B_____________50 _3______102_業務内容_A_____________20 _4______102_業務内容_B_____________80 クエリ2: 社員番号_業務内容_Aの割合_業務内容_Bの割合 _____101_______________50_______________50 _____102_______________20_______________80 SELECT クエリ1.社員番号, DBLookup("SELECT 業務割合 FROM クエリ1 WHERE 社員番号=" & [社員番号] & " AND 時間帯別業務内容='業務内容_A'") AS 業務内容_Aの割合, DBLookup("SELECT 業務割合 FROM クエリ1 WHERE 社員番号=" & [社員番号] & " AND 時間帯別業務内容='業務内容_B'") AS 業務内容_Bの割合 FROM クエリ1 GROUP BY 社員番号 ORDER BY 社員番号; まあ、確かに関数などを使えばかかる芸当も簡単に実現できます。 しかし、この類の整形表示をやってみせると色々と後々のメンテナンスも大変かと思います。 ところで、Dlookup()は少し処理速度に問題があります。 ですから、次のような DBLookup関数を用いた方が処理は快適です。 なお、SQL文での正規表現を志すのであれば、こういう安直な方法は避けるべきかも知れません。 Public Function DBLookup(ByVal strQuerySQL As String) As Variant On Error GoTo Err_DBLookup   Dim DataValue   Dim rst As ADODB.Recordset   Set rst = New ADODB.Recordset   With rst     .Open strQuerySQL, _        CurrentProject.Connection, _        adOpenStatic, _        adLockReadOnly     If Not .BOF Then       .MoveFirst       DataValue = .Fields(0)     End If   End With Exit_DBLookup: On Error Resume Next    rst.Close    Set rst = Nothing    DBLookup = DataValue    Exit Function Err_DBLookup:    MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & Err.Description & Chr$(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"    Resume Exit_DBLookup End Function

sugiyam0
質問者

お礼

連絡が遅れ申し訳ありません。 本当に丁寧な回答をしていただき非常に助かりました。 (若干私にはレベルが高くて苦労しましたが・・・。) ご指摘の通りもっとデータベースらしい?使い方ができるように心がけねばなりませんね。 ありがとうございました!

関連するQ&A