13/10/2009, 11:20
Seruz
Sn. Taruz bir örnek yapmış ve göndermiş, öncelikle kendisine teşekkürler.
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.
A tabloundaki Yeni ürünler EklemeSorgusu kullanılarak B tablosuna otomatikman ekleniyor.
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.