Metin içindeki virgülle ayrılan verileri farklı satıra yazma

1 2 3
04/05/2020, 20:18

POWER

Dosyayı açtıktan sonra YENITABLO tablosuna bakın boş olduğunu göreceksiniz veya boşaltın kayıt kalmasın.

Daha sonrra Form1 çalıştırın. Bu form YENITABLO yu istediğiniz formatta dolduracaktır...
04/05/2020, 20:57

berduş

Dilerim işinize yarar
açılan formdaki düğmeye basınca alanı parçalara ayırıp tabloya yeni kayıt olarak ekler, bitişik verili eski kayıtları siler
1 form, 1 modül ve 1 sorgu eklenmiştir
Modüldeki fonksiyonlar
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

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
formdaki kodlar
Private Sub BtnSay_Click()
   
    Dim sql, SqlStn, SqlEkle, SqlSil As String
    Dim xStnSay, x As Integer
      Sql = "SELECT  max(SplitStnSay([kisiler])) AS [HstStn] FROM Tablo1"

    CurrentDb.QueryDefs("KsBol").sql = sql
xStnSay = DMax("HstStn", "KsBol")

'hy Union____________________________
SqlStn = ""
For x = 1 To xStnSay
    SqlStn = SqlStn & " union all SELECT [sınıf],[sınıf durumu], Nz(SplitVeriBul([kisiler]," & x - 1 & "),'') AS [HstStn] from tablo1 " & _
                      " where Nz(SplitVeriBul([kisiler]," & x - 1 & "),'')<>'' and [kisiler] like '*,*'" & vbCrLf
Next x
    Sql = Mid(SqlStn, 11)

    Sql = " SELECT [sınıf],[sınıf durumu],[HstStn] FROM (" & Sql & ") as UnionQuery"
   
    CurrentDb.QueryDefs("KsBol").sql = sql

    SqlEkle = "INSERT INTO Tablo1 ([sınıf], [sınıf durumu], [kisiler]) " & _
              "SELECT KsBol.sınıf, KsBol.[sınıf durumu], KsBol.HstStn " & _
              "FROM KsBol"

    SqlSil = "DELETE " & _
              "FROM Tablo1 " & _
              "WHERE (((Tablo1.kisiler) Like ""*,*""))"

    CurrentDb.Execute SqlEkle
    CurrentDb.Execute SqlSil
End Sub
04/05/2020, 23:49

sfenksturk

Cevaplarınız için çok teşekkür ederim. konu power ve berduş'un yardımıyla çözülmüştür.
04/05/2020, 23:52

berduş

Iyice kontrol ettiniz mi? Az veride bende sorun çıkarmadı ama çok veride hatalı olabilir, ayrıca kodu ard arda bir kaç defa çalışırdınız mi? Aynı verileri tekrar ekliyor mu?
05/05/2020, 00:12

sfenksturk

power'in ki uzun verilerde sorun çıkarmadı ancak kişiler arasında bulunan ',' işareti silinmiyor. ancak sizin örnekte siliniyor. ancak sizin örnekte de bir defada 1600 veri ekleme yaptığımda şahıslar 4.000 veri üzerinde olduğundan sorgu hatası veriyor.
05/05/2020, 00:17

berduş

(05/05/2020, 00:12)sfenksturk yazdı: sizin örnekte de bir defada 1600 veri ekleme yaptığımda şahıslar 4.000 veri üzerinde olduğundan sorgu hatası veriyor.
tam olarak anlamadım izlediğiniz yolu anlatır mısınız?
1600 kayıt varken programı calistirdiginizda ne hatası veriyor
1 2 3