• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Soru access ten verileri listbox a getirme

yanginci34

Yeni Üye
Katılım
18 Ocak 2023
Mesajlar
81
Çözümler
13
Aldığı beğeni
63
Excel V
Office 2016 TR
Konu Sahibi
arkadaşlar merhaba; aşağıdaki kod ile veri listelemeye çalışıyorum ama her seferinde "Could not set the List property. Invalid property value" hatası alıyorum ekte de access dosyasını paylaşıyorum şimdiden teşekkür ederim
Sub KayıtListele()
Dim cnn As Object, rs As Object
Dim sql As String
Dim i As Integer
Dim rowData(0 To 15) As String ' 0 tabanlı dizi çünkü .List kullanacağız

' Bağlantı oluştur
Set cnn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\Saha.accdb"

' SQL Sorgusu
sql = "SELECT tblTespitler.TespitID, tblKategoriler.KategoriAdi, tblDurumlar.DurumAdi, tblIlceler.IlceAdi, " & _
"tblMahalleler.MahalleAdi, tblYollar.YolAdi, tblTespitler.Konum, tblTespitler.Aciklama, " & _
"tblTespitler.Resim1, tblTespitler.Resim2, tblTespitler.Resim3, tblTespitler.Tarih, " & _
"tblTespitler.Ekleyen, tblTespitler.Onay, tblTespitler.TespitSayisi, tblTespitler.YapimTarihi " & _
"FROM (((((tblTespitler " & _
"LEFT JOIN tblIlceler ON tblTespitler.IlceID = tblIlceler.IlceID) " & _
"LEFT JOIN tblMahalleler ON tblTespitler.MahalleID = tblMahalleler.MahalleID) " & _
"LEFT JOIN tblYollar ON tblTespitler.YolID = tblYollar.YolID) " & _
"LEFT JOIN tblKategoriler ON tblTespitler.KategoriID = tblKategoriler.KategoriID) " & _
"LEFT JOIN tblDurumlar ON tblTespitler.DurumID = tblDurumlar.DurumID) " & _
"WHERE tblTespitler.Onay = False"

rs.Open sql, cnn, 1, 3

' ListBox başlıkları ve yapısı
With Me.lstKayıtlar
.Clear
.ColumnCount = 16
.ColumnWidths = "0 pt;80 pt;80 pt;80 pt;80 pt;100 pt;100 pt;100 pt;0 pt;0 pt;0 pt;80 pt;60 pt;50 pt;60 pt;80 pt"
End With

' Kayıtları döngüyle ekle
Do Until rs.EOF
For i = 0 To 15
If IsNull(rs.Fields(i).Value) Then
rowData(i) = ""
ElseIf IsDate(rs.Fields(i).Value) Then
rowData(i) = Format(rs.Fields(i).Value, "dd.mm.yyyy")
Else
rowData(i) = CStr(rs.Fields(i).Value)
End If
Next i
Me.lstKayıtlar.AddItem rowData(0)
For i = 1 To 15
Me.lstKayıtlar.List(Me.lstKayıtlar.ListCount - 1, i) = rowData(i)
Next i
rs.MoveNext
Loop

' Temizlik
rs.Close: cnn.Close
Set rs = Nothing: Set cnn = Nothing
End Sub
 

Ekli dosyalar

anladığım kadarıyla sorunun sebebi liste kutusuna veri atama şekliniz
Me.lstKayıtlar.AddItem rowData(0)
additem yanılmıyorsam en fazla 10 sütuna izin veriyor onun yerine aşağıdaki kod kullanılabilir
öncelikle aşağıdaki kısmı silmelisiniz
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
sonrada onların yerine aşağıdaki satır eklenmeli
If Not rs.EOF = True Then lstKayıtlar.Column = rs.GetRows
formatlama işi sorgu kodunuzda yapılabilirsiniz yada
silinen kısmı aşağıdaki kod ile değiştirebilisiniz

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Alternatif olması açısından denermisiniz bu kod Access veritabanından verileri bir ListBox'a aktarmak için kullanabilirsiniz. Kod, veritabanına bağlanır, bir sorgu çalıştırır ve sonuçları ListBox'a aktarır.
 
Geri
Üst