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.

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.
UPDATE Tablo1 SET dogum_yili = Left(Right(SplitVeriBul([kisi],2),8),4);
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:

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:

UPDATE Tablo1 SET dogum_yili = SplitVeriBul([kisi]);
Cevapla
#5
dilerim işinize yarar.
Modül kodu
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
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