2014-09-06 3 views
2

VBA에서 액세스하려는 Localhost에 MySQL DB가 있습니다.ADO.RecordSet 개체가 전체 결과를 반환하지 않는 VBA에서 쿼리를 선택하십시오.

나는 MySQL에 대한 ODBC 연결을 설정했으며 결과를 쿼리 할 수 ​​있습니다.

현재 MySQL 테이블에는 반환되어야하는 2 행의 데이터가 있습니다. 그러나 "Recordset.Fields"의 "Items"는 마지막 행만 보유합니다.

Private Function OpenConnection() As ADODB.connection 

'Read type and location of the database, user login and password 

    Dim source As String, location As String, user As String, password As String 
    source = "taskman" 
    location = "localhost" 
    user = "root" 
    password = "" 

'Build the connection string depending on the source 

    Dim connectionString As String 

    connectionString = "Driver={MySQL ODBC 5.3 Unicode Driver};Server=" & location & ";Database=taskman;UID=" & user & ";PWD=" & password 

'Create and open a new connection to the selected source 
    Set OpenConnection = New ADODB.connection 
    Call OpenConnection.Open(connectionString) 

End Function 

전체 쿼리 결과가 유지되지 않는 이유를 알아내는 저를 도와주세요 다음 대해서 openConnection UDF는 여기

Public Sub Query_() 

Dim connection As connection 
Set connection = OpenConnection() 

' Create a record-set that holds all the tasks 
Dim records As ADODB.Recordset 
Set records = New ADODB.Recordset 
Call records.Open("SELECT pk_Client, PAN_Client FROM client", connection) 

Dim result() As String 

For Each Item In records.Fields 

    MsgBox (Item.OriginalValue) 

Next 

connection.Close 

End Sub 

을 다음과 같이

내 코드입니다.

감사

-Chinmay 카 마트

+0

시도는 루프 – Pundit

+0

위해 나는에있어 전에 records.MoveFirst를 사용하는 그것. 업데이트됩니다. 감사합니다 –

+0

@ Pundit : 적절한 방향으로 나를 가리켜 주셔서 감사합니다. 희망이 다른 사람들에게도 도움이됩니다. –

답변

2

이는 어떻게 좋겠 일반적으로 코드 작동 이런 종류 :

Public Sub Query_() 

    Dim conn As ADODB.Connection 
    Dim records As ADODB.Recordset, fld As ADODB.Field 

    Set conn = OpenConnection() 
    Set records = New ADODB.Recordset 

    records.Open "SELECT pk_Client, PAN_Client FROM client", conn 

    'check you got any records 
    If Not records.EOF Then 

     'loop over records 
     Do While Not records.EOF 

      Debug.Print "-------------------------" 

      For Each fld In records.Fields 
       Debug.Print fld.Name, fld.OriginalValue 
      Next 

      records.movenext 'next record 
     Loop 

    End If 

    records.Close 
    conn.Close 

End Sub