過去ログ

                                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


また、このコードを実行すると、処理途中で エラーが発生するようなのですが、何が原因かわかりません。

アドバイス、よろしくおねがいします。

 ───────────────────────────────────────  ■題名 : Re:アクセスの現在の状態を知りたい。  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/9/30(月) 8:37  -------------------------------------------------------------------------
   >ADOでアクセスに接続し、エクセルのシートに設定した番号と一致したものを
>フィルター処理し、エクセルに取り込みたいのですが、フィルターを掛けた
>状態のアクセスの状態を見て確認するには どうしたらいいのでしょうか?

Excelのシート上で指定した条件に一致するレコードを、抽出できれば
いいのですよね?

でしたら、VBAでSQL文を作成して、それを元にレコードセットを取得し、
CopyFromRecordset でレコードをExcelに出力すればいいと思います。

 ───────────────────────────────────────  ■題名 : 接続しただけではAccessは開かない?  ■名前 : 初心者M  ■日付 : 02/10/1(火) 18:49  -------------------------------------------------------------------------
   お返事、ありがとうございました。

私は ADOで接続 = ACCESSファイルが開いた状態 かと思っていたのですが、ちがうんですね。

DAO や ADO で接続するというのは、ファイルを開かずに、中のデータだけを操作できるという事なんでしょうか?

 ───────────────────────────────────────  ■題名 : Re:接続しただけではAccessは開かない?  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/10/3(木) 8:53  -------------------------------------------------------------------------
   初心者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でレコードセットをクエリすればいいんじゃないかということです。(よね?イケガミさん)

#横レス失礼>イケガミさん

 ───────────────────────────────────────  ■題名 : Re:接続しただけではAccessは開かない?  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/10/3(木) 9:12  -------------------------------------------------------------------------
   To こうちゃんさん

> フィルター条件をWhere条件としたSQLでレコードセットをクエリすれば
> いいんじゃないかということです。(よね?イケガミさん)

そのとおりです。フォローありがとうございます。
#どう回答すればいいのか分からず、そのままになってました。。

 ───────────────────────────────────────  ■題名 : ありがとうございます。  ■名前 : 初心者M  ■日付 : 02/10/5(土) 7:50  -------------------------------------------------------------------------
   ありがとうございました。
教本では疑問が膨らむばかりでして、このHPでとても助かってます。

ACCESS超初心者なんで接続もクエリーもわからなくて、試行錯誤してます。
先日のエラーは、繰り返し処理の部分に間違いがあり、どうにかなりました。

またいろいろ教えてください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 54