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

質問編集履歴

3

修正

2018/08/16 05:24

投稿

jun_endo
jun_endo

スコア56

title CHANGED
File without changes
body CHANGED
@@ -35,7 +35,7 @@
35
35
 
36
36
  '** レコード処理
37
37
  ###この下の行で実行エラーが発生する
38
- cn.Execute "INSERT INTO TRN_AUTOCAD VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', 1-00-4467102610431)"
38
+ cn.Execute "INSERT INTO TRN_AUTOCAD VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431')"
39
39
 
40
40
  '** トランザクション終了
41
41
  cn.CommitTrans
@@ -48,23 +48,29 @@
48
48
  #わかったこと
49
49
  上記に記入したプログラムのINSERTの部分をクエリツールで実行してみたところ。
50
50
  ```SQL
51
- before:INSERT INTO TRN_AUTOCAD VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', 1-00-4467102610431)
51
+ before:INSERT INTO TRN_AUTOCAD VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431')
52
52
 
53
- after:INSERT INTO "TRN_AUTOCAD" VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', 1-00-4467102610431)
53
+ after:INSERT INTO "TRN_AUTOCAD" VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', '1-00-4467102610431')
54
54
 
55
55
  ```
56
56
  このようにして、**テーブルにダブルコーテーションしなくてはいけない**ことが分かりました。
57
57
  なので、上記をVBA側にうまく変換して挑戦してみようと思いました。
58
58
  ```VBA
59
- cn.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`)"
59
+ cn.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')"
60
60
  ```
61
61
  文字列にするために、シングルクォーテーションで括りました。
62
+ そして、いろんな方からテーブルの列の名前を追加するといいといわれたため、
63
+ それも追加しました。
62
64
  結果は
63
65
  ```Error
64
66
  構文エラー:"TRN_AOTOCAD"周辺で構文エラーです。
65
67
  ```
66
68
  と表示されるようになりました。
67
69
 
70
+ **pgAdmin側で、列の名前を追加したものを実行してみたところ、**
71
+ **構文エラーが出たので、列の名前を記入しない方がpgAdmin側ではうまくいきました。**
72
+
73
+
68
74
  ほかにもいろいろと試しました。
69
75
 
70
76
  #接続時にdbnameの追加する
@@ -79,8 +85,8 @@
79
85
  #{接続先DB名}やpublicと付け足す
80
86
 
81
87
  ```VBA
82
- cn.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`);"
88
+ cn.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');"
83
89
 
84
- cn.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`);"
90
+ cn.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');"
85
91
  ```
86
92
  ダメでした。

2

やってみたことの追加

2018/08/16 05:24

投稿

jun_endo
jun_endo

スコア56

title CHANGED
File without changes
body CHANGED
@@ -54,8 +54,33 @@
54
54
 
55
55
  ```
56
56
  このようにして、**テーブルにダブルコーテーションしなくてはいけない**ことが分かりました。
57
- しかし実行してみ
57
+ なので上記をVBA側にうまく変換して挑戦してよう思いました。
58
+ ```VBA
59
+ cn.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`)"
60
+ ```
61
+ 文字列にするために、シングルクォーテーションで括りました。
62
+ 結果は
58
63
  ```Error
59
64
  構文エラー:"TRN_AOTOCAD"周辺で構文エラーです。
60
65
  ```
61
- と表示されるようになりました。
66
+ と表示されるようになりました。
67
+
68
+ ほかにもいろいろと試しました。
69
+
70
+ #接続時にdbnameの追加する
71
+ ```VBA
72
+ '** ODBC 接続
73
+ Set cn = CreateObject("ADODB.Connection")
74
+ cn.Open "dsn=XXX;uid=XXX;pwd=XXX;dbname=XXX"
75
+ ```
76
+
77
+ ダメでした。
78
+
79
+ #{接続先DB名}やpublicと付け足す
80
+
81
+ ```VBA
82
+ cn.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`);"
83
+
84
+ cn.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`);"
85
+ ```
86
+ ダメでした。

1

わかったことの追加

2018/08/16 05:15

投稿

jun_endo
jun_endo

スコア56

title CHANGED
File without changes
body CHANGED
@@ -43,4 +43,19 @@
43
43
  '** ODBC 接続解除
44
44
  cn.Close
45
45
  End Function
46
- ```
46
+ ```
47
+
48
+ #わかったこと
49
+ 上記に記入したプログラムのINSERTの部分をクエリツールで実行してみたところ。
50
+ ```SQL
51
+ before:INSERT INTO TRN_AUTOCAD VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', 1-00-4467102610431)
52
+
53
+ after:INSERT INTO "TRN_AUTOCAD" VALUES ('1-00-4467', 1026, 1043, 1, 1000, 250, 30, '要確認', 1-00-4467102610431)
54
+
55
+ ```
56
+ このようにして、**テーブルにダブルコーテーションしなくてはいけない**ことが分かりました。
57
+ しかし、実行してみると
58
+ ```Error
59
+ 構文エラー:"TRN_AOTOCAD"周辺で構文エラーです。
60
+ ```
61
+ と表示されるようになりました。