#今挑戦していること
vbaで、前処理して入手した情報を、postgreSQLにINSERTして、
テーブルにどんどん情報を追加していきたい。
#エラー内容
Error
1実行時エラー'-2147467259(8004005)': 2ERROR:リレーション'trm_autocad'は存在しません。 3Error while executing the query
色々と調べて、コードを変えて挑戦してみましたが、
うまく解決できなかったので、困っています。
それと、非常にお恥ずかしいのですが、
pgAdominでSQLを打ち込みたいのですが、
どこで打ち込めばいいのかわからないので、それも一緒に教えていただけると、
非常にうれしいです。
#プログラム
vba
1Function func_DB() 2 Dim cn As Variant 3 4'** ODBC 接続 5 Set cn = CreateObject("ADODB.Connection") 6 cn.Open "dsn=xxx;uid=xxx;pwd=xxx" 7 cn.CursorLocation = 3 8 9'** トランザクション開始 10 cn.BeginTrans 11 12'** レコード処理 13###この下の行で実行エラーが発生する 14 cn.Execute "INSERT INTO TRN_AUTOCAD VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431')" 15 16'** トランザクション終了 17 cn.CommitTrans 18 19'** ODBC 接続解除 20 cn.Close 21End Function
#わかったこと
上記に記入したプログラムのINSERTの部分をクエリツールで実行してみたところ。
SQL
1before:INSERT INTO TRN_AUTOCAD VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431') 2 3after:INSERT INTO "TRN_AUTOCAD" VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431') 4
このようにして、テーブルにダブルコーテーションしなくてはいけないことが分かりました。
なので、上記をVBA側にうまく変換して挑戦してみようと思いました。
VBA
1cn.Execute "INSERT INTO 'TRN_AUTOCAD'(CONSTRUCTION_NO, PAGE_START, PAGE_END, STONE_NO, HEIGHT, WIDTH, THICKNESS, STATUS, P_ID) VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431')"
文字列にするために、シングルクォーテーションで括りました。
そして、いろんな方からテーブルの列の名前を追加するといいといわれたため、
それも追加しました。
結果は
Error
1構文エラー:"TRN_AOTOCAD"周辺で構文エラーです。
と表示されるようになりました。
pgAdmin側で、列の名前を追加したものを実行してみたところ、
構文エラーが出たので、列の名前を記入しない方がpgAdmin側ではうまくいきました。
ほかにもいろいろと試しました。
#接続時にdbnameの追加する
VBA
1'** ODBC 接続 2 Set cn = CreateObject("ADODB.Connection") 3 cn.Open "dsn=XXX;uid=XXX;pwd=XXX;dbname=XXX"
ダメでした。
#{接続先DB名}やpublicと付け足す
VBA
1cn.Execute "INSERT INTO public.TRN_AUTOCAD(CONSTRUCTION_NO, PAGE_START, PAGE_END, STONE_NO, HEIGHT, WIDTH, THICKNESS, STATUS, P_ID) VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431');" 2 3cn.Execute "INSERT INTO {接続先DB名}.TRN_AUTOCAD(CONSTRUCTION_NO, PAGE_START, PAGE_END, STONE_NO, HEIGHT, WIDTH, THICKNESS, STATUS, P_ID) VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431');"
ダメでした。

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/16 04:11
2018/08/16 07:31