başlıkları da alıyor ama yanılmıyorsam Excel userformdaki listboxlar başlığı sadece Excel sayfasından alırken kullanabiliyor onun için başlığı da diziye ekledim. bu durumda listboxta aşağı indiğinizde başlık alanı da dizi içinde olduğundan kayboluyor
listbox'ın header özelliği HAYIR yapılmalı
Private Sub UserForm_Initialize()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sqlSorgusu As String
' Bağlantıyı hızlı şekilde aç
Set cn = New ADODB.Connection
cn.ConnectionString = "Driver={ODBC Driver 17 for Sql Server};" & _
"Server=OĞUZ\SQLEXPRESS;" & _
"Database=db_Personel;" & _
"Trusted_Connection=Yes;" & _
"Connect Timeout=5" ' Bağlantıyı 5 saniyede tamamla
cn.Open
' Hızlı veri çekme için Sql sorgusunu hazırlama
sqlSorgusu = "SELECT * FROM [tbl_Personel] WITH (NOLOCK);" ' Kilitlemeyi önleyerek hızlı okuma sağlar
Set rs = New ADODB.Recordset
rs.CursorType = adOpenForwardOnly ' İleriye doğru en hızlı okuma için
rs.LockType = adLockReadOnly ' Veriyi sadece okuma modunda açarak hızlandırma
rs.Open sqlSorgusu, cn
lstPersonel.ColumnCount = rs.Fields.Count
' Veriyi diziye aktar
If Not rs.EOF = True Then
Dim dz As Variant, dzS As Variant
dz = rs.GetRows
ReDim dzS(LBound(dz) To UBound(dz), LBound(dz, 2) - 1 To UBound(dz, 2))
For x = LBound(dz) To UBound(dz)
For y = LBound(dz, 2) To UBound(dz, 2)
dzS(x, y) = dz(x, y)
Next y
Next x
For x = 0 To rs.Fields.Count - 1
dzS(x, -1) = rs(x).Name
Next x
lstPersonel.Column = dzS
End If
' Temizlik
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
Exit Sub
HataBaglanti:
MsgBox "Veritabanına bağlanırken bir hata oluştu: " & Err.Description, vbCritical
' Hata durumunda bağlantı nesnelerini temizle
If Not cn Is Nothing Then
If cn.State = adStateOpen Then cn.Close
Set cn = Nothing
HataVeriOku:
MsgBox "Personel verilerini okurken bir hata oluştu: " & Err.Description, vbCritical
' Hata durumunda kayıt kümesi nesnesini temizle
If Not rs Is Nothing Then
If rs.State = adStateOpen Then rs.Close
Set rs = Nothing
End If
' Bağlantıyı da kapatmayı unutmayın (eğer açıksa)
If Not cn Is Nothing Then
If cn.State = adStateOpen Then cn.Close
Set cn = Nothing
End If
End If
End Sub
eğer başlıkların başlık formatında görünmesini istiyorsanız verileri excl sayfasına ekleyip oradan çekmelisiniz