access ten listbox a veri çekme

yanginci34

Altın Üye
Katılım
6 Temmuz 2010
Mesajlar
1,657
Excel Vers. ve Dili
excel2016
Altın Üyelik Bitiş Tarihi
12-10-2026
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

Katılım
11 Temmuz 2024
Mesajlar
324
Excel Vers. ve Dili
Excel 2021 Türkçe
Merhaba, şu şekilde dener misiniz yedek aldıktan sonra;

Kod:
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
    
    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 = "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
    
    Me.lstKayıtlar.Clear
    Me.lstKayıtlar.ColumnCount = 16
    Me.lstKayıtlar.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"
    
    Dim rowCount As Integer
    rowCount = 0
    
    If Not rs.EOF Then
        rs.MoveFirst
        Do Until rs.EOF
            rowCount = rowCount + 1
            rs.MoveNext
        Loop
        
        If rowCount > 0 Then
            Me.lstKayıtlar.RowSource = ""
            rs.MoveFirst
            
            Dim listData() As String
            ReDim listData(0 To rowCount - 1, 0 To 15)
            
            Dim currentRow As Integer
            currentRow = 0
            
            Do Until rs.EOF
                For i = 0 To 15
                    If IsNull(rs.Fields(i).Value) Then
                        listData(currentRow, i) = ""
                    ElseIf IsDate(rs.Fields(i).Value) Then
                        listData(currentRow, i) = Format(rs.Fields(i).Value, "dd.mm.yyyy")
                    Else
                        listData(currentRow, i) = CStr(rs.Fields(i).Value)
                    End If
                Next i
                currentRow = currentRow + 1
                rs.MoveNext
            Loop
            Me.lstKayıtlar.List = listData
        End If
    End If
    
    rs.Close
    cnn.Close
    Set rs = Nothing
    Set cnn = Nothing
End Sub
 
Üst