Arkadaşlar herkese merhaba. Metin içinden aldığım ve belirli şartları sağlayan kelime ve sayıları kullanarak sorgu yapıyorum. Ancak bir noktada sorun yaşar oldum, sorunum şu şekilde.
Aşağıdaki metni parçalayarak bu kodları alıyorum. Sayısal olarak bütün kodlar 6 basamaklı sayıdan oluşmakta ancak başlarında S, SP, L, BT, R, SA gibi bazı karakterler var. Ben önce sağdan 6 karakter alıp sorgunun içinde IN(....) operatörü ile kullanıyordum ancak BT100050 ile S100050 kodları tamamen farklı olmasına karşın ben sağdan 6 karakter ile kriter oluşturduğum için her ikisi de geliyordu. Ben ise bunu istemiyorum. LİKE sadece metinde, IN ise sadece sayısal ifadelerde kullanılıyor. Hem metin hemde sayısal ifade içeren birden fazla değeri sorgumuza nasıl dahil edebiliriz?
BT100050, BT100060, BT100140, BT100150, BT100200 ile birlikte faturalandırılmaz. (Bu metin içindeki BT100040 gibi kodlar tamamen karışıkta gelebilir. BT ile SP veya L veya hepsi birden aynı metin içinde de olabilir)
Aşağıdaki metni parçalayarak bu kodları alıyorum. Sayısal olarak bütün kodlar 6 basamaklı sayıdan oluşmakta ancak başlarında S, SP, L, BT, R, SA gibi bazı karakterler var. Ben önce sağdan 6 karakter alıp sorgunun içinde IN(....) operatörü ile kullanıyordum ancak BT100050 ile S100050 kodları tamamen farklı olmasına karşın ben sağdan 6 karakter ile kriter oluşturduğum için her ikisi de geliyordu. Ben ise bunu istemiyorum. LİKE sadece metinde, IN ise sadece sayısal ifadelerde kullanılıyor. Hem metin hemde sayısal ifade içeren birden fazla değeri sorgumuza nasıl dahil edebiliriz?
BT100050, BT100060, BT100140, BT100150, BT100200 ile birlikte faturalandırılmaz. (Bu metin içindeki BT100040 gibi kodlar tamamen karışıkta gelebilir. BT ile SP veya L veya hepsi birden aynı metin içinde de olabilir)
Visual Basic
- Function sayim(acıklama)
- Dim v As Variant, Kosulum As String
- Dim i As Integer
-
- For i = 1 To Len(liste.Column(7))
- sayi = Mid(UCase(liste.Column(7)), i, 1)
-
- If IsNumeric(sayi) = True Then
- sayim = sayim & sayi
-
- ElseIf IsNumeric(sayi) <> True Then
-
- If sayi = "P" Or sayi = "S" Or sayi = "L" Or sayi = "B" Or sayi = "T" Or sayi = "A" Or sayi = "R" Then
-
- sayim = sayim & sayi
-
- ElseIf sayi <> "P" Or sayi <> "S" Or sayi <> "L" Or sayi <> "B" Or sayi = "A" Or Or sayi = "R" Then
-
- sayim = sayim & ","
-
- End If
-
- End If
- Next i
-
- v = Split(sayim, ",", , vbTextCompare)
- For sw = LBound(v) To UBound(v)
- If IsNumeric(Mid(v(sw), 3, 1)) Then Kosulum = Kosulum & "'" & right(Replace(Mid(v(sw), 1, 8), " ", vbNullString), 6) & "',"
- Next sw
- If Kosulum <> "" Then
- Kosulum = "((Right(srg_bakanlik_kodlari.KOD,6)) IN(" & Mid(Kosulum, 1, Len(Kosulum) - 1) & "))"
-
- Else
- Kosulum = vbNullString
- End If
- sayim = Kosulum
- End Function