Skip to main content

AccessTr.neT


String İçinden Belirli Bir Kısmını Almak

String İçinden Belirli Bir Kısmını Almak

Çözüldü #1
iyi günler
"% 52 DM tip2, Lumbalgo siyatik, Depresif belirtilerşe giden uyum bozukluğu"
"%52 DM tip2, Lumbalgo siyatik, Depresif belirtilerşe giden uyum bozukluğu"
"52% DM tip2, Lumbalgo siyatik, Depresif belirtilerşe giden uyum bozukluğu"
"52 % DM tip2, Lumbalgo siyatik, Depresif belirtilerşe giden uyum bozukluğu"

"DM tip2,  52 %  Lumbalgo siyatik, Depresif belirtilerşe giden uyum bozukluğu"
"DM tip2,  52%  Lumbalgo siyatik, Depresif belirtilerşe giden uyum bozukluğu"

bu sadece örnek bir veri
bu cümleden "%52" kısmını alıp başka alana güncelleyeceğiz 
bazan cümlenin başında yazılmış bazen ortasında bazen sonunda
bazen "%52" yazılmış bazen "52%"
bazen "%52" şeklinde bitişik bazen "% 52" arada boşlukla yazılmış
bunu nasıl bir kod ile cümlenin içinden çekip çıkarabiliriz
@benbendedeilem
Cevapla
#2
İnstr ile kaçıncı sırada bulunur mid ile parça alınır abey.
Mid("%52",instr(aranan kelime,"%52"),3)
Gibi tabii accesste mid özelliği varmı bilmiyorum varsa şöyle if koşulu aklenir kod başına if instr(veri,"52")> 0 then burda %52 varmı demek.
Son Düzenleme: 08/04/2020, 17:13, Düzenleyen: feraz.
Cevapla
#3
teşekkürler feraz ama benim istediğim 6 farklı ihtimalde de içindeki değeri alacak bir kod
Cevapla
#4
Modüle;

Visual Basic Code
Function SayiBul(ByVal GVeri As String) As Long

Dim GMetin As String
Dim GGenislik  As Integer
Dim GSayi As Integer

    GMetin = Right(Left(GVeri, InStr(1, GVeri, "%") - 1), 3) & Left(Mid(GVeri, InStr(1, GVeri, "%") + 1), 3)
    GGenislik = Len(GMetin)
    GSayi = 1
    Do
       If Mid(GMetin, GSayi, 1) <> " " And Not IsNumeric(Mid(GMetin, GSayi, 1)) Then
          GMetin = Left(GMetin, GSayi - 1) + Mid(GMetin, GSayi + 1)
        GSayi = GSayi - 1
       End If
       GSayi = GSayi + 1
    Loop Until Val(GMetin) > 0
    SayiBul = Val(GMetin)

End Function

Kodu ekle. Sorguya da,

SQL Code
sonuc: SayiBul([metninbulundugualanadi])

kodu ekle.

Konunuz "Visual Basic Örnek Uygulamaları" bölümüne açılmış. Sorunuz Visual Basic mi? Access mi??
Cevapla
#5
(08/04/2020 17:16)accessman Adlı Kullanıcıdan Alıntı: teşekkürler feraz ama benim istediğim 6 farklı ihtimalde de içindeki değeri alacak bir kod
O zaman 6 ihtimallik instr ve mid yazılır or ile.
Cevapla
#6
şöyle bir şey yazdım olmuş mu
Visual Basic Code
Private Function bulyuzde(metin As String) As Integer
On Error GoTo Err_hata

    Dim index As Integer
    Dim yuzde As Integer
    yuzde = 0

    index = InStr(metin, "%")
    
    If (index = 1) Then
        If (Mid(metin, index + 1, 1) = " ") Then
            If IsNumeric(Mid(metin, 3, 2)) Then
                yuzde = Mid(metin, 3, 2)
            End If
        Else
            If IsNumeric(Mid(metin, 2, 2)) Then
                yuzde = Mid(metin, 2, 2)
            End If
        End If
    ElseIf (index = 3) Then
        If IsNumeric(Mid(metin, 1, 2)) Then
            yuzde = Mid(metin, 1, 2)
        End If
    ElseIf (index > 3) Then
        If (Mid(metin, index - 1, 1) = " ") Then
            If IsNumeric(Mid(metin, index - 3, 2)) Then
                yuzde = Mid(metin, index - 3, 2)
            End If
        Else
            If IsNumeric(Mid(metin, index - 2, 2)) Then
                yuzde = Mid(metin, index - 2, 2)
            End If
        End If
    End If
    
Exit_kod:
    bulyuzde = yuzde
    Exit Function

Err_hata:
    yuzde = 0
    MsgBox Err.Description
    Resume Exit_kod
End Function
Son Düzenleme: 08/04/2020, 19:27, Düzenleyen: accessman.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task