Skip to main content

AccessTr.neT


Hücredeki Verilerin Bir Kısmını Başka Bir Hücreye Taşımak

Hücredeki Verilerin Bir Kısmını Başka Bir Hücreye Taşımak

Çözüldü #1
iyi günler arkadaşlar. bir hücrede çalışana ait bilgiler var ve bu bilgiler hücre içinde sadece '/' ile ayrılmış, bu hücre içinde şahsın doğum tarihleri de gün ay yıl bitişik şekilde yani (örn: 19990101), ben tüm kişilerin doğum yıllarını boş durumda olan dogum_yili isimli sutuna atmak istiyorum. Ayrıca bazı kişilerin doğum tarihleri bulunmuyor ve boş durumda o kişinin de doğum tarihi sutunun boş kalması gerekiyor. yardımcı olursanız çok sevinirim. örnek uygulama ektedir.
.rar deneme.rar (Dosya Boyutu: 14,18 KB | İndirme Sayısı: 10)
Cevapla
#2
Merhaba, modüle aşağıdaki kodu ekle.

Visual Basic Code
Public Function SplitVeriBul(GVeri As String, GSayi) As Variant
On Error Resume Next
Dim var As Variant
var = Split(GVeri, "/", -1)
SplitVeriBul = var(GSayi)
End Function


Alttaki kodu da sorgunun Sql kaynağına ekle. Sorguyu çalıştırdığında tablodaki alan güncellenir.

SQL Code
UPDATE Tablo1 SET dogum_yili = Left(Right(SplitVeriBul([kisi],2),8),4);

"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 
Cevapla
#3
Sn. Ozanakkaya cevabınızı Örnek üzerinde denedim. Oldu ancak örnekte tarih en sonda olduğundan sorun olmadı. Normalde tarihten sonrada veri olacak. O şekilde denediğimde sizin çözümünüze göre sondan alakasız verileri aliyor. Yanı tarih hücre içinde ikici '/' dan sonra gelen anne baba adından sonra geliyor.

Hücredeki altı haneli yani 'örn:19980102' tarih olan sayıyı bularak yılı diğer hücreye atabilir miyiz.
Son Düzenleme: 11/05/2020, 13:37, Düzenleyen: sfenksturk.
Cevapla
#4
Modüldeki kod:

Visual Basic Code
Public Function SplitVeriBul(GVeri As String) As Variant
Dim Dizi As Variant
Dim Say As Integer

Dizi = Split(GVeri, " ")

For Say = LBound(Dizi) To UBound(Dizi)
If Len(Dizi(Say)) = 8 And IsNumeric(Dizi(Say)) = True Then

SplitVeriBul = Left(Dizi(Say), 4)

Exit For
End If

Next
End Function



Sorgu:

SQL Code
UPDATE Tablo1 SET dogum_yili = SplitVeriBul([kisi]);

"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 
Cevapla
#5
dilerim işinize yarar.
Modül kodu

Visual Basic Code
Function DgTrh(Mtn As String) As String
Dim BlYr, BlYrBit As Integer
Dim StrTrh
BlYr = 0
    For x = 1 To 2
        BlYr = InStr(BlYr + 1, Mtn, "/")
    Next x
BlYrBit = InStr(BlYr + 1, Mtn, "/")
If BlYrBit = 0 Then BlYrBit = Len(Mtn & "")
BlYrBit = BlYrBit + 1 - BlYr

Mtn = Mid(Mtn, BlYr, BlYrBit)

    For x = 1 To BlYrBit
        If IsNumeric(Mid(Mtn, x, 1)) Then StrTrh = StrTrh & Mid(Mtn, x, 1)
    Next x
    
    StrTrh = Right(StrTrh, 2) & "." & Mid(StrTrh, 5, 2) & "." & Left(StrTrh, 4)
    DgTrh = StrTrh
End Function

güncelleme kodu

Visual Basic Code
CurrentDb.Execute "UPDATE Tablo1 SET dogum_yili = DgTrh([kisi])"

Cevapla
#6
Sn. Ozanakkaya nin ikinci devamındaki kodlarla konu çözülmüştür. Ayrıca Sn. Berduş un cevabını deneme fırsatım olmadı. Cevaplarınız için teşekkürler.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da