- Katılım
- 11 Nisan 2009
- Mesajlar
- 43
- Excel Vers. ve Dili
- 2010 TR
MySQL veri tabanına VBA ile bağlantı kuruyorum. Bağlanma süresi uzun olduğundan, dosya açılırken bir kez bağlantı kuruyorum, sonra diğer işlemler o bağlantı üzerinden yürüyor, ancak bir yerde takıldım.
İle genel tanımlama yapıyorum.
Kodları ile Workbook open kısmında bağlantı kuruyorum.
Bu noktadan sonra INSERT yaptığımda bağlantıda sorun yokken (işlem 1sn'nin altında sürüyor), SELECT ile veri çekmeye çalıştığımda yeniden bağlantı istiyor. Neden olabilir?
Daha ayrıntılı açıklamam gerekirse; Aşağıdaki SELECT sorgusu, Workbook open'de açılan bağlantıyı kullanıyor (işlem kısa sürüyor), ancak ikinci defa çalıştırdığımda yine bağlantı istiyor.
Teşekkürler.
Kod:
Global oConn As ADODB.Connection
Global rs As ADODB.Recordset
Global sorguizin As String
Kod:
Set rs = New ADODB.Recordset
Set oConn = New ADODB.Connection
oConn.Open "DRIVER={MySQL ODBC 3.51 Driver};" & _
"SERVER=xx.xxx.x.xxx;" & _
"PORT=xxxx;" & _
"DATABASE=databaseeee;" & _
"USER=roottttt;" & _
"PASSWORD=123456;" & _
"Option=3"
sorguizin = "belli mysql sorguları"
rs.Open sorguizin, oConn, adOpenStatic
Bu noktadan sonra INSERT yaptığımda bağlantıda sorun yokken (işlem 1sn'nin altında sürüyor), SELECT ile veri çekmeye çalıştığımda yeniden bağlantı istiyor. Neden olabilir?
Daha ayrıntılı açıklamam gerekirse; Aşağıdaki SELECT sorgusu, Workbook open'de açılan bağlantıyı kullanıyor (işlem kısa sürüyor), ancak ikinci defa çalıştırdığımda yine bağlantı istiyor.
Kod:
Sub SORGUU()
Worksheets("SZ").Cells.ClearContents
TCno = "47704881421"
sorguizin = "SELECT * FROM kayitlar WHERE TC_KimlikNo=" & TCno & " AND Kullanici='Usserr'"
On Error GoTo baglan:
rs.Open sorguizin, oConn, adOpenStatic
GoTo atla:
baglan:
Call ConnectSQL
rs.Open sorguizin, oConn, adOpenStatic
atla:
oConn.Execute sorguizin
Dim myArray() 'bu satırdan şüpheleniyorum, ancak çözemedim
myArray = rs.GetRows()
sutun = UBound(myArray, 1)
satir = UBound(myArray, 2)
For k = 0 To sutun ' Using For loop data are displayed
Worksheets("SZ").Range("A1").Offset(0, k).Value = rs.Fields(k).Name
For R = 0 To satir
Worksheets("SZ").Range("A1").Offset(R + 1, k).Value = myArray(k, R)
Next
Next
son:
End Sub
Son düzenleme: