Yeni veritabnında olmayan alanları eski veritabanından tamamlama?

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
2007.mdb 2010.mdb adlı iki adet veritabanım mevcut.

herikisindede VATNO, ADI, SOYADI, BABAADI,ANNEADI, ...., ......., vs gibi alanlar ortak.

istediğim 2007 mdb de olupta 2010 mdb de olmayan vatandaşlık numaralı şahısların 2010 mdb de eklenmesi.

mümkün mü?
 
Katılım
18 Nisan 2007
Mesajlar
2,053
Excel Vers. ve Dili
Access 2019
Merhaba..

Birçok yolla mümkündür.. Bu insert (ekleme) sql istediğiniz şartları oluşturarak kayıtları eklebileceğiniz en özgün ve efektif yollardan biridir..:

Kod:
insert into tablo_adi ( VATNO, ADI, SOYADI, BABAADI, ANNEADI )
                           select VATNO, ADI, SOYADI, BABAADI, ANNEADI
from 
        (
select *
from tablo_adi in 'c:\2007.mdb'
where VATNO not in (select vatno from tablo_adi as trz)
)
Bilgisini vermediğiniz için; uygulamınızın bulunduğu dizini ve tablo adını değiştirmeyi unutmayınız..
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sn taruz önceden örnek veremiyordum aama acces 2010 alındı işyerine o nedenle bende bu arada örnek yaptım uygulama üzerinde gösterirseniz sevinirim.


İstenen:
-2010 mdb de olmayan vatnolarının ve bağlı alanların 2007 mdb den çekilerek 2010 mdb ye eklenmesi
-2010 mdb de olan kayıtlardan 2007.mdb deki dolu olan iletişim bilgilerinin 2010 mdb deki kişinin kaydının tamamlanması.
örn:

vt2007 de 364859 ahmet düzdağ mahmut safiye 284985 542888
önce
vt2010 da 364859 ahmet düzdağ mahmut safiye

sonra
vt2010 da 364859 ahmet düzdağ mahmut safiye 284985 542888


not gerçek veritabanları 25-30 ar bin kayıttan oluşmakta ve daha fazla alan içermektedir. (mesala YY_İL, YY_İLÇE ..... ,NKO İL, İLÇE VS...
 

Ekli dosyalar

Son düzenleme:
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Şİmdi dikkatimi çekti VATNO alanı benzersiz ve her veritabanında birkere bulunduğundan karşılaştıma vat no alanına göre yapılmalıdır.
diğer alanları kullanıırsak mükerrer kayıt yaratmış olabiliirz. çünkü; 2007 deki soy ismi evlenme/boşanma ile değişmiş olabilir. gerçek veritabanlarında o tarihte kullandığı cep no ile şimdi kullandığı cep no alanları kısaca o günkü alan değeri ile bugünkü alan değeri aynı olmayabilir.
 
Katılım
18 Nisan 2007
Mesajlar
2,053
Excel Vers. ve Dili
Access 2019
İlk önerimde dikkat ederseniz eşleştirmeyi VATNO alanına göre yapmıştım zaten..

Eklediğiniz örneğe göre..

Bu prosedür 2007 de olup 2010 da olmayan kişileri ekler..:

Kod:
Dim sorgu, dosya As String
dosya = CurrentProject.Path & "\TEST2007.mdb"
sorgu = "insert into tablo1 ( VATNO, ADI, SOYADI, TEL1, TEL2 )" _
    & " select VATNO, ADI, SOYADI, TEL1, TEL2 from (select * " _
    & "from tablo1 in " & "'" & dosya & "'" & " where " _
    & "VATNO not in (select vatno from tablo1 as trz))"
DoCmd.RunSQL sorgu
Bu ise 2010 da boş olup 2007 de dolu olan alanları 2010 a günceller, güncel yani dolu olanlara ilişmez..:

Kod:
Dim sorgu, dosya As String
dosya = CurrentProject.Path & "\TEST2007.mdb"
sorgu = "update (select * " _
    & "from tablo1 in " & "'" & dosya & "')" & " as trz inner join " _
    & " Tablo1 ON trz.VATNO = Tablo1.VATNO set " _
    & "Tablo1.TEL1 = IIf([Tablo1].[TEL1] is null,[trz].[TEL1],[Tablo1].[TEL1])," _
    & "Tablo1.TEL2 = IIf([Tablo1].[TEL2] Is Null,[trz].[TEL2],[Tablo1].[TEL2])"
DoCmd.RunSQL sorgu
2010 dosyasını kullanınız..
 

Ekli dosyalar

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Hocam ekleme işi başarılı ama tamamlama işi sakat :)
şaka bir yana az alanla işe yararda alan sayısı birden fazla olunca genellemek mümkün mü?
Alan adlarının tamamı:
VRT_KNO TCKİMLİKNO ADI SOYADI ILKSOYADI ANNEADI BABAADI SHS_CNS DOGUMYERİ DOGUMTARİHİ NFS_IL NFS_ILCE ADR_IL ADR_ILCE ,
ADR_BLD ADR_MUHTAR ADR_CD_SKK ADR_KNO ADR_DNO ADR_PSK Adı_Soyadı LST_ADI LST_NUM LST_TRH NFC_SRI NFC_SNO NFC_YER NFC_VND NFC_KNO NFC_KTR TEL_EV1 TEL_EV2 TEL_IS1 TEL_IS2 TEL_CP1 TEL_CP2 TEL_BG1 TEL_BG2 ELMEK1 ELMEK2 SHS_UYR MDN_HAL DIN KAN_GRB NFS_MHKY NFS_CSN NFS_ASN NFS_BSN
aşağıdaki gibidir.



Ayrıca ayrı bir tabloya (tblFARK) karşılaştırma sonucunda fark karşılaşılanlar yazılabilir mi?

mesala 2007 tablo1 kaydı
364275 ahmet gündoğdu a.keçe safiye
2010 tablo1 kaydı
364275 ahmet gündoğan abdülkadirkeçe safiye


olsun

tblfarkda
ID VATNO ALANADI VT2007DGR VT2010DGR
1 364275 SOYADI GÜNDOĞDU GÜNDOĞAN
1 364275 BABAADI A.KEÇE ABDÜLKADİRKEÇE


vs....
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Gerçek dosyama uygulamaya kalkınca sorun çıkartıyor...
3134 söz dizim hatası
Kod:
Option Compare Database

Private Sub Komut0_Click()
Dim sorgu, dosya As String
dosya = CurrentProject.Path & "\vtSAHIS032009.mdb"
'alanbasliklari = "VRT_KNO, ILCSNO, TCKIMLIKNO, SHS_UYR, SHS_CNS, ADI, SOYADI, ILKSOYADI, BABAADI, ANNEADI, DOGUMYERI, DOGUMTARIHI, MDN_HAL, DIN, KAN_GRB, NFS_IL, NFS_ILCE, NFS_MHKY, NFS_CSN, NFS_ASN, NFS_BSN, ADR_IL, ADR_ILCE, ADR_MUHTAR, ADR_CD_SKK, ADR_KNO, ADR_DNO, SCM_SNDNO, SCM_SNDKSRNO, SCM_SANDIKALANI, SCM_TAR, S_VGT TAR, ADR_BLD, ADR_PSK, ADFDR_BLD2, ADISOYADI, LST_ADI, LST_NUM, LST_TRH, NFC_SRI, NFC_SNO, NFC_YER, NFC_VND, NFC_KNO, NFC_KTR, TEL_EV1, TEL_EV2, TEL_CP1, TEL_IS1, TEL_IS2, TEL_CP2, TEL_BG1, TEL_BG2, ELMEK1, ELMEK2, BAB_TCK, ANN_TCK, ESI_TCK, EGT_DZY, EGT_BAD, EGT_DRM, EGT_OAD, EGT_MSL, EGT_MZT, ASK_DRM, ISY_ADI, ISY_GRV, ASK_TRH, ASK_ACK"
sorgu = "insert into dbSAHIS ( VRT_KNO, ILCSNO, TCKIMLIKNO, SHS_UYR, SHS_CNS, ADI, SOYADI, ILKSOYADI, BABAADI, ANNEADI, DOGUMYERI, DOGUMTARIHI, MDN_HAL, DIN, KAN_GRB, NFS_IL, NFS_ILCE, NFS_MHKY, NFS_CSN, NFS_ASN, NFS_BSN, ADR_IL, ADR_ILCE, ADR_MUHTAR, ADR_CD_SKK, ADR_KNO, ADR_DNO, SCM_SNDNO, SCM_SNDKSRNO, SCM_SANDIKALANI, SCM_TAR, S_VGT TAR, ADR_BLD, ADR_PSK, ADFDR_BLD2, ADISOYADI, LST_ADI, LST_NUM, LST_TRH, NFC_SRI, NFC_SNO, NFC_YER, NFC_VND, NFC_KNO, NFC_KTR, TEL_EV1, TEL_EV2, TEL_CP1, TEL_IS1, TEL_IS2, TEL_CP2, TEL_BG1, TEL_BG2, ELMEK1, ELMEK2, BAB_TCK, ANN_TCK, ESI_TCK, EGT_DZY, EGT_BAD, EGT_DRM, EGT_OAD, EGT_MSL, EGT_MZT, ASK_DRM, ISY_ADI, ISY_GRV, ASK_TRH, ASK_ACK )" _
    & " select VRT_KNO, ILCSNO, TCKIMLIKNO, SHS_UYR, SHS_CNS, ADI, SOYADI, ILKSOYADI, BABAADI, ANNEADI, DOGUMYERI, DOGUMTARIHI, MDN_HAL, DIN, KAN_GRB, NFS_IL, NFS_ILCE, NFS_MHKY, NFS_CSN, NFS_ASN, NFS_BSN, ADR_IL, ADR_ILCE, ADR_MUHTAR, ADR_CD_SKK, ADR_KNO, ADR_DNO, SCM_SNDNO, SCM_SNDKSRNO, SCM_SANDIKALANI, SCM_TAR, S_VGT TAR, ADR_BLD, ADR_PSK, ADFDR_BLD2, ADISOYADI, LST_ADI, LST_NUM, LST_TRH, NFC_SRI, NFC_SNO, NFC_YER, NFC_VND, NFC_KNO, NFC_KTR, TEL_EV1, TEL_EV2, TEL_CP1, TEL_IS1, TEL_IS2, TEL_CP2, TEL_BG1, TEL_BG2, ELMEK1, ELMEK2, BAB_TCK, ANN_TCK, ESI_TCK, EGT_DZY, EGT_BAD, EGT_DRM, EGT_OAD, EGT_MSL, EGT_MZT, ASK_DRM, ISY_ADI, ISY_GRV, ASK_TRH, ASK_ACK from (select * " _
    & "from dbSAHIS in " & "'" & dosya & "'" & " where " _
    & "TCKIMLIKNO not in (select TCKIMLIKNO from dbSAHIS as trz))"

DoCmd.RunSQL sorgu
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Gerçek dosyama uygulamaya kalkınca sorun çıkartıyor...
3134 söz dizim hatası
Kod:
Option Compare Database

Private Sub Komut0_Click()
Dim sorgu, dosya As String
dosya = CurrentProject.Path & "\vtSAHIS032009.mdb"
'alanbasliklari = "VRT_KNO, ILCSNO, TCKIMLIKNO, SHS_UYR, SHS_CNS, ADI, SOYADI, ILKSOYADI, BABAADI, ANNEADI, DOGUMYERI, DOGUMTARIHI, MDN_HAL, DIN, KAN_GRB, NFS_IL, NFS_ILCE, NFS_MHKY, NFS_CSN, NFS_ASN, NFS_BSN, ADR_IL, ADR_ILCE, ADR_MUHTAR, ADR_CD_SKK, ADR_KNO, ADR_DNO, SCM_SNDNO, SCM_SNDKSRNO, SCM_SANDIKALANI, SCM_TAR, S_VGT TAR, ADR_BLD, ADR_PSK, ADFDR_BLD2, ADISOYADI, LST_ADI, LST_NUM, LST_TRH, NFC_SRI, NFC_SNO, NFC_YER, NFC_VND, NFC_KNO, NFC_KTR, TEL_EV1, TEL_EV2, TEL_CP1, TEL_IS1, TEL_IS2, TEL_CP2, TEL_BG1, TEL_BG2, ELMEK1, ELMEK2, BAB_TCK, ANN_TCK, ESI_TCK, EGT_DZY, EGT_BAD, EGT_DRM, EGT_OAD, EGT_MSL, EGT_MZT, ASK_DRM, ISY_ADI, ISY_GRV, ASK_TRH, ASK_ACK"
sorgu = "insert into dbSAHIS ( VRT_KNO, ILCSNO, TCKIMLIKNO, SHS_UYR, SHS_CNS, ADI, SOYADI, ILKSOYADI, BABAADI, ANNEADI, DOGUMYERI, DOGUMTARIHI, MDN_HAL, DIN, KAN_GRB, NFS_IL, NFS_ILCE, NFS_MHKY, NFS_CSN, NFS_ASN, NFS_BSN, ADR_IL, ADR_ILCE, ADR_MUHTAR, ADR_CD_SKK, ADR_KNO, ADR_DNO, SCM_SNDNO, SCM_SNDKSRNO, SCM_SANDIKALANI, SCM_TAR, S_VGT TAR, ADR_BLD, ADR_PSK, ADFDR_BLD2, ADISOYADI, LST_ADI, LST_NUM, LST_TRH, NFC_SRI, NFC_SNO, NFC_YER, NFC_VND, NFC_KNO, NFC_KTR, TEL_EV1, TEL_EV2, TEL_CP1, TEL_IS1, TEL_IS2, TEL_CP2, TEL_BG1, TEL_BG2, ELMEK1, ELMEK2, BAB_TCK, ANN_TCK, ESI_TCK, EGT_DZY, EGT_BAD, EGT_DRM, EGT_OAD, EGT_MSL, EGT_MZT, ASK_DRM, ISY_ADI, ISY_GRV, ASK_TRH, ASK_ACK )" _
    & " select VRT_KNO, ILCSNO, TCKIMLIKNO, SHS_UYR, SHS_CNS, ADI, SOYADI, ILKSOYADI, BABAADI, ANNEADI, DOGUMYERI, DOGUMTARIHI, MDN_HAL, DIN, KAN_GRB, NFS_IL, NFS_ILCE, NFS_MHKY, NFS_CSN, NFS_ASN, NFS_BSN, ADR_IL, ADR_ILCE, ADR_MUHTAR, ADR_CD_SKK, ADR_KNO, ADR_DNO, SCM_SNDNO, SCM_SNDKSRNO, SCM_SANDIKALANI, SCM_TAR, S_VGT TAR, ADR_BLD, ADR_PSK, ADFDR_BLD2, ADISOYADI, LST_ADI, LST_NUM, LST_TRH, NFC_SRI, NFC_SNO, NFC_YER, NFC_VND, NFC_KNO, NFC_KTR, TEL_EV1, TEL_EV2, TEL_CP1, TEL_IS1, TEL_IS2, TEL_CP2, TEL_BG1, TEL_BG2, ELMEK1, ELMEK2, BAB_TCK, ANN_TCK, ESI_TCK, EGT_DZY, EGT_BAD, EGT_DRM, EGT_OAD, EGT_MSL, EGT_MZT, ASK_DRM, ISY_ADI, ISY_GRV, ASK_TRH, ASK_ACK from (select * " _
    & "from dbSAHIS in " & "'" & dosya & "'" & " where " _
    & "TCKIMLIKNO not in (select TCKIMLIKNO from dbSAHIS as trz))"

DoCmd.RunSQL sorgu
End Sub
özür dilerim vt alanlarından birinde boşluk bırakmışım çalışmaya başladı ancak 2 saate 2 mm doldu :)
daha hızlı olamaz mı?
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Hacam yeni yabloya eski tabloadaki verileri almak için kodları çalıştırdım 2 saatten fazla sürdü... (çünkü uyumuşumum) sabah kalktığımda 22 bin kayıt eklenecektri diyordu... tamam dedeiğimde ise hata verdi ... her neyse bu kodun daha hızlı olanı yok mu?
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sn taruz iki tabloda aynı veritabanında ise (Bu ise 2010 da boş olup 2007 de dolu olan alanları 2010 a günceller, güncel yani dolu olanlara ilişmez..:) kodlar nasıl olmalı
 
Katılım
18 Nisan 2007
Mesajlar
2,053
Excel Vers. ve Dili
Access 2019
Merhaba..

Özel mesajda belirttiğiniz kayıt sayında bu yöntemi kullanmanız sağlıklı olmaz.. Bu işlem tek seferde yapılacaksa her iki dosyayı birleştirip ado ile nispeten daha hızlı yapabilirsiniz.. Deneyiminiz varsa sql serverda bu işlemi yapmak en efektif çözüm olur..
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sn. taruz accesa geçmeye karar verdim ancak bir benzetme yapmak gerekirse arçata kontağı çevirmeden saniyede 200 nasıl yapar derdine düşmüşüm.
Çünkü hiç bir bil gim yok... dediklerinizi yapabilmem içn kafamda canlanması lazım o da yok... siz bir örnek yapsanız sevinirim.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sn hocalarım lütfen yardımlarınız esirgemeyiniz... Sorduğum soruda eksiklikler varsa uyarınız.. Çok önemlidir.
kısaca tekrar edecek olursak
1) her iki dosyada aynı alan başlıklarından oluşmakta ve aynı veri türü değerindedir.
2) alan başlığı sayısı 60 tır.
3) yeni dosya da 300 bin kayıt vardır.
4) eski dosyada 30 bin kayıt vardır.
5) her iki tablodada VATNO alanı benzersiz kayıtlardan oluşmaktaadır.
6) eski tabloda olup yeni tabloda olmayan vatnoları yeni tabloya eklensin.
7) eski tabloda xxx vatnolu kayıtta dolu olan alanlar (medeni hal, dın vs... ) yeni tabloda boş olan alanlara yazılsın.
 
Katılım
6 Şubat 2005
Mesajlar
1,467
Sn hsayar
Ekteki örnekte;
1- "AL" işlemi ile 2007 Access'ten ilgili tabloyu yeni 2010 Access e aldım.
DİKKAT: Eğer bu tabloların isimleri aynı ise 2007 accessteki tablonun adını değiştirin.
2- Sorgularda ilk sorgu (1Bul) yardımcı sorgu 2007 bulunan ama 2010 da bulunmayan kayıtları buluyor.
3- İkinci sorgu (2ekle) bu sorguya tıklayıp (1Bul) sorgusu ile belirlediğimiz kayıtları 2010 tablosuna ekliyoruz.
3- Üçüncü sorgu (3Güncelle) yine bu sorguya tıklayıp, 2007 ve 2010 tablolarında eşleşen kayıtlarda, 2010 tablosundaki boş alanlara 2007 deki bilgileri alıyor.
4- Artık 2007 den AL işlemi ile aldığığınız tabloya ihtiyacınız kalmadı ise silebilirsiniz.
 

Ekli dosyalar

Son düzenleme:
Üst