2011-11-01 5 views
0

다음 코드가 있습니다 :Excel에서 레코드 세트의 데이터를 가져 오는 방법은 무엇입니까?

Dim cn As Object 
Dim rs As Object 
Dim strSql As String 
Dim strConnection As String 
Dim AppPath As String 
Set cn = CreateObject("ADODB.Connection") 
AppPath = Application.ActiveWorkbook.Path 

Set rs = CreateObject("ADODB.RecordSet") 

strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
    "Data Source=" & AppPath & "\Masterlist_Current_copy.accdb;" 

strSql = "SELECT [Neptune Number],[Description],[Manufacturer],[Manufacturer P/N] FROM [All Components];" 
cn.Open strConnection 
Set rs = cn.Execute(strSql) 

'Need Code here to get Info out of recordset 

쿼리 결과가 덤프 된 레코드 집합의 정보를 얻으려고합니다. 레코드 집합을 쿼리하고 "해왕성 번호"필드에 특정 값이있는 행 수를 얻는 방법을 파악하려고합니다. 그런 다음 수정중인 워크 시트에 정확한 행 번호를 삽입합니다. 그런 다음 해당 값에 대한 데이터를 가져 와서 워크 시트에 삽입해야합니다.

참고 : 레코드 세트, 데이터 테이블 또는 다른 것이 사용되는지는 상관하지 않습니다. 위에서 설명한 내용 만 수행하면됩니다. 코드를 보여주십시오.

답변

1

가장 쉬운 방법은 얻을 수 당신이 필요로하는 기록들. .find 메서드는 레코드 집합을 필터링하는 데 사용할 수 있지만 원하는 정보 만 db에 요청하면이 인스턴스에서이 메서드를 사용하지 않아도됩니다.

당신이 사용할 수있는 레코드를 처리하는 다음 행 데이터의 시작점이고 colOffset는 데이터의 시작 열입니다

with rs 
    'will skip further processing if no records returned 
    if not (.bof and .eof) then 
     'assuming you do not need the headers 
     'loop through the recordset 
     do while not .eof 
      for i = 0 to .fields.count -1 
       'assuming the active sheet is where you want the data 
       cells(row, i + colOffset) = .fields(i).value 
      next 
      Rows(Row & ":" & Row).Insert 
      .movenext 
     loop 
    end if 
end with 

. 이 코드는 질문에 지정된 순서대로 작업을 수행하지 않습니다 (앞에 레코드 수를 계산하는 대신 필요에 따라 행을 삽입 함). .recordcount에 따라 찾기가 어려우므로 .recordcount을 사용하지 마십시오. 데이터베이스를 사용하면 올바른 레코드 수가 반환되지 않습니다.

관련 문제