質問するログイン新規登録

Q&A

解決済

1回答

1910閲覧

ExcelVBAでADOを用いてSQLServer上のストアドにパラメータを渡してを実行する方法を教えてください

t-mamitsu

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/06/14 03:07

編集2019/06/14 03:08

0

0

前提・実現したいこと

ExcelVBAでADOを用いてSQLServer上のストアドにパラメータを渡してを実行し、実行結果をExcelのシートに貼り付けようとしています。

発生している問題・エラーメッセージ

パラメータに日付を指定しており、開始日と終了日を渡しています。 その際、開始日と終了日が同じ場合うまく動作しません。

該当のソースコード

・ストアドのパラメータ設定部分 @pRecordDateStart date, @pRecordDateEnd date ・ストアド内SQLでパラメータを用いている部分 where ( (a.RecordDate >= @pRecordDateStart) OR(@pRecordDateStart = '') OR(@pRecordDateStart IS NULL) ) AND ( (a.RecordDate <= @pRecordDateEnd) OR(@pRecordDateEnd = '') OR(@pRecordDateEnd IS NULL) ) VBA内のパラメータ設定部分 Dim objParameter As ADODB.Parameter '1個目の引数:date Set objParameter = objCommand.CreateParameter() objParameter.Name = "pRecordDateStart" '引数の名前 objParameter.Type = adDate '日付型 objParameter.Direction = adParamInput '入力パラメータ objParameter.Value = Range("B12").Value '渡す値 objCommand.Parameters.Append objParameter '2個目の引数:date Set objParameter = objCommand.CreateParameter() objParameter.Name = "pRecordDateEnd" '引数の名前 objParameter.Type = adDate '日付型 objParameter.Direction = adParamInput '入力パラメータ objParameter.Value = Range("C12").Value '渡す値 objCommand.Parameters.Append objParamete

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

エラーメッセージなどは表示されません。
正常に動作している扱いのようです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

回答1

0

自己解決

ストアドで以下のように変更すれば解決できました。
where
(
(CONVERT(NVARCHAR,a.RecordDate,112) >= CONVERT(NVARCHAR,@pRecordDateStart,112))
OR(@pRecordDateStart = '')
OR(@pRecordDateStart IS NULL)
)
AND
(
(CONVERT(NVARCHAR,a.RecordDate,112) <= CONVERT(NVARCHAR,@pRecordDateEnd,112))
OR(@pRecordDateEnd = '')
OR(@pRecordDateEnd IS NULL)
)

投稿2019/06/14 04:42

t-mamitsu

総合スコア12

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問