No.4ベストアンサー
- 回答日時:
VBによるSQLの結果の取得について勘違いされているようなので最初から整理します。
1.SQL文は、VBの文字列である必要があります。
2.SQL文の中で使用するフィールド名、テーブル名は、実際のデータベースに存在する必要があります。
3.1度のSELECT文の発行で、1つのRecordsetのみ取得することができます。
です。
>rs1は複数件の結果を返します。
ということは、3に引っかかりますよね。
つまり、考えられる組み合わせの回数分SELECT文を発行してRecordsetを取得する必要があります。
>それと副問合わせというものはどういうことですか?
副問い合わせというのは、1つのSQLの中でSELECT文で抽出した結果を使用して別の結果を取得したりレコードを更新したりすることです。
詳しくはこちらをどうぞ。
http://www.atmarkit.co.jp/fnetwork/rensai/sql07/ …
ただし、今回のようにテーブル名やフィールド名が格納されているテーブルの内容を元に副問い合わせを行うことはできません。
No.3
- 回答日時:
>指摘されたとおりにSQL文を書き直しましたが、やはりレコードセットを取得できません。
FROM句や、WHERE句も直しましたか?
もしかして、rs1は複数件の結果を返すなんてことありませんか?
No.2
- 回答日時:
>sql3 = " SELECT rs1![a], rs1![b], rs2![a], rs2![b] "
SQL文字列の中に、”rs1![a]”はだめです。
sql3 = " SELECT " & rs1![a] & ", " & rs1![b] & ", " & rs2![a] & ", " & rs2![b]
のように、レコードセットの中身の文字列を取り出してSQL文を作成してください。
この回答への補足
指摘されたとおりにSQL文を書き直しましたが、やはりレコードセットを取得できません。いろいろ考えたあげくINSERT INTOを使い空のテーブルを作ってレコードを代入し、再びSQLでレコードセットを作るというようにしました。他に構文に誤りはないでしょうか?
補足日時:2002/07/15 03:40No.1
- 回答日時:
VBで書くということは、sqlを書いてレコードセットを開くということなんでしょうか?最終クエリーがどうなってるのかがわかりませんが、4つのテーブルから副問合せを使ってsqlをつくり、それをレコードセットで開くというのではダメなのでしょうか。
最終クエリーというのがどのようなものか、教えてください。
この回答への補足
sqlを使ってレコードセットを開きます。
まず1つめのクエリーは----
Dim cn1 As ADODB.Connection
Dim rs1 As ADODB.Recordset
Dim sql1 As String
Set cn1 = CurrentProject.Connection
sql1 = " SELECT A.[a], A.[b], B.[a], B.[b]" _
& " FROM A INNER JOIN B ON A.[a] = B.[b]) " _
& " WHERE A.[b] = me!ID; " _
Set rs1 = New ADODB.Recordset
rs1.Open sql1, cn1, adOpenKeyset, adLockOptimistic
2つめは----
Dim cn2 As ADODB.Connection
Dim rs2 As ADODB.Recordset
Dim sq2 As String
Set cn2 = CurrentProject.Connection
sql2 = "SELECT C.[a], C[b], D.[a], D[b] " _
& "FROM C INNER JOIN D ON C.[a] = D.[b]; "
Set rs2 = New ADODB.Recordset
rs2.Open sql2, cn2, adOpenKeyset, adLockOptimistic
最終のつもりなんですが------
Dim cn3 As ADODB.Connection
Dim rs3 As ADODB.Recordset
Dim sql3 As String
Dim str As String
Set cn3 = CurrentProject.Connection
sql3 = " SELECT rs1![a], rs1![b], rs2![a], rs2![b] " _
& " FROM rs2 LEFT JOIN rs1 ON rs2![a] = rs1![b] " _
& " WHERE rs1![a] = 1 _
& " ORDER BY rs2![a] ; "
Set rs3 = New ADODB.Recordset
rs3.Open sql3, cn3, adOpenKeyset, adLockOptimistic
sql自体はここに書いたものはいいかげんですが、まわりの構文はそのまま写しました。sql自体をいじらなければならないのであれば勉強し直しですが、構文にミスがあるのであれば教えてください。sqlはクエリーをアクセスで構築し、動作確認の後sql表示をコピーしました。それと副問合わせというものはどういうことですか?なにもわからないので恐縮なのですが詳しく教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Excel(エクセル) Excel Powerクエリーの質問、行数指定は可能でしょうか? 2 2022/08/22 12:54
- Access(アクセス) Access で半角スペースと全角スペースの区別について 3 2022/11/05 23:54
- Excel(エクセル) Excel Powerクエリーの質問。あるクエリに一致する行だけ除外できますか? 1 2022/08/22 13:48
- Excel(エクセル) PowerQueryで行数の指定はできますか? 2 2022/08/26 11:13
- Excel(エクセル) Powerクエリーの更新完了までの時間計測の方法? 2 2022/10/17 11:45
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
- Access(アクセス) Accessに関する質問です。 クエリーQ出勤 からフォームF出勤を作成 フォームは分割フォームで作 1 2023/05/26 08:57
- その他(SNS・コミュニケーションサービス) 知恵袋もここも、クエリーやテルミーみたいに無くなれば良いのに。そう思わない? 2 2022/06/07 17:35
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
警察はスマホに保存した動画や...
-
エクセルのフィルタ抽出が固まる
-
ACCESSのSQLで、NULLかNULLでな...
-
Accessフォームからパラメータ...
-
Accessを開きなおすとテキスト...
-
DocuWorksでの印刷
-
Accessのフォームへ、記録者の...
-
Access クエリ上で表示させた割...
-
CSVファイルでテキストの改行の...
-
SQLで任意の列の最大値の定数は...
-
シートが異なるセル同士を、相...
-
構文エラー:演算子がありませ...
-
FROM句の構文エラー ACCESS SQL
-
AccessのSQLで、FROM句の構文エ...
-
顧客データベースを作る場合、...
-
「1004:アプリケーション定義...
-
Accessのリンクテーブルについて
-
Access Nz関数の合計値の小数点...
-
最新の日付とその金額をクエリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のクエリーをVBで書く方法...
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
【VB】コンボボックスにデータ...
-
VBとアクセスでSQL文に変...
-
accessでフィールド追加のあと...
-
Accessのフィールド名に半角括...
-
vba フィルター 複数条件 3つ以...
-
【C#】textBoxの指定行のデータ...
-
Accessで別mdbのテーブルをコピー
-
VBAでアクセスDBからデータの取...
-
ファイル名の一部削除について
-
EXCELのVBAでLenB関数について
-
『列名 '担当者CD' があいま...
-
INT64対応のprintf系関数はあり...
-
テキストファイルのフィールド...
-
「Nullの使い方が不正です」の...
-
2つ目のレコードの値を取得す...
-
DataTableに特定のフィールドが...
-
XMLでデータとして画像を指定す...
おすすめ情報