Yalnız Mesajı Göster
Eski 08-03-2015, 23:02  
seyhan6591
 
Giriş: 11/04/2009
Şehir: Bursa
Mesaj: 43
Excel Vers. ve Dili:
2010 TR
Varsayılan MySQL bağlanma süresi ve bağlı kalma Yardım

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.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Global oConn As ADODB.Connection
Global rs As ADODB.Recordset
Global sorguizin As String
İle genel tanımlama yapıyorum.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
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
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.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
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
Teşekkürler.

Bu mesaj en son " 08-03-2015 " tarihinde saat 23:09 itibariyle seyhan6591 tarafından düzenlenmiştir....
seyhan6591 Çevrimdışı   Alıntı Yaparak Cevapla