dポイントプレゼントキャンペーン実施中!

EXCELのSQL文で下記にてAccessのテーブルから取得中ですが
mySQL = "SELECT 流通システム.協力者, 流通システム.ファイルパス, 流通システム.出品者へ入金 FROM 流通システム " & _
"WHERE(((流通システム.入金日)>=#" & orderDate & "#) AND ((流通システム.入金日)<=#" & shipDate & "#));"

下記にすると動きません
mySQL = "SELECT 流通システム.協力者, 流通システム.ファイルパス, 流通システム.出品者へ入金 FROM 流通システム " & _
"WHERE(((流通システム.入金日)>=#" & orderDate & "#) AND ((流通システム.入金日)<=#" & shipDate & "#)) AND ((流通システム.協力者 =" & TextBox1 & ")) ;"


協力者を追加したいのですが上記じゃ駄目みたいです
1つ以上の必要なパラメータの値が設定されていません
と出ます

大分はまっていしまいくたくたです
分かる方、急ぎでおしえてください

A 回答 (2件)

mySQL = "SELECT 流通システム.協力者, 流通システム.ファイルパス, 流通システム.出品者へ入金 FROM 流通システム " & _


"WHERE(((流通システム.入金日)>=#" & orderDate & "#) AND ((流通システム.入金日)<=#" & shipDate & "#));"

上記でパラメータを要求されていないということは
関数で「orderDate」、「shipDate」をSQLに渡して
いるのだろうと思いますが、

mySQL = "SELECT 流通システム.協力者, 流通システム.ファイルパス, 流通システム.出品者へ入金 FROM 流通システム " & _
"WHERE(((流通システム.入金日)>=#" & orderDate & "#) AND ((流通システム.入金日)<=#" & shipDate & "#)) AND ((流通システム.協力者 =" & TextBox1 & ")) ;"

では、「TextBox1」はユーザーフォームに設定
されたテキストボックスであるならば、これは
VBAの中でパラメータを設定してSQL文に渡す
必要があります。


たとえば、ユーザーフォームにコマンドボタンと
テキストボックスを設定します。コマンドボタンの
クリック時のイベントで以下のようにします。
「orderDate」と「shipDate」はどのように
設定しているのかわからないので、VBAの中で
設定しておくことにします。
ADOを使っているのでコード表の参照設定でADOにチェックを
入れておいてください。以下のような感じです。
Microsoft ActiveX Data Objects xx Library

AccessファイルはExcelと同じディレクトリに
あるものとします。


Private Sub CommandButton1_Click()
Dim myCon As New ADODB.Connection
Dim myCmd As New ADODB.Command
Dim myRS As New Recordset
Dim FileName As String
Dim strSQL As String
Dim orderDate As Date
Dim shipDate As Date
Dim param As ADODB.Parameter


orderDate = "2011/01/01"
shipDate = "2011/01/31"

strSQL = "SELECT 流通システム.協力者, 流通システム.ファイルパス, 流通システム.出品者へ入金 FROM 流通システム " & _
"WHERE(((流通システム.入金日)>=#" & orderDate & "#) AND ((流通システム.入金日)<=#" & shipDate & "#)) AND ((流通システム.協力者 =" & TextBox1 & ")) ;"


FileName = ThisWorkbook.Path & "\sample.mdb"
myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FileName

With myCmd
.ActiveConnection = myCon
.CommandText = strSQL
End With

'----パラメータの設定------
Set param = New ADODB.Parameter
Set param = myCmd.CreateParameter("協力者", adVarChar, adParamInput, 30)
myCmd.Parameters.Append param
myCmd.Parameters("協力者") = TextBox1
'----ここまで----複数ある場合は同じように設定します。

Set myRS = myCmd.Execute
Worksheets("Sheet1").Range("A1").CopyFromRecordset myRS

Set myCmd = Nothing
myRS.Close: Set myRS = Nothing
myCon.Close: Set myCon = Nothing
End Sub
    • good
    • 0

"WHERE(((流通システム.入金日)>=#" & orderDate & "#) AND ((流通システム.入金日)<=#" & shipDate & "#)) AND ((流通システム.協力者 =""" & TextBox1 & """)) ;"



としてみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!