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
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
Nasıl 'connectDatabase' olduğunu gösterebilir misiniz? –
barrowc - Öneriniz sorunumu çözdü! Bunu bir cevap olarak kabul ederseniz, onu kabul edildi olarak işaretleyebilirim! –