Page 54 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼アクセスの現在の状態を知りたい。 初心者M 02/9/29(日) 17:28 ┗Re:アクセスの現在の状態を知りたい。 イケガミ 02/9/30(月) 8:37 ┗接続しただけではAccessは開かない? 初心者M 02/10/1(火) 18:49 ┗Re:接続しただけではAccessは開かない? こうちゃん 02/10/3(木) 8:53 ┗Re:接続しただけではAccessは開かない? イケガミ 02/10/3(木) 9:12 ┗ありがとうございます。 初心者M 02/10/5(土) 7:50 ─────────────────────────────────────── ■題名 : アクセスの現在の状態を知りたい。 ■名前 : 初心者M ■日付 : 02/9/29(日) 17:28 -------------------------------------------------------------------------
こんにちは。 アクセスデータをエクセルで操作し、結果をエクセルに表示する処理を考えています。 ADOでアクセスに接続し、エクセルのシートに設定した番号と一致したものをフィルター処理し、エクセルに取り込みたいのですが、フィルターを掛けた状態のアクセスの状態を見て確認するには どうしたらいいのでしょうか? 'ACCESSに接続 Set AccCn = New ADODB.Connection AccCn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strpath & "\" & strDBname AccCn.Open 'Recordsetオブジェクトの作成 Set AccRst = New ADODB.Recordset AccRst.Source = strTname 'テーブル名 AccRst.ActiveConnection = AccCn AccRst.Open iField = AccRst.Fields.Count 'フィールド数 'キー列と一致するものを検索し、データをエクセルに転記 i1 = Cells(1, "A").End(xlDown).Row i = 2 For i = 2 To i1 Worksheets("○○1").Select 'フィルター AccRst.Filter = strDBkey & "=" & Cells(i, lngretu1) 'ID i2 = 0 lcount = 2 Do Until AccRst.EOF = True Worksheets("○○2").Select i2 = 0 Do While i2 < iField Cells(lcount, 1 + i2) = AccRst.Fields(i2) 'AA列〜表示 i2 = i2 + 1 'フィールド数 AccRst.MoveNext '次のレコードに Loop lcount = lcount + 1 Loop Next i また、このコードを実行すると、処理途中で エラーが発生するようなのですが、何が原因かわかりません。 アドバイス、よろしくおねがいします。 |
>ADOでアクセスに接続し、エクセルのシートに設定した番号と一致したものを >フィルター処理し、エクセルに取り込みたいのですが、フィルターを掛けた >状態のアクセスの状態を見て確認するには どうしたらいいのでしょうか? Excelのシート上で指定した条件に一致するレコードを、抽出できれば いいのですよね? でしたら、VBAでSQL文を作成して、それを元にレコードセットを取得し、 CopyFromRecordset でレコードをExcelに出力すればいいと思います。 |
お返事、ありがとうございました。 私は ADOで接続 = ACCESSファイルが開いた状態 かと思っていたのですが、ちがうんですね。 DAO や ADO で接続するというのは、ファイルを開かずに、中のデータだけを操作できるという事なんでしょうか? |
初心者M さん、こんにちは >お返事、ありがとうございました。 > >私は ADOで接続 = ACCESSファイルが開いた状態 かと思っていたのですが、ちがうんですね。 > >DAO や ADO で接続するというのは、ファイルを開かずに、中のデータだけを操作できるという事なんでしょうか? ファイル(データベース)は開いていますが、Accessアプリケーションは開始していない状態と理解したほうが、もう少し正確ですね。 > AccRst.Source = strTname 'テーブル名 > AccRst.ActiveConnection = AccCn > AccRst.Open イケガミさんのおっしゃるのは、上記を例えばこんな感じで・・ Dim strSQL strSQL="SELECT * FROM " & strTname strSQL=strSQL & "WHERE " & strDBkey & "=" & Cells(i, lngretu1) AccRst.Open strSQL, AccCn のようにフィルター条件をWhere条件としたSQLでレコードセットをクエリすればいいんじゃないかということです。(よね?イケガミさん) #横レス失礼>イケガミさん |
To こうちゃんさん > フィルター条件をWhere条件としたSQLでレコードセットをクエリすれば > いいんじゃないかということです。(よね?イケガミさん) そのとおりです。フォローありがとうございます。 #どう回答すればいいのか分からず、そのままになってました。。 |
ありがとうございました。 教本では疑問が膨らむばかりでして、このHPでとても助かってます。 ACCESS超初心者なんで接続もクエリーもわからなくて、試行錯誤してます。 先日のエラーは、繰り返し処理の部分に間違いがあり、どうにかなりました。 またいろいろ教えてください。 |