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
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
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
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