- 題名: 不一致クエリ内の選択クエリパラメータを設定したい
- 日時: 2012/03/17 23:32:28
- ID: 30108
- この記事の返信元:
- (なし)
- この記事への返信:
- [30109] Re[1]: 不一致クエリ内の選択クエリパラメータを設定したい2012/03/18 18:20:53
- ツリーを表示
2012/03/19(Mon) 06:22:18 編集(投稿者) ■No30110に返信(Yoshiさんの記事) OleDbCommandを使用すると以下のような感じでクエリーのパラメータを設定することがで きましたが、OdbcCommandを使用すると同じやり方でパラメータを設定することができま せんでした。DAOではパラメータを設定することができました。ADOでは、OLEDBを使用す るとパラメータを設定することができ、ODBCを使用するとパラメータを設定することがで きませんでした。パラメータを設定できるかどうかはデータプロバイダーによって変わる ようです。ODBCはクエリーのパラメータを設定することができない仕様なのか、クエリー のパラメータを設定する特別な記述法があるのか、そのあたり私は明確に判断することが できませんが、ODBCではクエリーのパラメータを設定することができない可能性が高いの でないかしらというのが私の率直な感想でございます。 Dim daInstockInconsis As OleDbDataAdapter = New OleDbDataAdapter( _ " SELECT " & _ " * " & _ " FROM " & _ " tblInStock LEFT JOIN qulOutStockSelect " & _ " ON tblInStock.Data01 = qulOutStockSelect.Data01 " & _ " WHERE " & _ " (qulOutStockSelect.Data01 Is Null) " & _ " AND " & _ " (tblInstock.inDate <= ?) ", _ "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\a\Documents\test.accdb") Dim params As OleDbParameterCollection = daInstockInconsis.SelectCommand.Parameters params.Add(New OleDbParameter("outDate", OleDbType.Date, 0)).Value = New DateTime(2003, 3, 5) params.Add(New OleDbParameter("inDate", OleDbType.Date, 0)).Value = New DateTime(2003, 3, 5) Dim dtInstockInconsis As DataTable = New DataTable() daInstockInconsis.Fill(dtInstockInconsis)
■No30121に返信(Yoshiさんの記事) サブクエリを利用されてはいかがでしょうか。SQLがすこし複雑になりますがテーブルを作成せずにすみます。 SELECT * FROM tblInStock i LEFT OUTER JOIN ( SELECT * FROM tblOutStock WHERE outDate <= ? ) o ON i.Data01 = o.Data01 WHERE (i.inDate <= ?) AND (o.Data01 Is Null)
分類:[.NET]
お世話になります。
入庫テーブル“tblInstock”の入庫日(inDate)と、出庫テーブル“tblOutstock”の
出庫日(outDate)が共に指定日よりも前のレコードでData01をキーに不一致レコードを取得しようとしています。
sqlString = "SELECT * FROM tblInStock LEFT JOIN qulOutStockSelect ON tblInStock.[Data01] = qulOutStockSelect.[Data01] " & _
"WHERE (qulOutStockSelect.Data01 Is Null) AND (tblInstock.inDate <= #" & strDate & "#);"
daInstockInconsis = New OdbcDataAdapter(sqlString, cnInoutstock)
cbInstockInconsis = New OdbcCommandBuilder(daInstockInconsis)
dtInstockInconsis = New Data.DataTable()
daInstockInconsis.Fill(dtInstockInconsis)
(qulOutstockSelectは“SELECT * FROM tblOutstock WHERE outDate <= [?];”です)
上記を実行するとパラメータ設定エラーが発生します。
どのようにすれば、SQL文で使用しているクエリ(qulOutstockSelect)にパラメータを設定することができるのでしょうか。
御教授宜しくお願い致します。