Skip to main content

AccessTr.neT M.


Belli Bir Karaktere Kadar Parça Alma

Belli Bir Karaktere Kadar Parça Alma

Çözüldü #1
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.

Cevapla
#2
Merhabalar,
problemimi şu şekilde çözdüm;

Visual Basic Code
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))

Cevapla
...........
#3
öncelikle bir çalışmanıza bir modül ekleyip aşağıdaki kodu yapıştırın

Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
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

SQL Code
alan1: BasAl([TabloAdi]![AlanAdi])

Cevapla
#4
(24/05/2019 12:31)haliliyas Adlı Kullanıcıdan Alıntı: öncelikle bir çalışmanıza bir modül ekleyip aşağıdaki kodu yapıştırın

Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
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

SQL Code
alan1: BasAl([TabloAdi]![AlanAdi])

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

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

Cevapla
#6
(24/05/2019 12:39)haliliyas Adlı Kullanıcıdan Alıntı: 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.

Cevapla
...........

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

Yorum yapmak için üye olmanız gerekiyor

ya da