Private Sub UserForm_Initialize()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sqlSorgusu As String
Dim i As Integer, j As Integer
Dim rowIndex As Long
Dim gosterilecekSutunlar As Variant
Dim sutunGenislikleri As String
' Hangi sütunlar gösterilecek (max 10)
gosterilecekSutunlar = Array(0, 1, 2, 3, 4, 7, 8, 10, 11, 12)
' Genişlikler: 10 değer olmalı
sutunGenislikleri = "15;110;70;70;60;80;130;70;70;90"
Set cn = New ADODB.Connection
cn.ConnectionString = "Driver={ODBC Driver 17 for Sql Server};" & _
"Server=OĞUZ\SQLEXPRESS;" & _
"Database=db_Personel;" & _
"Trusted_Connection=Yes;"
On Error GoTo HataBaglanti
cn.Open
On Error GoTo 0
sqlSorgusu = "SELECT * FROM tbl_Personel;"
Set rs = New ADODB.Recordset
On Error GoTo HataVeriOku
rs.Open sqlSorgusu, cn, adOpenStatic, adLockReadOnly
On Error GoTo 0
If rs.EOF Then GoTo TemizleHerşey
With lstPersonel
.Clear
.ColumnCount = UBound(gosterilecekSutunlar) + 1
.ColumnWidths = sutunGenislikleri
.MultiSelect = 0
End With
' Verileri ekle
Do While Not rs.EOF
lstPersonel.AddItem NzText(rs.Fields(gosterilecekSutunlar(0)).Value)
rowIndex = lstPersonel.ListCount - 1
For j = 1 To UBound(gosterilecekSutunlar)
lstPersonel.List(rowIndex, j) = NzText(rs.Fields(gosterilecekSutunlar(j)).Value)
Next j
rs.MoveNext
Loop
lstPersonel.ListIndex = -1
TemizleHerşey:
rs.Close: cn.Close
Set rs = Nothing: Set cn = Nothing
Exit Sub
HataBaglanti:
MsgBox "Veritabanına bağlanamadı: " & Err.Description, vbCritical
Resume TemizleHerşey
HataVeriOku:
MsgBox "Veri okunamadı: " & Err.Description, vbCritical
Resume TemizleHerşey
End Sub
Benim internetten bulduğum çözümde şu şekilde. Sadece 10 adet sütun gösterilebiliyor ama koddan da anlaşılacağı üzere onları da seçme şansınız var.
Access Çekirgesi
![[Resim: img-cray.gif]](https://www.accesstr.net/images/smilies/img-cray.gif)
![[Resim: img-cray.gif]](https://www.accesstr.net/images/smilies/img-cray.gif)