Skip to main content

AccessTr.neT


Hücre İçinde Virgülle Ayrılan "dersleri" Altalta Satır Olarak Listelemek.

Hücre İçinde Virgülle Ayrılan "dersleri" Altalta Satır Olarak Listelemek.

Çözüldü #1
Arkadaşlar merhaba e-okuldan öğrenci sorumluluk sınavlarını indirdim. Bunları ham veri halinde Excel ve Access ile tablolara dönüştürdüm. Öğrenci id ile dersleri ilişkilendirip. "dersler" alanındaki dersleri her öğrenci id ye karşılık "dersler" alanındaki verileri alt alta bir tabloda listelemek istiyorum. Teşekkürler.
.rar sınav plan ham.rar (Dosya Boyutu: 35,18 KB | İndirme Sayısı: 2)
Cevapla
#2
dilerim işinize yarar
modüle eklenecek fonksiyonların kodu
Maksimum sütun sayısını bulan fonk

Visual Basic Code
Public Function SplitStnSay(GVeri As String, Optional Ayrac As String = ",") As Integer
    On Error Resume Next
    Dim var As Variant
    Dim GAyrac As String
    GAyrac = Ayrac
    var = Split(GVeri, Ayrac)
    SplitStnSay = UBound(var) + 1
End Function

her sütundaki veriyi alan fonksiyon

Visual Basic Code
Public Function SplitVeriBul(GVeri As String, GSayi, Optional Ayrac As String = ",") As Variant
    On Error Resume Next
    Dim var As Variant
    Dim GAyrac As String
    GAyrac = Ayrac
    var = Split(GVeri, GAyrac)
    SplitVeriBul = var(GSayi)
End Function

sorguları yeniden oluşturan kod

Visual Basic Code
Public Function SorguYap()
    Dim sql, SqlStn As String
    Dim xStnSay, x As Integer
    Dim ADO_RS As Object

       sql = "SELECT  max(SplitStnSay(nz([DERSLER],'')))  FROM dersler_birlesik"
Set ADO_RS = CreateObject("adodb.recordset")
    ADO_RS.Open sql, CurrentProject.Connection, 3, 1

xStnSay = ADO_RS(0)
ADO_RS.Close
Set ADO_RS = Nothing

'hy Sorguyu sütunlara böl
SqlStn = ""
For x = 1 To xStnSay
    SqlStn = SqlStn & ", SplitVeriBul(nz([DERSLER],'')," & x - 1 & ") AS [DERSLERStn" & CStr(x) & "]"
Next x
     sql = "SELECT id, " & Mid(SqlStn, 2) & " FROM dersler_birlesik;"
    
    CurrentDb.QueryDefs("DrsBol").sql = sql

'hy Union____________________________
SqlStn = ""
For x = 1 To xStnSay
    SqlStn = SqlStn & " union all SELECT  id, Nz(DERSLERStn" & x & ",'') AS [DERSLERStn] from DrsBol " & _
                      " where Nz(DERSLERStn" & x & ",'')<>''" & vbCrLf
Next x
     sql = Mid(SqlStn, 11)
'
     'hy________________________________________
  
    CurrentDb.QueryDefs("DrsAyir").sql = sql
    DoCmd.OpenQuery "DrsAyir"
         
End Function

DrsAyir sorgusu dersleri satır halinde gösterir
ama şöyle bir sorun tablonuzdaki veriler değişken olduğu için sorgunun güncel olabilmesi için sorgu çalıştırılmadan önce SorguYap fonksiyonunun çağrılması gerek
Not: Bence kurduğunuz 1-1 ilişki sorun çıkarabilir, 2 tablonun da ID alanları otomatik tamsayı, kazara tabloların birinden silinecek veya sadece tablolardan birine eklenecek bir kayıt sisteminizin hatalı işlemesine neden olabilir

.rar sınav plan ham_hy.rar (Dosya Boyutu: 37,33 KB | İndirme Sayısı: 5)
Cevapla
#3
İlk önce verileri hatalı ıralanmış sandım fakat id ye göre sıralama yaptım sonuç doğru çıktı teşekkür ederim. Şimdi işin geri kalanını yapmak kaldı Img-grin
Cevapla
#4
çalışmanızın tamamını bilmiyorum o nedenle vardığım yargı yanlış olabilir ama ID alanınıza dikkat edin bu yapıyla ilerde sorun çıkabilir
iyi çalışmalar
Cevapla
#5
Merhaba,
yapmış olduğunuz modülde bir hata ortaya çıktı. Dersleri id ye göre doğru sıralamıyor. Acaba nerde hata var bakabilirmisiniz.
Cevapla
#6
Kontrol ettiğimde doğruydu hangi Idlerde hata veriyor?
Fonksiyonu nasil kullanıyorsunuz, resim ve dosyanızı da ekleyerek açıklar mısınız?
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task