AccessTr.neT
Hücredeki Verilerin Bir Kısmını Başka Bir Hücreye Taşımak - 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ığı: Hücredeki Verilerin Bir Kısmını Başka Bir Hücreye Taşımak (/konu-hucredeki-verilerin-bir-kismini-baska-bir-hucreye-tasimak.html)



Hücredeki Verilerin Bir Kısmını Başka Bir Hücreye Taşımak - sfenksturk - 11/05/2020

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.


RE: Hücredeki Verilerin Bir Kısmını Başka Bir Hücreye Taşımak - ozanakkaya - 11/05/2020

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);



RE: Hücredeki Verilerin Bir Kısmını Başka Bir Hücreye Taşımak - sfenksturk - 11/05/2020

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.


RE: Hücredeki Verilerin Bir Kısmını Başka Bir Hücreye Taşımak - ozanakkaya - 11/05/2020

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]);



RE: Hücredeki Verilerin Bir Kısmını Başka Bir Hücreye Taşımak - berduş - 11/05/2020

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])"



RE: Hücredeki Verilerin Bir Kısmını Başka Bir Hücreye Taşımak - sfenksturk - 11/05/2020

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.