2016-04-08 22 views
1

VBA aracılığıyla bir MySQL veritabanına bir bağlantım var, ancak SHOW TABLES sorgusundaki değerleri döndürmek için uygun sözdizimini belirleyemiyorum. Öğe istenen ad veya sıra karşılık gelen koleksiyonunda bulunabilir olamaz -ADODB - VBA - MySQL - SHOW TABLES Sözdizimi

Çalışma zamanı hatası '3265': olarak

Dim rs As Object 
Dim ws As Worksheet 
Dim sqlstr As String 
Set rs = CreateObject("ADODB.Recordset") 
Set ws = ThisWorkbook.Worksheets(1) 
sqlstr = "SHOW TABLES" 

Call connectDatabase 
rs.Open sqlstr, DBCONT 

For i = 0 To (rs.RecordCount - 1) 
    ws.Cells(i+1, 1).value = rs(i) 
    rs.movenext 
Next i 

rs.Close 
Set rs = Nothing 
Call closeDatabase 

hata bildirimi okur.

Bu tam aynı kod ben bir "SELECT columnName1 FROM tableName" sorgudan aynı zamanda bir "SHOW COLUMNS FROM tableName" sorgudan sonuçlarını görüntülemek için çalışıyorum ve am zaman mükemmel çalışıyor. Hata, Tablo adlarının bir Kayıt Kümesi olarak döndürülmemesi gerektiğine inanıyorum.

Public DBCONT As Object 

Public Function connectDatabase() 
    Set DBCONT = CreateObject("ADODB.Connection") 

    Dim Server_Name As String 
    Dim Database_Name As String 
    Dim User_ID As String 
    Dim Password As String 
    Dim Port As String 
    Dim sConn As String 

    Server_Name = "localhost" 
    Database_Name = "databaseName" 
    User_ID = "userID" 
    Password = "password" 
    Port = "3306" 

    sConn = "Driver={MySQL ODBC 5.1 Driver};Server=" & _ 
       Server_Name & ";Database=" & Database_Name & _ 
       ";UID=" & User_ID & ";PWD=" & Password & ";Option=3;" 

    DBCONT.Open sConn 
    DBCONT.cursorlocation = 3 

End Function 

Bu benim yakın veritabanı nasıl:

istediği gibi

, bu benim veritabanına bağlanmak nasıl

yılında: Açıklamalarda barrowc tarafından Yanıtlanmış

Public Function closeDatabase() 
    On Error Resume Next 
    DBCONT.Close 
    Set DBCONT = Nothing 
    On Error GoTo 0 
End Function 
+1

Genel olarak For..Next döngüsünü 'ws.Cells (1, 1) .CopyFromRecordset rs' ile değiştirebilirsiniz. Bu özel hataya rağmen yardımcı olur mu emin olalım – barrowc

+0

Nasıl 'connectDatabase' olduğunu gösterebilir misiniz? –

+0

barrowc - Öneriniz sorunumu çözdü! Bunu bir cevap olarak kabul ederseniz, onu kabul edildi olarak işaretleyebilirim! –

cevap

0

genel, tüm For..Next döngü yerine, bu belirli bir hata ile yardımcı olurdu emin değilsiniz - 23:54

23:54 0: