Skip to main content

AccessTr.neT


In Ve Like Operatörleri

In Ve Like Operatörleri

#9
3 farklı yöntem kullanarak çözmeye çalıştım
RegExp, InStr ve Like karşılaştırma için hepsini aynı sayfada göstermeye çalıştım bu nedenle biraz ağır çalışabilir siz bir yöntemi seçeceğinizden  sorun çıkarmaz
her yöntem için başına yöntemin adını yazdım gereksizleri silerseniz belirgin bir hızlanma olabilir
1 - sadece RegExp için gerekli Modüldeki fonksiyon:
Function Sayim(Aciklama As String) As String
Dim RegEx As Object, metin As String
Set RegEx = CreateObject("VBScript.RegExp")

RegEx.Pattern = "[a-zA-Z]{0,3}[0-9]{6}" '"[a-zA-Z]{0,3}[0-9]+" '-->[0-9]{6} : 6 rakam ard arda,[0-9]+:en az bir rakam, [a-zA-Z]{0,3} 0 yada en fazla 3 harf
RegEx.Global = True 'Tüm değerleri bul
RegEx.MultiLine = True 'tüm satırlarda ara

Set eslesmeler = RegEx.Execute(Aciklama)
    KelimeSayisi = eslesmeler.Count
For Each Kelime In eslesmeler ' bulunana tüm değerleri döngüye sokar
    Kosulum = Kosulum & "','" & Kelime.Value
Next
   
If Kosulum <> "" Then Kosulum = Mid(Kosulum, 3) Else Kosulum = ""
    Sayim = Kosulum
End Function
2 - hem RegExp hem de diğer yöntemler için gerekli modüldeki kod bu modül sadece sorgu değerlerini saklayan sabitler modülüdür :
Global Const SqlBos As String = "SELECT '' AS ID,'' AS  TÜR, '' AS YIL, " & _
                "'' AS  [YÜRÜRLÜK TARİHİ], '' AS GRUBU, " & _
                "'' AS YILDIZLI, '' AS KOD, '' AS ADI, " & _
                "'' AS AÇIKLAMA, '' AS PUAN,'' AS FİYATI " & _
                "FROM tbl_secilenhizmetler"

Global Const Sqltbl_kamu As String = "SELECT tbl_kamu.id AS ID, tbl_kamu.tür AS TÜR, yili AS YIL, " & _
                "yururluk_tarihi AS [YÜRÜRLÜK TARİHİ], '' AS GRUBU, " & _
                "'' AS YILDIZLI, kodu AS KOD, islem_adi AS ADI, " & _
                "aciklama AS AÇIKLAMA, '' AS PUAN, Format([fiyat],'Currency') AS FİYATI " & _
                "FROM tbl_kamu"

Global Const Sqltbl_sut_2b  As String = "SELECT tbl_sut_2b.id AS ID, tbl_sut_2b.tür AS TÜR, yili AS YIL, " & _
                "yururluk_tarihi AS [YÜRÜRLÜK TARİHİ], '' AS GRUBU, " & _
                "'' AS YILDIZLI, kodu AS KOD, islem_adi AS ADI, " & _
                "aciklama AS AÇIKLAMA, islem_puani AS PUAN, Format([islem_puani]*0.593,'Currency') AS FİYATI " & _
                "FROM tbl_sut_2b"

Global Const Sqltbl_sut_2c As String = "SELECT tbl_sut_2c.id AS ID, tbl_sut_2c.tür AS TÜR, yili AS YIL, " & _
                "yururluk_tarihi AS [YÜRÜRLÜK TARİHİ], islem_grubu AS GRUBU, " & _
                "yildizli_islem AS YILDIZLI, kodu AS KOD, islem_adi AS ADI, " & _
                "aciklama AS AÇIKLAMA, islem_puani AS PUAN, " & _
                "Format([islem_puani]*0.593,'Currency') AS FİYATI " & _
                "FROM tbl_sut_2c"

Global Const Sqltbl_turist  As String = "SELECT tbl_turist.id AS ID, tbl_turist.tür AS TÜR, yili AS YIL, " & _
                "yururluk_tarihi AS [YÜRÜRLÜK TARİHİ], '' AS GRUBU, " & _
                "'' AS YILDIZLI, kodu AS KOD, islem_adi AS ADI, " & _
                "aciklama AS AÇIKLAMA, '' AS PUAN, Format([fiyat],'Currency') AS FİYATI " & _
                "FROM tbl_turist"
3 - liste kutusu güncellendiğinde kodu :
Private Sub liste_AfterUpdate()

kodu = liste.Column(6)
islemadı = liste.Column(7)
islem_turu = liste.Column(1)
islem_grubu = liste.Column(4)
yıldızlı_islem = liste.Column(5)
yururluk_tarihi = liste.Column(3)

If Len(liste.Column(8) & "") = 0 Then
acıklama = ""
' InStr Kullanarak veri alma____________________________
    FaturaEdilemezInstr.RowSource = SqlBos
    FaturaEdilemezInstr.Requery
' Like Kullanarak veri alma____________________________
    FaturaEdilemezLike.RowSource = SqlBos
    FaturaEdilemezLike.Requery
' RegExp Kullanarak veri alma___________________________
    FaturaEdilemezRegExp.RowSource = SqlBos
    FaturaEdilemezRegExp.Requery
   
Exit Sub
End If

Dim SqlInStr, SqlLike, SqlRegExp, TblAdi As String
Dim KosulumInStr, KosulumLike, KosulumRegExp As String

'metin kutusundaki değere göre çağrılacak sorgu kodu ve tablo Adı________________
SQLBx = Switch(islem_turu = "Kamu", Sqltbl_kamu, _
              islem_turu = "Ek-2B", Sqltbl_sut_2b, _
              islem_turu = "Ek-2C", Sqltbl_sut_2c, _
              islem_turu = "Turist", Sqltbl_turist)
           
TblAdi = Switch(islem_turu = "Kamu", "tbl_kamu", _
              islem_turu = "Ek-2B", "tbl_sut_2b", _
              islem_turu = "Ek-2C", "tbl_sut_2c", _
              islem_turu = "Turist", "tbl_turist")

'hy Açıklama Alanını RecordSettn Alma_______
Dim AciklamaRs As DAO.Recordset
Dim AciklamaSql As String
AciklamaSql = "SELECT " & TblAdi & ".id, " & TblAdi & ".aciklama " & _
"FROM " & TblAdi & _
" where " & TblAdi & ".id=" & liste.Column(0)

Set AciklamaRs = CurrentDb.OpenRecordset(AciklamaSql, dbOpenDynaset)
acıklama = Nz(AciklamaRs(1))

' InStr Kullanarak veri alma____________________________
KosulumInStr = " WHERE (InStr(1,'" & acıklama & "',[kodu])>0)"  'Çalıştı
SqlInStr = SQLBx & KosulumInStr & " ORDER BY yili DESC;"
FaturaEdilemezInstr.RowSource = SqlInStr
FaturaEdilemezInstr.Requery

' Like Kullanarak veri alma____________________________
KosulumLike = " WHERE (('" & acıklama & "') like '*' & [kodu] & '*')"  'Çalıştı
SqlLike = SQLBx & KosulumLike & " ORDER BY yili DESC;"
FaturaEdilemezLike.RowSource = SqlLike
FaturaEdilemezLike.Requery

' RegExp Kullanarak veri alma____________________________
KosulumRegExp = " WHERE ([KODU] IN (" & Sayim(acıklama) & "'" & ")) "
SqlRegExp = SQLBx & KosulumRegExp & " ORDER BY yili DESC;"
If Len(Sayim(acıklama) & "") = 0 Then SqlRegExp = SqlBos
FaturaEdilemezRegExp.RowSource = SqlRegExp
FaturaEdilemezRegExp.Requery

End Sub
.rar InStr_Like_RegExp_FonkTekTablo_hy8.rar (Dosya Boyutu: 599,5 KB | İndirme Sayısı: 3)
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da

Bu Konudaki Yorumlar
In Ve Like Operatörleri - Yazar: alperalper - 14/08/2020, 08:27
RE: In Ve Like Operatörleri - Yazar: alicimri - 14/08/2020, 11:19
RE: In Ve Like Operatörleri - Yazar: alperalper - 14/08/2020, 13:44
RE: In Ve Like Operatörleri - Yazar: alicimri - 14/08/2020, 14:07
RE: In Ve Like Operatörleri - Yazar: berduş - 14/08/2020, 15:21
RE: In Ve Like Operatörleri - Yazar: berduş - 14/08/2020, 16:03
RE: In Ve Like Operatörleri - Yazar: berduş - 14/08/2020, 19:13
RE: In Ve Like Operatörleri - Yazar: berduş - 15/08/2020, 02:09
RE: In Ve Like Operatörleri - Yazar: berduş - 16/08/2020, 21:45
RE: In Ve Like Operatörleri - Yazar: berduş - 17/08/2020, 18:37
RE: In Ve Like Operatörleri - Yazar: alperalper - 05/09/2020, 23:14
RE: In Ve Like Operatörleri - Yazar: berduş - 06/09/2020, 00:55
Task