Birinci Alanda Geçen Herhangi Bir Kelime İkinci Alanda Varsa İstenilen Alana "x" Yazd

1 2 3 4
18/09/2024, 16:31

onur_can

Şunu söyleyebilirm, konuya tam hakim olamadığım için anlattıklarınızdan yola çıkarak istenilen yere X ifadesini kullanmışsınız burası net değil.
çözüm yolu olarak size iç içe IIF komutunu kullanmanızı öneririm. Doğru ifadeyi ve değişkenleri doğru yere yerleştirerek sonuç alabilirsiniz.
Örnek Link;
https://accesstr.net/konu-ic-ice-iif-kullanimi.html

1.Şart olmazsa 2.Şarta Bak, 2.Şart olmazsa 3.Şarta Bak, 3.Şart olmazsa 4.Şarta bak.......Hiçbir şart sağlanmazsa birşey yapma boş geç gibi.......
19/09/2024, 09:08

sevincili

ilginizden dolayı çok teşekkür ederim
inceleyeceğim.
19/09/2024, 10:26

berduş

Regular Expression kullanılarak yapılabilir ama  ne kadar sağlıklı olur emin değilim.
cümleyi boşluklara göre parçalayıp içerik kontrolü sağlanabilir ama boşluk yerine noktalama işareti kullanılmışsa yada
birleşik kelimeler varsa sorun çıkar. mesela "veli" kelimesi aranıyorsa "develi" kelimesi de doğru kabul edilebilir. onu engellemek için aranan "veli" yerine " veli " yazılabilir bu durumda da "." ile bitenler bulunmayabilir.
ben her kelimenin " " boşluk ile ayrıldığını ve noktalama işareti kullanılmadığını varsaydım


Yapılacaklar:
1 - çalışmanıza bir modül ekleyip modüle aşağıdaki kodu yapıştırın
Function xRegEx(xBol As String, xKontrol As String) As Boolean
xRegEx = False
xBol = Replace(xBol, " ", " | ")
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
    .IgnoreCase = True
    .Global = True
    .MultiLine = True
    .Pattern = "(" & xBol & ")"
    xRegEx = .Test(" " & xKontrol & " ")
End With
End Function
2 - bir sorgu oluşturup aşağıdaki kodu kullanın
update [sıemens] set statu="x" WHERE (((xRegEx([sıemens]![GIRDI_FIRMA],[sıemens]![NMCRL_NCAGEName]))=-1));

bu güncelleme sorgusunu çalıştırdığınızda statu alanı otomatik olarak güncellenir.
dilerim işinize yarar

Not: CreateObject("VBScript.RegExp")  regexpi kullanabilmeniz için gerekli kütüphanedir istenirse
Microsoft VBScript Regular Expressions referansı ile bu sağlanabilmektedir.
VBA Editöründe( ALT+F11) iken menüden Tools / References … tıklanır.
Açılan pencerede listeden Microsoft VBScript Regular Expressions seçilip OK tıklanır.

Not2: tablonuzun adı "sıemens" yani küçük I kullanılmış İngilizcede küçük ı harfi yoktur. çalışmalarınızda İngilizcede kullanılmayan karakterler kullanmanız sorun çıkarabilir
forumda tablo-alan-nesne isimlendirme kurallarıyla ilgili bilgilendirme mevcuttur.
iyi çalışmalar
19/09/2024, 12:02

sevincili

Berduş hocam ilginizden dolayı çok teşekkür ederim.

genelde tablo adlarında büyük harf kullanmaktayım örnekte yanlışlıkla küçük harf kullanmışım.
tablo adını güncelledim.
yolladığınız modül ü yapmaya çalıştım sorguyu da yaptım ancak hata verdi sıkıntı nerede anlamadım
dosyayı ekte yolluyorum mümkünse bi bakabilir misiniz? nerede hata yaptım.
şimdiden çok teşekkür ediyorum.
19/09/2024, 12:12

berduş

xRegEx fonksiyonunu 2 ayrı modülde kullanmışsınız
fonksiyonlar yerel/public tanımlanmadıkları için aynı ada sahip 2 fonksiyon olamaz
fonksiyonlardan birini silerseniz çalışması gerek
19/09/2024, 12:19

berduş

gerçi yukardaki yöntem sadece "x" yazmak için işe yarar,
eğer veri değiştirilmişse daha önceden "x" yazan alanlar değişmez onların da değiştirilmesini istiyor musunuz?
1 2 3 4