Skip to main content

AccessTr.neT


Hücredeki Verilerden Başka Hücreye Aktararak Eski Hücreden Aktarılan Veriyi Silme

Hücredeki Verilerden Başka Hücreye Aktararak Eski Hücreden Aktarılan Veriyi Silme

Çözüldü #1
iyi akşamlar arkadaşlar, hücre içerisinde çalışanlara ait bilgiler var, ben bu bilgilerden en başta bulunan çalışanın mesleğini ayrı bir Meslek isimli sütununa aktarmak ve eski hücreden meslek kısmını silerek başlangıcın Tc:'den itibaren olmasını istiyorum.

MUHASEBECİ/ Tc:98765432110 VELİ YARDIMCI MEHMET/FATMA, 19810203, ADRES: UYGULAMA SOK. şeklinde hücredeki bilgilerden en başta bulunan Meslek kısmını başka bir hücreye aktararak eski hücreden mesleğin silinmesini istiyorum.

yani eski hücre Tc:98765432110 VELİ YARDIMCI MEHMET/FATMA, 19810203, ADRES: UYGULAMA SOK. şeklinde olacak ve meslek başka hücreye aktarılacak. Access Sql bilgimle bunu yapabilecek durumda olmadığımdan yardımlarınıza ihtiyacım var.

teşekkür ederim.
.rar deneme1.rar (Dosya Boyutu: 14,75 KB | İndirme Sayısı: 8)
Son Düzenleme: 10/10/2021, 21:39, Düzenleyen: sfenksturk.
Cevapla
#2
eğer ilk "/" işaretinden önceki veri her zaman meslekse instr(metin,"/") fonksiyonuyla "/"nin konumu bulunup o kısım kesilebilir ama çalışmanızın yapısı göz önünde bulundurulduğunda hata yapmaya çok müsait.
Cevapla
#3
Sayın @berduş hocamın verdiği kodu kullanarak aşağıdaki şekilde iki aşamalı bir sorguyla sanırım sorunuza cevap bulunabilir.

Visual Basic Code
Function TcAl(Mtn As String) As String
On Error Resume Next
 Mtn = Trim(Mtn)
xBas = InStr(Mtn, ("/ T"))
TcAl = Left(Mtn, xBas - 1)
End Function
'_______________________________
Function TcAl1(Mtn As String) As String
On Error Resume Next
 Mtn = Trim(Mtn)
xBas = InStr(Mtn, ("/ T"))
TcAl1 = Left(Mtn, xBas)
End Function
'_______________________
Private Sub degistir()
DoCmd.RunSQL "UPDATE Tablo1 SET Tablo1.meslek = TcAl([Tablo1]![bilgiler]);"
DoCmd.RunSQL "Update Tablo1 SET Bilgiler = REPLACE(bilgiler, TcAl1([Tablo1]![bilgiler]),'' ) WHERE Kimlik = [Kimlik];"
End Sub
"Dünyayı fazla düşünme."
Cevapla
#4
@userx hocam yabancı uyruklular TC alanı olmadığı için ("/ T") sorun çıkarabilir sadece ("/") yazılması daha uygun olur gibi
aşağıdaki fonksiyonları modüle ekleyip güncelleme için MslkGuncelle yordamını çağırmayı dener misiniz?
Visual Basic Code
Sub MslkGuncelle()
    CurrentDb.Execute "UPDATE Tablo1 SET Tablo1.meslek = MeslekAl([Tablo1]![bilgiler]), Tablo1.bilgiler = KAlan([Tablo1]![bilgiler]);"
End Sub
'_______________________________
Function MeslekAl(Mtn As String) As String
MeslekAl = ""
SonH = InStr(Mtn, "/")
    If SonH > 0 Then MeslekAl = Left(Mtn, SonH - 1)
End Function
'_______________________________
Function KAlan(Mtn As String) As String
SonH = InStr(Mtn, "/")
    KAlan = Trim(Mid(Mtn, SonH + 1))
End Function
Cevapla
#5
Sayın @berduş bu şekilde ben de düşündüm ancak kod yanlışlıkla ya da deneme amaçlı da olsa tekrar çalıştırılırsa işlem tekrarlanır. Sanırım bu da istenmeyecek bir durum.
"Dünyayı fazla düşünme."
Cevapla
#6
(11/10/2021 15:11)userx Adlı Kullanıcıdan Alıntı: kod yanlışlıkla ya da deneme amaçlı da olsa tekrar çalıştırılırsa işlem tekrarlanır.
o konuda kesinlikle haklısınız.
birinden birinde bir sorun çıkacak maalesef
belki dlookup tc'den önce / var mı yada meslek alanı boş mu diye kontrol edilip çalıştırılabilir

maalesef bu tür yapılarda doğrudan kişi kontrolü şart
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da