こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access SQL パラメータクエリ(DAO)

Access初心者で、独学で頑張っています。
どうしても一人で解決できないので、教えてください。

下記のようなコードを書きましたが、#1で 『PARAMETER句の構文エラーです』 となります。


Dim qd As DAO.QueryDef
Dim rs3 As DAO.Recordset
Dim mySQL As String

Set qd = CurrentDb.CreateQueryDef("")

mySQL = "PARAMETERS [ParaヘッダーID] COUNTER;"

mySQL = mySQL & "SELECT [テーブルA].[明細ID], [テーブルA].[ヘッダーID] " _
& "FROM テーブルA " _
& "WHERE ((([テーブルA].[ヘッダーID])='ParaヘッダーID'));"

With qd
.SQL = mySQL   ' #1 ここで『PARAMETER句の構文エラーです』 となる
.Parameters("ParaヘッダーID") = [TempVars]![tempヘッダーID]
Set rs3 = .OpenRecordset()
End With

(この後、処理を続ける)

やりたいことは、
「テーブルA」から、「ヘッダーID」が一時変数[TempVars]![tempヘッダーID]と一致するデータを抜き出し、後続の処理に使いたいのです。
なお、ヘッダーIDは長整数型で、[TempVars]![tempヘッダーID]をウォッチで確認すると整数が入っていました。

SQLについて、いろいろ調べて試しましたが、なかなか上手く行きません。

どこが違うのかご教授お願いします。

投稿日時 - 2013-04-12 14:51:20

QNo.8039646

困ってます

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

> PARAMETERS [ParaヘッダーID] COUNTER;

下記サイトを見た感じ、「COUNTER」が意味不明のような。
パラメータの型を指定するので、「Long」では。

http://office.microsoft.com/ja-jp/access-help/HP001032260.aspx?CTT=5&origin=HP001032250
http://msdn.microsoft.com/ja-jp/library/office/ff193793.aspx

あと、クエリもちょいとおかしい感じがするので、まずはAccessのクエリ作成画面を使ったほうが学習しやすいと思います。

投稿日時 - 2013-04-14 13:11:47

お礼

osamuyさん、ありがとうございます。

パラメータの型は、
http://www.nurs.or.jp/~ppoy/access/access/acEt019.html
このサイトを見て、いろいろ試してたうちの1つでした。
確かに、Longが正解でした。
また、クエリは、作成画面からSQLビューを使ったのですが、よくわからないままでした。

インターネットで調べては、コピペしながら作っているので、意味も分からず書いているコードも多々ある状況です。
今回は、osamuyさんの助言のおかげで、再度いろいろ調べて試して、やっと、この部分は解決できました。
(この先、行き詰まったら、また質問投稿させてもらいます)

一応、自分の覚書のためにも、コードを載せておきます。

助言頂き、本当にありがとうございました。


Dim qd As DAO.QueryDef
Dim rs3 As DAO.Recordset
Dim mySQL As String

mySQL = "PARAMETERS [ParaヘッダーID] Long;"

mySQL = mySQL & "SELECT [明細ID], [ヘッダーID] " _
& "FROM [テーブルA] " _
& "WHERE [ヘッダーID]=[ParaヘッダーID];"

Set qd = db.CreateQueryDef("", mySQL)

qd.Parameters("ParaヘッダーID") = [TempVars]![tempヘッダーID]

Set rs3 = qd.OpenRecordset()

投稿日時 - 2013-04-17 09:45:30

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問