Page 96 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼レコードセットをそのままテーブルのロードしたい しろまる 02/11/12(火) 1:13 ┗Re:レコードセットをそのままテーブルのロードしたい こうちゃん 02/11/13(水) 9:06 ─────────────────────────────────────── ■題名 : レコードセットをそのままテーブルのロードしたい ■名前 : しろまる ■日付 : 02/11/12(火) 1:13 -------------------------------------------------------------------------
いつもお世話になっております。 お知恵を貸してください。。 実現したいことは、レコードセットをそのままADDNEWメソッドで ACCESS上のテーブルにINSERTすることです. 現在ORACLE9iとACCESS2000で開発しています. (コード例) Sub Command1_Click() Dim DB As DAO.Database Dim qdf As DAO.QueryDef Dim SQL As String Dim rs As DAO.Recordset Dim ConnectStr As String ConnectStr = "ODBC;DSN=DSN名;UID=ACCESS01;PWD=ACCESS01;" SQL = "SELECT MAIN_CODE,SYS_CODE FROM TABLE1 WHERE MAIN_CODE ='001 '", '%');" Set DB = CurrentDb() Set qdf = DB.CreateQueryDef("") With qdf .Connect = ConnectStr .SQL = SQL .ReturnsRecords = True Set rs = .OpenRecordset ↑このレコードセットをACCESS上のテーブルにそのまま INSERTしたい. End With End Sub レコードセットをそのままテーブルにINSERTするにはどのように ADDNEWメソッドを記述すればよいかが分かりません。 大変申し訳ありませんが、ご教示願いたいと思います。 例えば、”T01"という既存のテーブルにINSERTするつもりです。 テーブル名"T01" 項目(MAIN_CODE,SYS_CODE) Dim Mydb As Database Do While Not dynOra.EOF Mydb.Execute "insert into T01" & _ "(MAIN_CODE,SYS_CODE)" & _ " VALUES " & _ "(" & rs.Fields & ");" dynOra.MoveNext Loop ↑上記の例だと、テーブルにレコードがインサートされませんでした. どうかご教示願います。 |
しろまるさん、おはようございます。 しろまるさんのコードではADDNEWメソッドを使っていないようですが、要はレコードが挿入できればいいのですよね? しろまるさんのコードでは、どこのデータを読んでどこのテーブルに挿入するのかがチョッと判然としないのですが・・ >実現したいことは、レコードセットをそのままADDNEWメソッドで >ACCESS上のテーブルにINSERTすることです. >現在ORACLE9iとACCESS2000で開発しています. > >(コード例) >Sub Command1_Click() > Dim DB As DAO.Database > Dim qdf As DAO.QueryDef > Dim SQL As String > Dim rs As DAO.Recordset > Dim ConnectStr As String > > ConnectStr = "ODBC;DSN=DSN名;UID=ACCESS01;PWD=ACCESS01;" > > SQL = "SELECT MAIN_CODE,SYS_CODE FROM TABLE1 WHERE MAIN_CODE ='001 >'", '%');" > Set DB = CurrentDb() > Set qdf = DB.CreateQueryDef("") > > With qdf > .Connect = ConnectStr > .SQL = SQL > .ReturnsRecords = True > Set rs = .OpenRecordset > ↑このレコードセットをACCESS上のテーブルにそのまま > INSERTしたい. >End With > >End Sub ここではどちらのテーブル読んでるのでしょう?オラクル? > > >レコードセットをそのままテーブルにINSERTするにはどのように >ADDNEWメソッドを記述すればよいかが分かりません。 >大変申し訳ありませんが、ご教示願いたいと思います。 > >例えば、”T01"という既存のテーブルにINSERTするつもりです。 >テーブル名"T01" >項目(MAIN_CODE,SYS_CODE) > >Dim Mydb As Database > >Do While Not dynOra.EOF 「dynOra」はどこで作ってるのか不明ですが、これがAccessのダイナセットかな?・・ とにかく、insert intoでレコードを挿入する場合の一般論ですが、VALUESに値を列挙すればいいのではないですか? > Mydb.Execute "insert into T01" & _ > "(MAIN_CODE,SYS_CODE)" & _ こんな感じでどうですか? > " VALUES " & _ "(" & rs("MAIN_CODE") & ", " & rs("SYS_CODE") ");" > dynOra.MoveNext > Loop dynOraをLoopしている意味をよく理解していませんので、はずしているかもしれませんが・・ 上記のモジュールでとったレコード(MAIN_CODE ='001%'のオラクルのレコード)をすべて、MydbのT01テーブルにインサートするのであれば・・ Do While Not rs.EOF Mydb.Execute "insert into T01" & _ "(MAIN_CODE,SYS_CODE)" & _ " VALUES " & _ "(" & rs("MAIN_CODE") & ", " & rs("SYS_CODE") ");" rs.MoveNext Loop でいいのではないですか? |