Ancak konuda ismim geçtiği için ve bu aralar hiç bulamadığım bir boş vakit yaratıp yaptığım çalışmanın emeği boşa gitmesin diye bende gönderiyorum.
Bence de bir C tablosu yaratmanın bir manası yok. İşlemler direkt B tablosu üzerinde yapılabilir. Ayrıca B tablosu Excel olarak mı Access olarak mı isteniyor tam anlayamadığım için Access olarak bıraktım, gerekirse Excel'e aktarırız.
Transfer formunda dosya ismini default olarak "C:\Tablo A.xls" olarak getirdim. Aslında FileBrowser ile seçimli yapılabilir ama şimdi vaktim yoktu, sonra bakarız.
Sanırım istediğiniz gibi oldu, bir inceleyin bakalım.
Kod:
Private Sub LOG_TRANSFER()
On Error GoTo Err
DoCmd.Hourglass True
DoCmd.SetWarnings False
DoCmd.DeleteObject acTable, "A"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "A", Me.DosyaAdi, True
DoCmd.OpenQuery "1_A_Tablosundaki_Gecersiz_Kayitlari_Sil"
DoCmd.OpenQuery "3_A_Tablosundaki_Yeni_Kayitlari_B_tablosuna_Yaz"
DoCmd.OpenQuery "4_B_tablosundaki_Kayitlari_A_Tablosundakilerle_Guncelle"
DoCmd.SetWarnings True
DoCmd.Hourglass False
MsgBox "İşlem tamamlandı. Sonuçları B tablosunda görebilirsiniz. "
DoCmd.OpenTable "B", acViewNormal
Exit Sub
Err:
'A tablosunu silme esnasında hata verirse devam etsin.
If Err.Number = 7874 Then Resume Next
DoCmd.SetWarnings True
DoCmd.Hourglass False
If Err.Number = 3011 Then
MsgBox "Belirttiğiniz dosya bulunamadı", vbOKOnly, "UYARI"
Else
MsgBox Error
End If
End Sub
Alıntı:1)İki tablodaki bazı ortak veriler birleştirilerek( ortak verilerin bulunduğu kolon başlıkları farklı fakat içinde bulunan veriler aynı ) B tablosuna uygun formatta bir 3. tablo yaratmaktır ki bu tablo sonra ticari programa tekrar geri yüklenecektir.Üçüncü bir tabloya gerek yok, B tablosu üzerinden herşey yapılabilir.
Alıntı:2)oluşturulacak 3. tabloda B tablosundaki unininstock kolonu A daki İ kolonu ile karşılaştırılacak ve 3. Tablo B deki verilere göre tekrar güncellenecektir.Şimdi 3. tablo yapmayacağımıza göre B tablosundaki unininstock alanına dokunmayacağız. Peki A tablosundan yeni gelen kayıtlarda ne olacak bu alan?
Alıntı:3)B'de yer alan listprice kolonu A daki J kolonu ile karşılaştırılacak ve oluşturulacak 3. tablodaki listprice kolonu A daki veriye göre güncellenecektir.Güncelleme sorgusu ile B deki ListPrice, Price, Buying Price alanları A ya göre güncelleniyor. Buying Price alanı için %20 oranını sabit olarak ekledim sorguda, isterseniz değiştirirsiniz.
Alıntı:4)Tablo A da yer alan Fakat Tablo B de yeralmayan ( kısaca tedarikçi firmanın stoklarına yeni giren ürünler ) olacaktır.Bu ürünlerinde 3. Tabloya otomatikmen işlenmesi gerekmektedir.
A tabloundaki Yeni ürünler EklemeSorgusu kullanılarak B tablosuna otomatikman ekleniyor.