ExcelからSQL Serverの外部取り込みを行う際に
VBAの条件文の1部にWHERE(JOBTBL.BATCHID Like '12%')と書き
実行すると12から始まるデータの取得が正常に行われます。
実際には'12%'の箇所に当日日付を取得するようなものを書きたいので
変数T_DAY=format(Now,"mmdd")を入れて
WHERE(JOBTBL.BATCHID Like 'T_DAY%')で実行すると
エラーは出ませんが結果が表示されません。
変数を使用することは出来ないのでしょうか?
その場合、当日日付4桁から始まる列を含むテーブルを取得したい場合
どのようにすればよいでしょうか?
ご教授ください。
No.1ベストアンサー
- 回答日時:
"WHERE(JOBTBL.BATCHID Like '12%')"
も変数に入っているものですよね?
strSQL = "(略)..WHERE(JOBTBL.BATCHID Like '12%')"
これなら SQL Server 側で認識されるSQLは
(書くまでもないと思いますが)
(略)..WHERE(JOBTBL.BATCHID Like '12%')
になります。
では、質問者様の書かれたSQLではどうでしょうか?
T_DAY=format(Now,"mmdd")
strSQL = "(略)..WHERE(JOBTBL.BATCHID Like 'T_DAY%')"
SQL Server側で認識されるSQLは
(略)..WHERE(JOBTBL.BATCHID Like 'T_DAY%')
です。
つまり、『BATCHID が文字列「T_DAY」で始まるもの』となってしまいます。
VBA側の変数T_DAYの内容で渡したいわけですから、以下のようにします。
strSQL = "(略)..WHERE(JOBTBL.BATCHID Like '" & T_DAY & "%')"
これなら、T_DAY が 1202 だとしたら、SQL Server 側で認識されるSQLは
(略)..WHERE(JOBTBL.BATCHID Like '1202%')
となります。
この回答では簡便な方法で書きましたが、上記の方法は、本来は、プレースホルダによるパラメータバインドを使うべきです。
手入力の値ではないと言う事で、大丈夫だとは思いますが、SQLインジェクションを起こし易いセキュリティレスな方法なので好ましくないです。
一応、MSDNの例が載っているところをリンクしておきます。
SqlCommand.Prepare メソッド
http://msdn.microsoft.com/ja-jp/library/system.d …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Excel(エクセル) VBA : スクレイピングできない 4 2023/05/12 22:26
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
VBとアクセスでSQL文に変数を使いたいのですが
Visual Basic(VBA)
-
ストアド内で動的にSQLを作る際のLIKE演算子シングルクォーテーションの数
SQL Server
-
-
4
LIKEの右側にカラムを指定できますか?
MySQL
-
5
Integer変数をカラにしたいのですが
Visual Basic(VBA)
-
6
データベースのINT型項目にNULLはNG?
MySQL
-
7
SQLを連続発行する時の正しい(?)書き方は?
Visual Basic(VBA)
-
8
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
9
SQL文のwhere条件文で使う <> の意味はなんですか
その他(データベース)
-
10
SQL 全角半角混在の文字列から半角数字のみを抜き出す
Oracle
-
11
Accessのフィールド名に半角括弧を使ってしまった
Visual Basic(VBA)
-
12
CloseとDisposeの違い
Visual Basic(VBA)
-
13
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
14
アクセス VBAについて FROM句の構文エラー
Access(アクセス)
-
15
AccessのWHERE句において、変数は使用できますか?
Access(アクセス)
-
16
Access コンボボックスの値をクリアしたい。
PowerPoint(パワーポイント)
-
17
Accessクエリの抽出条件にフォームから挿入する方法
その他(データベース)
-
18
あるカラムを対象に、Nullと空文字をゼロとして抽出したい
SQL Server
-
19
オラクルではできるのにSQLSERVERではサブクエリーで複数キーを指定できない?
SQL Server
-
20
テーブルの最後(最新)のレコードを抽出したい
MySQL
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
VBA:小数点以下の数字を取得で...
-
VBAでActiveDirectoryのユーザ...
-
ListView 項目の選択/選択解除...
-
getParameter と getAttribut...
-
count(*)で取得した値をJAVAの...
-
Flexgridで選択行の列の値を取...
-
「Excel VBA」 Webクエリ マク...
-
like演算子内に変数って使えな...
-
JavaScriptにおいてコンピュー...
-
データ数をカウントしたいのですが
-
javaで週の最初の日(例:月曜日...
-
PostgresSQL JDBC で Select結...
-
EXCELのリストボックスを選択し...
-
POSTやGETの値の取得方法
-
エクセルVBAで別ファイルのデー...
-
ASP(vbscript)におけるクライア...
-
現在時刻をミリ秒まで取得
-
コンボボックスの表示は最大何行?
-
asp.netでtextboxの値を取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでActiveDirectoryのユーザ...
-
VB.NETで DataRow()を利用して...
-
VBA:小数点以下の数字を取得で...
-
ListView 項目の選択/選択解除...
-
like演算子内に変数って使えな...
-
count(*)で取得した値をJAVAの...
-
利用者側のMACアドレスを取得し...
-
データ数をカウントしたいのですが
-
JavaScriptでWindowsログオンID...
-
ListViewで複数選択された項目...
-
Flexgridで選択行の列の値を取...
-
エクセルVBAで複数選択できるよ...
-
VBA リストボックス複数選択か...
-
getParameter と getAttribut...
-
Excel VBA でログインしてい...
-
VBScriptで数値にコンマを付け...
-
Spreadの選択行の取得について
-
コンボボックスの表示は最大何行?
-
コンボボックス表示文字列を取...
-
VB .netにて現在時刻+1時間後...
おすすめ情報