ACCESSでORACLEのサーバからデータを取得する方法

このQ&Aのポイント
  • ACCESSでORACLEのサーバからデータを取得しようと試みましたがうまくいきません。どこを改善したらよろしいでしょうか?どなたかご教示ください。
  • 以下のエラーメッセージがVBAで表示されます。「[Microsoft][ODBC driver for Oracle][Oracle]ORA-00923: FROMキーワードが指定の位置にありません。」SQL部分の空白は見直しました。
  • 単一のテーブルであればDoCmd.TransferDatabase acImport等を使うのですが、場合によっては今後データ量が多かったりより複数のテーブルを扱うことになるため、どのようにデータを取得すればよいかアドバイスをいただきたいです。
回答を見る
  • ベストアンサー

ACCESSでORACLEのサーバからデータを取得

ACCESSでORACLEのサーバからデータを取得しようと試みましたがうまくいきません。どこを改善したらよろしいでしょうか?どなたかご教示ください。 クライアント:WINDOWS7 ACCESS2010 サーバ:WIN-SV2003 ORACLE10G 以下のエラーがVBAで取得しようとするとでてきてしまいます。 「[Microsoft][ODBC driver for Oracle][Oracle]ORA-00923:FROMキーワードが指定の位置にありません。」 SQL部分の空白は見直しました。 Private Sub コマンド610_Click() Dim adoCON As Object Dim rs As Object Dim oraclebox() As Variant Dim rdsu As Long On Error GoTo Err_Han 'データベースに接続する' Set adoCON = CreateObject("ADODB.Connection") adoCON.Open "Driver={Microsoft ODBC for Oracle};" & _ "CONNECTSTRING=*****; UID=abcd; PWD=1234;" sqlstr = "SELECT J.KTN_COD,J.SBN,J.GYOSYA_COD,G.GYOSYA_MEI" _ & "FROM JITU_SHARYOU J ,GYOSYA G" _ & "WHERE J.GYOSYA_COD = G.GYOSYA_COD" Set rs = adoCON.Execute(sqlstr) rs.MoveFirst 'レコード数カウント' Do Until rs.EOF rdsu = rdsu + 1 rs.MoveNext Loop '配列を再定義' ReDim oraclebox(rdsu, 4) i = 1 rs.MoveFirst Do Until rs.EOF oraclebox(i, 1) = rs!KTN_COD oraclebox(i, 2) = rs!SBN oraclebox(i, 3) = rs!GYOSYA_COD oraclebox(i, 4) = rs!GYOSYA_MEI i = i + 1 rs.MoveNext Loop rs.Close Set rs = Nothing '警告ダイアログをオフ' DoCmd.SetWarnings False DoCmd.RunSQL "DELETE FROM SAMPLE_T" 'Oracleデータを書き込み' For i = 1 To rdsu DoCmd.RunSQL "INSERT INTO SAMPLE_T(KTN_COD,SBN,GYOSYA_COD,GYOSYA_MEI)" _ & "VALUES('" & oraclebox(i, 1) & "','" & oraclebox(i, 2) & "','" & oraclebox(i, 3) & "'," & oraclebox(i, 4) & ")" Next i '警告ダイアログをオン' DoCmd.SetWarnings True Exit Sub Err_Han: ' エラー処理' MsgBox (Err.Description) End Sub *単一のテーブルであればDoCmd.TransferDatabase acImpor等を使うのですが、場合によっては今後データ量が多かったりより複数のテーブルを扱うことになるので。

質問者が選んだベストアンサー

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

#1です > While(Not rs.EOF) >   rsTo.AddNew >   rsTo!SBN = rs!SBN >   ・・・ >   rsTo.Update >   rs.MoveNext > Wend ここのところの rsTo は、AddNew / Update しかしていないので DAO / ADO 区別ありません。 Dim rsTo As DAO.Recordset と記述して、メニューの「デバッグ」→「コンパイル」してみて エラーにならなければ、DAO が使えます。(以下雰囲気) Set rs = adoCON.Execute(sqlstr) CurrentDb.Execute "DELETE FROM SAMPLE_T;" Set rsTo = CurrentDb.OpenRecordset("SAMPLE_T") While (Not rs.EOF)   rsTo.AddNew   rsTo!SBN = rs!SBN   ・・・   rsTo.Update   rs.MoveNext Wend rs.Close rsTo.Close また、 Dim rsTo As New ADODB.Recordset でコンパイルエラーでなければ ADO が使えます(以下雰囲気) Set rs = adoCON.Execute(sqlstr) CurrentProject.Connection.Execute "DELETE FROM SAMPLE_T;" rsTo.Open "SAMPLE_T", CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic While (Not rs.EOF)   rsTo.AddNew   rsTo!SBN = rs!SBN   ・・・   rsTo.Update   rs.MoveNext Wend rs.Close rsTo.Close ※ コンパイルエラーでも、使いたいのであれば、参照設定で追加すれば良いと思います ※ 参照設定しなくても、質問者さんの様に(チョッと修正) Dim cn As Object Dim rsTO As Object Set cn = CurrentProject.Connection Set rsTO = CreateObject("ADODB.Recordset") rsTO.Open "SAMPLE_T", cn, adOpenForwardOnly, adLockOptimistic ' ★ Object 宣言しておいて、CreateObject("ADODB.Recordset") することでも同じなのですが adOpenForwardOnly とか adLockOptimistic の様な定数部分の記述で苦労すると思います。 Dim rsTO As ADODB.Recordset としておけば、 Set rsTO = CreateObject("ADODB.Recordset") ↓部分は、 Set rsTO = New ADODB.Recordset で良いですし、 Dim rsTO As New ADODB.Recordset としておけば、Set rsTO = ・・・ 自体不要です

jjmmyy
質問者

お礼

ありがとうございます、助かりました。おかげさまで実現できました。御礼申し上げます。

その他の回答 (1)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

ORACLE との連携部分はわかりませんが > sqlstr = "SELECT J.KTN_COD,J.SBN,J.GYOSYA_COD,G.GYOSYA_MEI" _ > & "FROM JITU_SHARYOU J ,GYOSYA G" _ > & "WHERE J.GYOSYA_COD = G.GYOSYA_COD" FROM と WHERE 前にスペースが無いため・・・ ではないでしょうか。 余計なお世話で rs (Recordset)のメソッドに、GetRows があります。 GetRows を使えば、簡単に配列データが作れます。 Dim v As Variant ・・・ v = rs.GetRows v は、v(列,行) の二次元配列に なお、レコード数がかなり多いのであれば、配列に展開するのではなく SAMPLE_T 用の Recordset rsTo を開いておいて While(Not rs.EOF)   rsTo.AddNew   rsTo!SBN = rs!SBN   ・・・   rsTo.Update   rs.MoveNext Wend とかすれば・・・

jjmmyy
質問者

お礼

できました、ありがとうございます。普段SQLエディタで抽出していたので気づきませんでした。 ちなみに「SAMPLE_T 用の Recordset rsTo を開いておいて・・・」というやりかたをもう少し 詳しく教えて頂いてもよろしいでしょうか? while文の前に Dim rsTO As Object Set cn = CreateObject("ADODB.Connection") Set rsTO = CreateObject("ADODB.Recordset") rsTO.Open "SAMPLE_T", cn.... としたのですが、「この操作を実行するために接続を使用できません。 このコンテキストで閉じているかあるいは無効です。」と出てきて うまくいきませんでした。access2010を使用していますが、DAOの 参照設定が必要になるのでしょうか?

関連するQ&A

  • OracleからAccessへのインポート

    OracleのサーバからAccessのクライアントへ(1)のSQL文を使って Accessのテーブルヘインポートしたいのですが、どのように(2) に付け足せば良いのでしょうか?どなたかご教示願います。 (1) SELECT S.KTN_COD ,K.KTN_MEI FROM T_SYUKA S ,M_KTN K WHERE S.KTN_COD=K.KTN_COD (2) Private Sub abc_Click() 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=dns; UID=hoge; PWD=hoge;" strSQL = "SELECT S.KTN_COD ,K.KTN_MEIFROM T_SYUKA S ,M_KTN K" _ &"WHERE S.KTN_COD=K.KTN_COD" adoCnn.Execute (strSQL) adoCnn.Close Set adoCnn = Nothing Set adoRec = Nothing End Sub

  • オラクルのデータをAccessに追加 無限ループ

    前回、オラクルからデータを取り出し、Accessのテーブルに書き込みを教えて頂き、データ追加は出来たのですが、データ追加時に無限ループが発生しました。 【環境】 Oracle:10g Access:2010 Dim CON As New ADODB.Connection 'Oracle側コネクション Dim RS As ADODB.Recordset 'Oracle側レコードセット Dim SQL As String 'Oracle側SQL文 Dim i As Integer '処理用インクリメント Dim DT As Date '抽出日付変数(日付型) Dim sDT As String '抽出日付変数(テキスト型) Dim RS2 As ADODB.Recordset 'Access側レコードセット ◎現在の状況 Dim CON As New ADODB.Connection Dim RS As ADODB.Recordset Dim SQL As String Dim i As Integer 'DB接続定義 CON.Open "DSN=DNS名;UID=ユーザー名;PWD=パスワード;" 'SQL文 SQL = "SELECT " SQL = SQL & "カラム1," SQL = SQL & "カラム2," SQL = SQL & "カラム3" SQL = SQL & "FROM オラクルテーブル名 " SQL = SQL & "WHERE 抽出条件 " SQL = SQL & "AND 抽出条件" SQL = SQL & "GROUP BY カラム" SET RS = CON.EXCUTE(SQL) ’取得したレコード数表示 MsgBox "オラクル側のレコード数は: " & RS.RecordCount (1)↑↑↑オラクルから、抽出したレコード数表示 rs2.Open "新しいテーブル名", CurrentProject.Connection, adOpenKeyset, adLockOptimistic rs.MoveFirst Do Until rs.EOF rs2.AddNew rs2!カラム1 = rs!カラム1 rs2!カラム2 = rs!カラム2 rs2!カラム3 = rs!カラム3 rs2.Update rs2.Close: Set rs2 = Nothing rs.close: SET RS = Nothing con.close:SET CON=Nothing end sub 上記を実行したところ、いくら待っても処理がおわらず、強制終了をかけた所、新テーブルには、約150万件追加されてました。 (1)でオラクルから抽出した、レコード数を表示させてみた所、-1でした。 ◎疑問点、 -1ってありえない数値だと思うのですが。 ちなみに、オラクル側で同様のSQLを実行させた所、取得件数は48件でした。 上記について、ご存じの方がいらっしゃいましたら、アドバイスお願いいたします。

  • エクセルでのアクセスからのデータ抽出

    Web情報を参考にエクセルにて下記VBAコードを作りました。 Sub DB_Read() Dim adoCON As New ADODB.Connection Dim adoRS As New ADODB.Recordset Dim strSQL As String Dim odbdDB As Variant Dim wSheetName As Variant Dim i, j As Integer Dim GetName odbdDB = ActiveWorkbook.Path & "\test.accdb" adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" _ & "Data Source=" & odbdDB & "" adoCON.Open j = 4 Do Until j = 18 GetName = Range("B4").Value & "_" & Cells(16, j).Value strSQL = "SELECT 規格値,Max,Min,結果1,結果2,結果3 FROM T_測定結果 WHERE [測定項目]='" & GetName & "'" adoRS.Open strSQL, adoCON, adOpenDynamic wSheetName = ActiveSheet.Name i = 20 adoRS.MoveLast Do Until adoRS.EOF Or i = 25 With Worksheets(wSheetName) .Cells(17, j).Value = adoRS!規格値 .Cells(18, j).Value = adoRS!Max .Cells(19, j).Value = adoRS!Min .Cells(i, j).Value = adoRS!結果1 .Cells(i + 10, j).Value = adoRS!結果2 .Cells(i + 20, j).Value = adoRS!結果3 End With i = i + 1 adoRS.MovePrevious Loop j = j + 1 Loop adoRS.Close Set adoRS = Nothing adoCON.Close Set adoCON = Nothing End Sub VBAを走らせると1巡は走るのですが、「Do Until j = 18」の2巡目に入ると、「wSheetName = ActiveSheet.Name」のところで「実行時エラー3705 アプリケーション定義またはオブジェクトの定義エラー」と出てしまいます。 エラーの原因が分からないので、アドバイスを頂きたいです。

  • アクセス フィールド名の変更

    フィールド名 [1],[2],・・・・を [090701],[090702],・・・ に変更するように Dim i As String Dim ret As String ret = InputBox("入力例  090701") i = ret DoCmd.RunSQL "SELECT [クエリ112].[1] AS [" & i & "], [クエリ112].[2] AS [" & i + 1 & "], ........中略 End Sub としましたが [090701],[90702],[90703],・・・ 2番目から 090702 になりません。 どのようにすればよいのか教えていただけませんか。

  • Excel VBA Accessへデータ書き込み

    お世話になります。 Excel VBAを使用し、ExcelのデータをAccessのテーブル書き込みたいと思っています。 そこで、Access側のテーブルのインデックス重複なしの設定により、書き込むExcelデータが重複となるレコードの場合は、警告を非表示にして書き込みを飛ばしたいと思い、書籍等を参考にして下記のようなコードを記述したのですが、DoCmd.SetWarnings Falseに対してDoCmdの変数が定義されていませんと警告が出されます。 DoCmd.SetWarnings Falseを記述しないと実行時エラーが出されます。 対応方法をご教授頂けないでしょうか。 よろしくお願い致します。 Option Explicit Sub ExcelカレントExcelデータをAccessへ_重複除外_今村() Dim con As New ADODB.Connection Dim rs As New ADODB.Recordset Dim conStr As String Dim sqlList As Collection Set sqlList = New Collection 'コレクションを作成 Dim titleRow As Long Dim endRow As Long Dim tgtRow As Long '繰り返し用変数の宣言 Dim sql As Variant 'SQL文用変数の宣言 Dim i As Long 'For iステートメント用 Dim wbws As Object Dim Accessteble As String 'ExcelのWorkbook名+Sheet名を指定 Set wbws = Workbooks("テーブル取り込み1.xlsm").Sheets("Sheet2") 'Accessのテーブル名を指定 Accessteble = "T_Excelデータ追加" 'Excelタイトル行初期化★ titleRow = 9 'Excelデータ最終行取得 endRow = wbws.Cells(Rows.Count, 2).End(xlUp).Row 'SQL文リストの作成 'Excelデータ取得 For i = titleRow + 1 To endRow '指定行を繰り返す With wbws sql = _ "INSERT INTO " & Accessteble & "(" & _ .Cells(titleRow, 2).Value & ", " & _ .Cells(titleRow, 3).Value & ", " & _ .Cells(titleRow, 4).Value & ") " & _ "VALUES(" & _ "'" & .Cells(i, 2).Value & "', " & _ "'" & .Cells(i, 3).Value & "', " & _ .Cells(i, 4).Value & ");" End With 'コレクションへ追加 sqlList.Add sql Next i 'iを次の値にしてForへ戻る 'Access絶対パス指定 conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data " & _ "Source=C:\Users\○○\Desktop\注文管理.accdb" 'DB接続 con.Open ConnectionString:=conStr DoCmd.SetWarnings False '実行文 For Each sql In sqlList 'SQL文リストをループ con.Execute sql '1行ずつ取り出し実行 Next sql con.DoCmd.SetWarnings True con.Close: Set con = Nothing End Sub

  • アクセス2007 テーブルの全削除とデータ移動

    アクセス2007 テーブルの全削除とデータ移動 全テーブルを削除して、データをインポートしようとしています。 質問1. 下記のコードで、リレーションの張ってあるテーブルの削除でエラーになります。 でも、DoCmd.SetWarnings Falseの状態で、手動で削除するとエラーになりません。 だったらと思い、コードにDoCmd.SetWarnings Falseを追加したのですが、やはりエラーになります。 対処法はないでしょうか? 質問2. テーブルの中に「~TMP******」という勝手に作られたテーブルは、削除してもいいものなのでしょうか? 質問3. 削除後にインポートをしたいのですが。 手動でアクセスメニュー>外部データ>アクセス(のインポート)>現在の~~>すべて選択(テーブル)>OK これを実現するVBの記述は、どんなコードになるのでしょうか? --------------------------------------------------------------------- Private Sub 旧バージョンからデータ移動_Click() Dim i As Integer Dim tbls As DAO.TableDefs Dim tbl As DAO.TableDef '開いているフォーム全てを閉じる For i = Forms.Count - 1 To 0 Step -1 DoCmd.Close acForm, Forms(i).Name Next i Set tbls = CurrentDb.TableDefs DoCmd.SetWarnings False  '追加-------------------    ’全テーブル削除 For Each tbl In tbls If InStr(1, tbl.Name, "MSys", vbBinaryCompare) = 0 And InStr(1, tbl.Name, "~TMP", vbBinaryCompare) = 0 Then tbls.Delete (tbl.Name) End If Next DoCmd.SetWarnings True   '追加----------------   ’旧バージョンからのデータインポート   ’VBコードがわかりません End Sub ------------------------------------------------------------------------- ※旧バージョンとはアクセス本体ではなく、自分でつくったDBの旧バージョンです。 複数質問で申し訳ありませんが、よろしくお願い致します。

  • Access2000 VBAについて質問です。

    Access2000 VBAについて質問です。 下記ソースコードでUPDATE(更新)しているのですが、バチンとAccessが落ちてしまいます。 Private sub UPDATESQL() StrSQL = "SELECT * FROM T_StandardList WHERE ID = " & Me.ID Set ct = CurrentProject.Connection RS.CursorLocation = adUseClient RS.Open StrSQL, ct, adOpenDynamic, adLockOptimistic RS![filed1] = Me![Value1] RS![filed2] = Me![Value2] RS![filed3] = Me![Value3] RS![filed4] = Me![Value4]      Call CloseButton_Click Set RS = Nothing Set ct = Nothing End Sub Private Sub CloseButton_Click() DoCmd.SetWarnings False 'SQLの実行 DoCmd.RunSQL "DELETE FROM T_TempList" DoCmd.Close acForm, Me.Name DoCmd.SetWarnings True End Sub CloseButtonをクリックしても落ちることがあるので、CloseButton_Click関数が怪しいとは感じます。 どなたか詳しい方アドバイスよろしくお願いいたします。 m(_ _)m

  • Access2002のコンパイルエラーについて

    Access2002を使っていて、印刷ボタンを押したら、下記のような見たことのない画面になり、 「コンパイルエラー end function が必要です。」というメッセージが出てきました。 どなたか詳しい方、修復の方法を教えて下さい。よろしくお願いします。 Private Function PfDataMake() As Boolean 'On Error GoTo Err_PfDataMake Dim St_Sql As String Dim Ln_Cnt As Long Dim Rs_Cnt As Recordset Dim Rs_Cnt2 As Recordset Dim In_Cnt As Long Dim End_Flg As Boolean Dim Code1 As Long Dim Gokei As Long Dim Gohan As Long Dim Okayu As Long Dim Josyoku As Long Dim Kizami As Long Dim ChoKizami As Long Dim GenEn As Long Dim Kome As String Dim Okazu As String Dim Enbun As String Dim Hiduke As Date Dim Youbi As String 'W_発注食数合計の初期化 St_Sql = "Delete From W_発注食数合計 ;" DoCmd.RunSQL (St_Sql) 'W_発注食数明細の初期化 St_Sql = "Delete From W_発注食数明細 ;" DoCmd.RunSQL (St_Sql) '///// 対象データを抽出 ///// St_Sql = "SELECT * " St_Sql = St_Sql & "FROM W_配食入力 " '/// 20060423追加 出力対象「前日キャンセル」追加 start /// 'St_Sql = St_Sql & "WHERE W_配食入力.キャンセル = 0" 'St_Sql = St_Sql & "WHERE (W_配食入力.キャンセル = 0) or (W_配食入力.キャンセル = 2)" St_Sql = St_Sql & "WHERE (W_配食入力.配達 <> 3) and (W_配食入力.配達 <> 4)" '/// 20060423追加 end /// St_Sql = St_Sql & " ORDER BY W_配食入力.利用者コード ;" '件数を取得 Set Rs_Cnt = CurrentDb.OpenRecordset(St_Sql) Ln_Cnt = Rs_Cnt.RecordCount End_Flg = False 'レコード無し判定 If Rs_Cnt.EOF = True Or Rs_Cnt.BOF = True Then End_Flg = True End If Gokei = 0 Gohan = 0 Okayu = 0 Josyoku = 0 Kizami = 0 ChoKizami = 0 GenEn = 0 'ループ処理 Rs_Cnt.MoveFirst Hiduke = Rs_Cnt("日付") Youbi = Rs_Cnt("曜日") Do Until Rs_Cnt.EOF = True Gokei = Gokei + 1 Select Case Rs_Cnt("米") Case 1 Gohan = Gohan + 1 Kome = " " Case Else Okayu = Okayu + 1 Kome = "おかゆ" End Select Select Case Rs_Cnt("おかず") Case 1 Josyoku = Josyoku + 1 Okazu = " " Case 2 Kizami = Kizami + 1 Okazu = "刻み" Case Else ChoKizami = ChoKizami + 1 Okazu = "超刻み" End Select Select Case Rs_Cnt("減塩") Case 1 Enbun = " " Case 2 GenEn = GenEn + 1 Enbun = "減塩" End Select Code1 = Rs_Cnt("利用者コード") St_Sql = "SELECT D_利用者.シメイ " St_Sql = St_Sql & "FROM D_利用者 " St_Sql = St_Sql & "WHERE D_利用者.利用者コード = " & Code1 St_Sql = St_Sql & " ORDER BY D_利用者.利用者コード ;" '件数を取得 Set Rs_Cnt2 = CurrentDb.OpenRecordset(St_Sql) Ln_Cnt = Rs_Cnt2.RecordCount St_Sql = "INSERT INTO W_発注食数明細 VALUES (" & Code1 & "," St_Sql = St_Sql & "'" & Rs_Cnt("利用者氏名") & "','" & Rs_Cnt2("シメイ") & "'," St_Sql = St_Sql & "'" & Rs_Cnt("主食") & "','" & Rs_Cnt("副食") & "'," St_Sql = St_Sql & "'" & Kome & "','" & Okazu & "','" & Enbun & "'" St_Sql = St_Sql & ") ;" DoCmd.RunSQL (St_Sql) Rs_Cnt.MoveNext Loop St_Sql = "INSERT INTO W_発注食数合計 VALUES ('" & Hiduke & "'," St_Sql = St_Sql & "'" & Youbi & "'," & Gokei & "," & Gohan & "," & Okayu & "," St_Sql = St_Sql & Josyoku & "," & Kizami & "," & ChoKizami & "," & GenEn St_Sql = St_Sql & ") ;" DoCmd.RunSQL (St_Sql) 'レコードセットの終了 Rs_Cnt.Close Rs_Cnt2.Close Exit Function Err_PfDataMake: Resume Next

  • オラクルからAccessにデータ追加

    オラクルから、必要なデータを抜出し加工の為のDBをAccessで作成していますが、オラクルから抜き出したデータ(レコードセット)を、どうやってAccessのテーブルに書き込めばよいかがわかりません。 ◎環境 Oracle:10g Access:2010 ◎現在の状況 Dim CON As New ADODB.Connection Dim RS As ADODB.Recordset Dim SQL As String Dim i As Integer 'DB接続定義 CON.Open "DSN=DNS名;UID=ユーザー名;PWD=パスワード;" 'SQL文 SQL = "SELECT " SQL = SQL & "カラム1," SQL = SQL & "カラム2," SQL = SQL & "カラム3" SQL = SQL & "FROM オラクルテーブル名 " SQL = SQL & "WHERE 抽出条件 " SQL = SQL & "AND 抽出条件" SQL = SQL & "GROUP BY カラム" SET RS = CON.EXCUTE(SQL) For i = 1 To 10 Debug.Print rs(カラム1) & rs(カラム2) next i ここまでは、オラクルのテーブルから、レコードセットにデータが取り込まれてます。 rs.close: SET RS = Nothing con.close:SET CON=Nothing end sub 案1 レコードセットのデータを、Access側のテーブルにループで回して、1行ずつデータ追加 案2 INTO句で直接、テーブル作成 調べていて、2通りのやり方があると思うのですが、どちらにしても、テーブルへの書き込み方がわかりません。 案1の場合、Access側のテーブルを開いてデータ追加する方法 ※同時に2つのテーブルを開くことになるのでは? 案2の場合、SQL文はオラクルで処理する為の物なので、AccessテーブルのINTO句が使えるのか? オラクルのテーブルをリンクする事も考えたのですが、実際動かすPCにはAccessRuntimeしかインストールしてませんので、オラクルのテーブルをリンクしてくれませんでした。 よい方法があれば、アドバイスを頂けたら幸いです。

  • EXCELファイルからACCESSへインポート

    質問させていただきます。 ACCESSのフォームから、EXCELファイルを選択してEXCELの内容を、 テーブルにインポートさせたいのですが。以下の方法で行って いるのですが、テーブルに反映されません。 Private Sub cmd_Import_Click() Dim InitialFileName As String Dim varTitle As Variant Dim FileName As String InitialFileName = "hoge.xls" varTitle = "ファイルを開く" FileName = GETHOGEOPEN(varTitle, InitialFileName) DoCmd.SetWarnings False DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "T_HOGE", FileName, True DoCmd.SetWarnings True MsgBox "完了しました" End Sub ACCESS → ACCESS2003 SP3 EXCEL →EXCEL2003 SP3 よく見ると、すでにEXCELのバージョン指定が違う(汗) これが原因かも・・・・(汗) わかる方がいらっしゃったら教えてください。

専門家に質問してみよう