AccessTr.neT
Belli Bir Karaktere Kadar Parça Alma - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Access (https://accesstr.net/forum-microsoft-access.html)
+--- Forum: Access Cevaplanmış Soruları (https://accesstr.net/forum-access-cevaplanmis-sorulari.html)
+--- Konu Başlığı: Belli Bir Karaktere Kadar Parça Alma (/konu-belli-bir-karaktere-kadar-parca-alma.html)

Sayfalar: 1 2


Belli Bir Karaktere Kadar Parça Alma - hbal09 - 24/05/2019

Merhabalar,
bir tablomda gider tanımları yeralıyor, bu gider tanımları 2 farklı gösterimde.
Örneğin;
1.   Yakıt / 34 ABC 123 -->150 TL
2.   Kargo --> 40 TL

yukarıdaki gibi bazı tanımlarda ilk tanımdan sonra "/" karakteri, bazı tanımlarda ilk tanımdan sonra  "-->" karakterleri bulunmakta. ben bir sorgu ile bu alan değerlerinden ilk bölümlerini yazdırmak istiyorum.
yani sorgum sonucunda bana,
Yakıt
Kargo
Maaş
Avans
Fazla Mesai
Çek Senet
Mutfak
gibi listelemesini istiyorum.
bunu nasıl yapabilirim?
Saygılarımla.


Cvp: Belli Bir Karaktere Kadar Parça Alma - hbal09 - 24/05/2019

Merhabalar,
problemimi şu şekilde çözdüm;
ilk_tanim: IIf((InStr(1;[gider_tanim];"/";1)-2)>0;Left([gider_tanim];InStr(1;[gider_tanim];"/";1)-2);Left([gider_tanim];InStr(1;[gider_tanim];"-->";1)-2))



Cvp: Belli Bir Karaktere Kadar Parça Alma - berduş - 24/05/2019

öncelikle bir çalışmanıza bir modül ekleyip aşağıdaki kodu yapıştırın
Function BasAl(TxtAlan As String) As String
Dim x, y, xy As Integer
x = InStr(1, TxtAlan, " /")
y = InStr(1, TxtAlan, " -->")
If x < y And x > 0 Then xy = x - 1 'TxtAlan = Mid(TxtAlan, 1, x - 1)
If y < x And y > 0 Then xy = y - 1 'TxtAlan = Mid(TxtAlan, 1, y - 1)
If x > 0 And y = 0 Then xy = x - 1
If y > 0 And x = 0 Then xy = y - 1
If y = 0 And x = 0 Then xy = Len(TxtAlan)
BasAl = Mid(TxtAlan, 1, xy)
End Function
sonra da sorgunuzun ilgili alanına aşağıdaki kodu yazın
alan1: BasAl([TabloAdi]![AlanAdi])



Cvp: Belli Bir Karaktere Kadar Parça Alma - hbal09 - 24/05/2019

(24/05/2019, 12:31)haliliyas yazdı: öncelikle bir çalışmanıza bir modül ekleyip aşağıdaki kodu yapıştırın
Function BasAl(TxtAlan As String) As String
Dim x, y, xy As Integer
x = InStr(1, TxtAlan, " /")
y = InStr(1, TxtAlan, " -->")
If x < y And x > 0 Then xy = x - 1 'TxtAlan = Mid(TxtAlan, 1, x - 1)
If y < x And y > 0 Then xy = y - 1 'TxtAlan = Mid(TxtAlan, 1, y - 1)
If x > 0 And y = 0 Then xy = x - 1
If y > 0 And x = 0 Then xy = y - 1
If y = 0 And x = 0 Then xy = Len(TxtAlan)
BasAl = Mid(TxtAlan, 1, xy)
End Function
sonra da sorgunuzun ilgili alanına aşağıdaki kodu yazın
alan1: BasAl([TabloAdi]![AlanAdi])

Sizin yöntem daha profesyonel görünüyor, çok teşekkür ederim. Sorunum çözülmüştür.


Cvp: Belli Bir Karaktere Kadar Parça Alma - berduş - 24/05/2019

sizinki daha şiirsel ))
/ ile --> arasında öncelik sırası var mı?


Cvp: Belli Bir Karaktere Kadar Parça Alma - hbal09 - 24/05/2019

(24/05/2019, 12:39)haliliyas yazdı: sizinki daha şiirsel ))
/ ile --> arasında öncelik sırası var mı?

Img-grin Img-grin 

öncelik sırası olarak düşünebilir miyiz bilemem ama örnekte de görüleceği üzere "/" içeren tanımların devamında "-->" da bulunmakta, bundan dolayı yorumumda yazdığım sorgu ifadesinde önce "/" kontrolü, ardından "-->" kontrolü yer almaktadır.