Virgülle Ayrılmış Verilerin Her Bir Değerini Yeni Kayıt Olarak Ekleme
#1
Herkese Merhaba,
Başlıktaki konu için internetten bir çözüm buldum ve projeme uyguladığımda sorun olmadı ama biliyorsunuz her ihtimali bazen deneyemiyoruz o yüzden aşağıdaki kod resimlerdeki sonucu üretme açısında handikapları var mı? 

objRegex.Pattern = "^\s+(.+?)$" yazan kısmın mesela ne işe yaradığını anlayamadım.

Visual Basic
  1.    Dim db As DAO.Database
  2.    Dim rsInput As DAO.Recordset
  3.    Dim rsOutput As DAO.Recordset
  4.    Dim strSQL As String
  5.    Dim strArr() As String
  6.    Dim objRegex As Object
  7.  
  8.    ' Access nesnelerini oluştur
  9.    Set db = CurrentDb
  10.    Set rsInput = db.OpenRecordset("YourInputTable", dbOpenSnapshot)
  11.    Set rsOutput = db.OpenRecordset("YourOutputTable", dbOpenDynaset)
  12.  
  13.    ' Regex nesnesini oluştur
  14.    Set objRegex = CreateObject("vbscript.regexp")
  15.    objRegex.Pattern = "^\s+(.+?)$"
  16.  
  17.    ' Giriş tablosundaki her kayıt için işlem yap
  18.    Do Until rsInput.EOF
  19.        strArr = Split(rsInput.Fields("Veri").Value, ",")
  20.  
  21.        ' Her bir eleman için işlem yap
  22.        For i = LBound(strArr) To UBound(strArr)
  23.            ' Yeni bir kayıt oluştur
  24.            rsOutput.AddNew
  25.            rsOutput.Fields("id").Value = rsInput.Fields("id").Value
  26.            rsOutput.Fields("Veri").Value = objRegex.Replace(strArr(i), "$1")
  27.            rsOutput.Update
  28.        Next i
  29.  
  30.        rsInput.MoveNext
  31.    Loop
  32.  
  33.    ' Nesneleri serbest bırak
  34.    rsInput.Close
  35.    rsOutput.Close
  36.    Set rsInput = Nothing
  37.    Set rsOutput = Nothing
  38.    Set db = Nothing
  39.    Set objRegex = Nothing




Eklenti Dosyaları
.jpg   access.JPG (Boyut: 96,78 KB / İndirilme: 38)



  Alıntı
Bu mesajı beğenenler:
#2
(26-11-2023, 23:19)adnnfrm demiş ki: objRegex.Pattern = "^\s+(.+?)$" yazan kısmın mesela ne işe yaradığını anlayamadım.

Kodunuz ile deneme yaptığımda. Split ile alınan verinin başındaki ve sonundaki boşlukları kaldırmakta kullanılmış.
Patern ile Detayli Bilgi incelenebilir.



  Alıntı
Bu mesajı beğenenler:
#3
(27-11-2023, 09:16)dsezgin demiş ki:
(26-11-2023, 23:19)adnnfrm demiş ki: objRegex.Pattern = "^\s+(.+?)$" yazan kısmın mesela ne işe yaradığını anlayamadım.

Kodunuz ile deneme yaptığımda. Split ile alınan verinin başındaki ve sonundaki boşlukları kaldırmakta kullanılmış.
Patern ile Detayli Bilgi incelenebilir.

Boşluk demişsiniz hocam ama orada farklı karakterler var. Ve içlerinde boşlukta yok :// Anlamadım.
Birde kodun sizce handikabı var mı?



  Alıntı
Bu mesajı beğenenler:
#4
Visual Basic
  1. Sub dfdfs()
  2. veri = " Ahmet1, mehmet, sali, ahmet , 145,sureya "
  3. Set objRegex = CreateObject("vbscript.regexp")
  4. objRegex.Pattern = "^\s+(.+?)$"
  5. strArr = Split(veri, ",")
  6.  
  7. ' Her bir eleman için islem yap
  8. For i = LBound(strArr) To UBound(strArr)
  9. Debug.Print "-" & objRegex.Replace(strArr(i), "$1") & "-"
  10. Next
  11. End Sub



Deneme prosedürü, veri olan yeri, debug ile immedia'a yazdırılmasını gözlemleyebilirsin.



  Alıntı
Bu mesajı beğenenler:
#5
sondaki boşlukları temizlemiyor hocam onu mu kastediyorsunuz.



  Alıntı
Bu mesajı beğenenler:
#6
(27-11-2023, 18:59)adnnfrm demiş ki: Boşluk demişsiniz hocam ama orada farklı karakterler var. Ve içlerinde boşlukta yok :// Anlamadım.
Birde kodun sizce handikabı var mı?

Pattern şablonu incelenecek verinin boşluk olursa talimatı. Eğer isimlerin başında boşluklu giriş olmuşsa, Boşlukları kaldır seklinde kullanılmış.
Tablodan çağrılmış veri de benzer veri girişi yoksa kullanılmasa da olur.

veri = "       Ahmet1, mehmet,       sali, ahmet  , 145,sureya  "

buradaki veri boşluklu isimlerin önlerinde ve arkalarında virgüle kadar mevcut.

-Ahmet1-
-mehmet-
-sali-
-ahmet  -
-145-
-sureya  -

isimlerin başındaki tüm boşlukları kaldırıp, yazdırıyor. Sizin veriniz büyük ihtimalle çoklu secim türünde bir alanda olduğu için sondaki boşluklar olmayacaktır. Tüm isimler alt alta boşluksuz yazdırılacaktır.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [FORM] Kritere Bağlı Olarak Değerlerin Toplanması M_Kemal_Askeri 2 71 10-04-2026, 01:05
Son Mesaj: M_Kemal_Askeri
  Son Endeks In Ikinci Yeni Kayıtta Ilk Endeks Olarak Gelmesi özgülapt 4 405 22-03-2025, 23:43
Son Mesaj: özgülapt
  Ana Forma Bağlı Alt Formdaki Verilerin Ana Formda Toplamını Almak ozan028 5 495 09-09-2024, 17:14
Son Mesaj: ozan028
  [SORGU] çarpraz Sorguda Sütun Değeri Olarak Birden çok Alan Seçebilir Miyiz? abkbek 2 409 13-08-2024, 21:18
Son Mesaj: abkbek
  [RAPOR] Access De Ki Raporu Word Belgesi Olarak Vba Kodu Ile Açma Ahmet51 10 879 01-08-2024, 10:28
Son Mesaj: dsezgin
  Ileri Butonu Sona Geldiğinde Uyarı Vermiyor Yeni Kayıt Açıyor. programmer67 2 466 25-06-2024, 16:49
Son Mesaj: programmer67
  Yeni Kayıt Açarken Uyari evren89 2 356 15-06-2024, 10:04
Son Mesaj: evren89
  [FORM] Onay Kutususun şarta Bağlı Olarak Otomatik Olarak Işaretlenmesi Samih KARSLI 2 437 06-04-2024, 18:49
Son Mesaj: Samih KARSLI

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar):