■ADOを使い、OracleのデータベースをAccessにインポート(バックアップする)
mougより参考、
下記をAccessのプロシージャにいれ、単純に実行する by TKC
テーブルがあれば確認をする。
Sub ita_import()
Dim adoCnn As Object 'ADODB.Connection
Dim adoRec As Object 'ADODB.Recordset
Dim tblName As String
DoCmd.SetWarnings False
Set adoCnn = CreateObject("ADODB.Connection")
adoCnn.Open "Driver={Microsoft ODBC for Oracle};" & _
"CONNECTSTRING=TEST_DSN; UID=TEST_USER; PWD=TEST_PASSWORD;"
strSQL = "SELECT * FROM USER_TABLES"
Set adoRec = adoCnn.Execute(strSQL)
Do While Not adoRec.EOF
tblName = adoRec.Fields("table_name").Value
If DCount("*", "MSysObjects", "[Name] = '" & "TO_" & tblName & "' AND [Type] = 1") > 0 Then
DoCmd.DeleteObject acTable, "TO_" & tblName
End IfDoCmd.TransferDatabase acimport, "ODBC", _
"ODBC;DSN=TEST_DSN;UID=TEST_USER;PWD=TEST_PASSWORD;", _
acTable, tblName, "TO_" & tblName, False
adoRec.MoveNext
Loop
adoCnn.Close
Set adoCnn = Nothing
Set adoRec = Nothing
End Sub
MS AccessなどのVBAでシングルクォーテーション、ダブルクォーテーションの使い方を
説明している。↓
http://www.moug.net/tech/acvba/0050001.htm
抜粋
RunSQLメソッドの構文は次のとおりです。
<構文>【例1】シングルクォーテーションを含める
Sub Sample1()
DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like '笹野*';"
End Sub★「笹野」が変数の場合(変数:myName)
Sub Sample2()
Dim myName As String
myName = "笹野"
DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like '" & _
myName & "*';"End Sub
【例2】ダブルクォーテーションを含める
(2つの連続するダブルクォーテーションを使って、1つのダブル
クォーテーションを表す。)
Sub Sample1()
DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like """ & _
"笹野*" & """" & ";"
End Sub★「笹野」が変数の場合(変数:myName)
Sub Sample2()
Dim myName As String
myName = "笹野"
DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like """ & _
myName & "*""" & ";"End Sub
【例3】クォーテーションマークを表す変数を含める
(ダブルクォーテーションのANSI文字表記はChr$(34)です。)
Sub Sample1()
Dim strQuote As String
strQuote = Chr(34)DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like " & _
strQuote & "笹野*" & strQuote & ";"
End Sub★「笹野」が変数の場合(変数:myName)
Sub Sample2()
Dim myName As String
Dim strQuote As String
myName = "佐野"
strQuote = Chr(34)
DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like " & _
strQuote & myName & "*" & strQuote & ";"End Sub
数値はクォーテーションで囲む必要はありません。
【例】
Sub Sample1()
DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 顧客番号 = 1;"
End SubSub Sample2()
Dim myNo As Integer
myNo = 2
DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 顧客番号 =" & myNo & ";"End Sub