EXCEL VBAでADOを使ってEXCELファイルよりデータを取得しています。
その際のSQL実行結果が上手くいきません。
'Excel のバージョン 2003 SP3
'データ項目名
'ID,名前,,,,,,,,,,,長文1,長文2,,,,削除フラグ,削除日時,更新日時 ←こんな感じで20項目
上記の「削除フラグ」の値を抽出条件にしています。
文字列の項目で、''、' '、'1'などの値があります。
'1'が入っているデータは削除された古いデータなので、抽出対象外にしたいです。
mySql = "select * FROM Sample1 WHERE (名前 LIKE '%山%') AND (削除フラグ <> '1')"
Set adoRS = adoCON.Execute(mySql)
Debug.Print mySql
上記を実行すると、対象データはあるのに取得できません。
実行時エラーになることはなく、処理は正常に終了します。
mySql = "select * FROM Sample1 WHERE (名前 LIKE '%山%') AND (削除フラグ = '1')"
だと、「削除フラグ」に'1'が入っているデータが取得できます。
mySql = "select * FROM Sample1 WHERE (名前 LIKE '%山%') AND (削除フラグ != '1')"
これを試しましたが、構文エラー:演算子がありません となります。
SQL文が悪いのか、「削除フラグ」のデータが悪いのかわかりません。
解決していただけなしでしょうか?
No.1ベストアンサー
- 回答日時:
こんにちは。
>上記を実行すると、対象データはあるのに取得できません。
取得できない対象データの削除フラグは、空のセルになっていると想像しました。
空のセルはNullという値になっています。
条件「削除フラグ <> '1'」は、真になりません。
>mySql = "select * FROM Sample1 WHERE (名前 LIKE '%山%') AND (削除フラグ <> '1')"
以下のようにすると、取得できなかった対象データも取得できると思います。
削除フラグの条件に OR 削除フラグ IS NULL を追加しています。
mySql = "select * FROM Sample1 WHERE (名前 LIKE '%山%') AND (削除フラグ <> '1' OR 削除フラグ IS NULL)"
確認に使ったサンプルプログラムを添付します。
確認に使ったサンプルデータを画像添付します。
Dim oConn As New ADODB.Connection
Dim adoRS As ADODB.Recordset
Dim mySql As String
'エクセルファイルに接続
With oConn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open "E:\test\q6209009.html\test.xls"
End With
mySql = "select * FROM Sample1 WHERE (名前 LIKE '%山%') AND (削除フラグ <> '1' OR 削除フラグ IS NULL)"
Set adoRS = oConn.Execute(mySql)
Do Until adoRS.EOF
Debug.Print adoRS!名前; adoRS!削除フラグ
adoRS.MoveNext
Loop
'接続を閉じる
oConn.Close
はずれていたらごめんなさい。
よろしくお願いします。
画像まで付けていただいて、ありがとうございます。
サンプル通りで正常に取得できました。
Nullを考慮しなければならないのですね。
勉強になりました。
Nullを考慮して他の所も組みなおします!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えてgooの機能に関するアンケ...
-
回答が付かなかったので、再質...
-
指定した文字があった場合、そ...
-
VBA:Openステートメントで開い...
-
Windows11に残されたWindows10...
-
マクロで特定の行まで削除する...
-
教えて!gooで、自分がした回答...
-
ウェブページへのアクセス不可 ...
-
もう関わりたくない人がいたらL...
-
エクセルで住所の混在する「丁...
-
アクセスにおいて間違って削除...
-
ハメ撮りが流出したら
-
ダブルクォーテーションの削除...
-
Adobe AcrobatのPDFのページ削除
-
Facebookメッセンジャーの不具合
-
恋愛相談かてで
-
ジャニーズチケット掲示板の投...
-
今日の日付が過ぎたらその行を...
-
メーリングリストから特定の人...
-
教えて!goo質問の削除方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA:Openステートメントで開い...
-
「医者も看護師も自分に嫌がら...
-
ハメ撮りが流出したら
-
指定した文字があった場合、そ...
-
教えて!gooにはどのカテゴリが...
-
もう関わりたくない人がいたらL...
-
真剣な質問ほど消されるのはど...
-
Facebookメッセンジャーの不具合
-
インスタグラムのギャラリーの...
-
エクセルで住所の混在する「丁...
-
回答してる間に質問が消えるっ...
-
アクセスにおいて間違って削除...
-
喧嘩をしてLINE削除され、 また...
-
バッチファイルを使用したsql@p...
-
Facebookに自分が四つもアップ...
-
ウェブページへのアクセス不可 ...
-
同じ質問
-
日テレニュースHP、記事削除は...
-
女友達にLINEしたら、既読スル...
-
エクセルVBAで行削除時にエラー...
おすすめ情報