0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLite3でUPDATE SELECTが使えるようになったが、VBAから使用できなかった話

Posted at

SQLite3でのUPDATE FROM

あーなんかUPDATE FROMの文法でSQL書きたいなー
って日がたまにありますよね。

嘘です。

この度、SQLite3のバージョン3.33から、
UPDATE FROM が使えるようになったそうなので
遊びでさわってみました。

やっぱりゾロ目はいいですね。
(すでにバージョン3.34になってましたが)

で、先に結論を書いておくと、できなかった!という内容になります。
試したことを書いているので、詳しい方どなたか教えてください!!

環境の話

さて、まずは以前から触っていた環境説明から。
というほどでもないのですが、念のため書いておきます。

1.Windows 10
2.Excel 2016(マクロ起動でDB操作)
3.SQLite3 バージョン3.34
4.ODBCデータソース(64ビット) ← よく分からない
5.A5:SQL Mk-2 Version 2.15.0

で、実行してます。

処理内容

まず、やりたいSQLを簡略して書くと…

UPDATE
    tableA
SET
    columnA = tableB.columnB
FROM (
    SELECT
        columnKey
        , tableC.columnC + tableD.columnD AS columnB
    FROM
        tableC
        , tableD
    WHERE
        省略
) AS tableB
WHERE
    省略
AND tableA.columnKey = tableB.columenKey

こんな感じで、UPDATE FROM の形です。
で、こんな感じのSQLをExcelのシートに入力された内容に応じて、
マクロがinsertやら、updateやらを実行してくれる系のものがあったりします。

A5での動作確認

マクロを起動してできたSQLをまずはA5で実行。

実行前にA5の参照しているSQLite3.dll を差し替え忘れずにね!

で、既存のDBファイルの差し替え方が分からず・・・
まあいいやと、create table 等のSQLは残してあったので、
新規でDB作成+テーブル作成でDBファイルごと差し替えてしまった。

で実行したところ・・・
無事想定通り更新ができていた!

VBAでの動作確認

じゃあ早速マクロに組み込んで実行したところ、

near"FROM": syntax error(1)

あら、FROM 前後にスペース入れ忘れ(SQL動的作成あるある)か?と思ったが、違う様子。。。

試しに、debug.printにて出力した結果をA5にて実行したところ、
あれーうまく出来てるぞと・・・

VBAで実行しているSQLite3.dllを探して

あぁ、VBA側のSQLite3.dll差し替えてないじゃん!
おじさん気づいちゃったよ。

と思い探してみたところ、どこや…?となり、
とりあえずパスが通っているところをかたっぱしから探したところ、
Cドラのある場所にいたので差し替え。

ダメでした。

うーん…!

!!

odbcデータソース経由してるから、そっちの参照先か!
と思いましたが、それっぽいものは見当たらず。。

google先生にも聞いてみましたが、残念ながら記憶の奥底にしまってしまった様子。
私では探しだせませんでした。

結局

大人を舐めるなよ!!と言わんばかりに旧スタイルのSQLをマクロに実装。
ちょっと切なくなった夜でした。

どなたかVBAとSQLite3の関係を教えてください。

~雑談~

切なくなった日は「Can't take my eyes off you」を見て元気を出してます。
皆さんもぜひ!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?