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

回答編集履歴

2

コードを書き換え

2024/05/10 10:34

投稿

KOZ6.0
KOZ6.0

スコア2736

answer CHANGED
@@ -1,26 +1,28 @@
1
- 大昔に書いた VB6 のソースです。
2
- 環境が用意できないので検証していませんが、何かの参考になれば幸いです。
3
-
4
- ```vb
1
+ ```vba
5
- 'iDestDB Oracle ODBC 接続した Database オジェクト
2
+ ' iUser ORACLE 接続するユーザ名(テールが存在するスキーマ名を兼ねます)
6
- 'iMyDb リンクテーブルを作る Database オブジェクト
7
- 'iUser Oracle 接続
3
+ ' iPassword ORACLE 接続するパスワ
4
+ ' iDSN ORACLE に接続する DSN
8
- 'iTableName テーブル名
5
+ ' iTableName テーブル名
9
- Function DoAttach(iDestDB As Database, iMyDb As Database, iUser As String, iTablename As String)
6
+ Sub CreateLinkTable(ByVal iUser As String, ByVal iPassword As String, ByVal iDSN As String, ByVal iTableName As String)
7
+ Dim strConnect As String
10
- Dim pAttachName As String
8
+ Dim attatchName As String
11
- Dim pMsg As String
9
+ Dim db As Database
12
- Dim pAttachTBL As TableDef
10
+ Dim tdf As TableDef
11
+
13
-
12
+ strConnect = "ODBC;DSN=" & iDSN & ";Uid=" & iUser & ";Pwd=" & iPassword
14
- pAttachName = iUser & "_" & iTablename
13
+ attatchName = iUser & "_" & iTableName
14
+
15
- Set pAttachTBL = iMyDb.CreateTableDef(pAttachName)
15
+ Set db = CurrentDb
16
+
16
- pAttachTBL.Connect = iDestDB.Connect
17
+ On Error Resume Next
17
- pAttachTBL.SourceTableName = iUser & "." & iTablename
18
- pAttachTBL.Attributes = pAttachTBL.Attributes Or dbAttachSavePWD
19
- iMyDb.TableDefs.Append pAttachTBL
18
+ db.TableDefs.Delete attatchName
20
- If Err.Number <> 0 Then
21
- Exit Function
22
- End If
23
- DoAttach = True
24
19
  On Error GoTo 0
20
+
21
+ Set tdf = db.CreateTableDef(attatchName)
22
+ tdf.Connect = strConnect
23
+ tdf.SourceTableName = iUser & "." & iTableName
24
+ tdf.Attributes = tdf.Attributes Or dbAttachSavePWD
25
+ db.TableDefs.Append tdf
25
- End Function
26
+ End Sub
26
27
  ```
28
+ DSN は ODBC アドミニストレータで定義しますが、32bit/64bit に注意してください。

1

メッセージ削除

2024/05/09 13:53

投稿

KOZ6.0
KOZ6.0

スコア2736

answer CHANGED
@@ -18,7 +18,6 @@
18
18
  pAttachTBL.Attributes = pAttachTBL.Attributes Or dbAttachSavePWD
19
19
  iMyDb.TableDefs.Append pAttachTBL
20
20
  If Err.Number <> 0 Then
21
- ShowErrMsg "アタッチテーブル作成エラー", DBEngine.Errors(0).Description
22
21
  Exit Function
23
22
  End If
24
23
  DoAttach = True