- 題名: 不一致クエリ内の選択クエリパラメータを設定したい
- 日時: 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)にパラメータを設定することができるのでしょうか。
御教授宜しくお願い致します。