Tablolar Arası Aktarma Sorunu

1 2
12/05/2017, 11:34

kübrashn

Merhaba arkadaşlar cümleten hayırlı Cumalar
Fatura tutanak tablosundan Veri tabanı tablosuna verileri aktarmak ve fatura tutanak dosyasında ki verileri silmek istiyorum. Biraz araştırdım bir kod buldum uyarlamak istedim lakin hata veriyor. Yardımcı olabilirseniz sevinirim. Saygılarımla
12/05/2017, 11:52

ozanakkaya

Merhaba,

Referanslara "Microsoft ActiveX Data Object 2.8 library" referansını ekleyip, butonun tıklandığında olayındaki kodu aşağıdaki ile değiştiriniz.

StrSQL = "SELECT * FROM Veri_Tabanı"
Set rstkayit = New ADODB.Recordset
rstkayit.Open StrSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
With rstkayit
.Find "[Kimlik]=" & [Form1].Form![Kimlik]
If rstkayit.EOF Then

.AddNew
.Fields("S_NO") = [Form1].Form![S NO]
.Fields("FİRMA_ADI") = [Form1].Form![FİRMA_ADI]
.Fields("FATURA_TARİHİ") = [Form1].Form!FATURA_TARİHİ
.Fields("FATURA_NO") = [Form1].Form!FATURA_NO
.Fields("TUTARI") = [Form1].Form!TUTARI
.Fields("AÇIKLAMA") = [Form1].Form!AÇIKLAMA
.Fields("Teslim_Tarihi") = [Form1].Form!Teslim_Tarihi

.Update
End If
End With

DoCmd.SetWarnings False
   DoCmd.RunSQL "DELETE Fatura_tutanak.Kimlik FROM Fatura_tutanak WHERE (((Kimlik)=[Form1].Form![Kimlik]))"
DoCmd.SetWarnings True


DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Me.Form1.Requery
   MsgBox "Aktarma Yapıldı.", , "Bilgi"
12/05/2017, 11:57

atoz112

sayın kübrashn,

bahsettiğiniz talebinize yönelik olarak;

kendi adıma geçerli olmak sureti ile,eklediğiniz örnek uygulamayı imkan ve zaman yetersizliği gerekçesi ile inceleme ortamında değilim fakat bir fikir vermesi amacı ile,

kayıt ekleme işlemi için INSERT INTO ya da INSERT INTO...SELECT Sql kod kullanımı ile veya Recordset kullanımı ile de bunu sağlayabilirsiniz.

ardından da,kayıt silme DELETE SQL kod kullanımını gerçekleştirebilirsiniz.

DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO kaydedilecek_tablo_adi ([alan_adi1],[alan_adi2],[alan_adi3],...v.s.) VALUES (" & Me.denetim_adi1 & "," & Me.denetim_adi2 & "," & Me.denetim_adi3 & ")"

DoCmd.RunSQL "DELETE FROM kayit_silinecek__tablo_adi WHERE id=" & Me.id_denetimi_adi
DoCmd.SetWarnings True

yukarıda yazılı kod kalıpları benzeri kullanım ile sonuç elde edebilirsiniz.eğer kayıt silme işlemi için kritere göre değil de direkt olarak tablodaki tüm kayıtları silmek isterseniz,

DoCmd.RunSQL "DELETE * FROM kayit_silinecek__tablo_adi"

benzeri kod kalıbını kullanmanız yeterlidir.

bu kodların bitiminde eğer sonuçları hemen akabinde görmek istiyorsanız ana formu veya varsa alt formu güncellemeniz için .REQUERY kod satırını da dahil etmelisiniz.bilginize...iyi çalışmalar,saygılar.
12/05/2017, 12:26

kübrashn

Çok Teşekkürler.
Hemen deniyorum
12/05/2017, 12:34

kübrashn

(12/05/2017, 11:52)ozanakkaya yazdı: Merhaba,

Referanslara "Microsoft ActiveX Data Object 2.8 library" referansını ekleyip, butonun tıklandığında olayındaki kodu aşağıdaki ile değiştiriniz.

StrSQL = "SELECT * FROM Veri_Tabanı"
Set rstkayit = New ADODB.Recordset
rstkayit.Open StrSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
With rstkayit
.Find "[Kimlik]=" & [Form1].Form![Kimlik]
If rstkayit.EOF Then

.AddNew
.Fields("S_NO") = [Form1].Form![S NO]
.Fields("FİRMA_ADI") = [Form1].Form![FİRMA_ADI]
.Fields("FATURA_TARİHİ") = [Form1].Form!FATURA_TARİHİ
.Fields("FATURA_NO") = [Form1].Form!FATURA_NO
.Fields("TUTARI") = [Form1].Form!TUTARI
.Fields("AÇIKLAMA") = [Form1].Form!AÇIKLAMA
.Fields("Teslim_Tarihi") = [Form1].Form!Teslim_Tarihi

.Update
End If
End With

DoCmd.SetWarnings False
   DoCmd.RunSQL "DELETE Fatura_tutanak.Kimlik FROM Fatura_tutanak WHERE (((Kimlik)=[Form1].Form![Kimlik]))"
DoCmd.SetWarnings True


DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Me.Form1.Requery
   MsgBox "Aktarma Yapıldı.", , "Bilgi"

Ozan Hocam dediğinizi yaptım lakin fatura tutanak tablosundan sadece son kaydı aktarıp siliyor. Bunu listede bulunan tüm kayıtların aktarılması ve silinmesi gibi düzeltebilir misiniz? Rica Etsem
12/05/2017, 14:19

ozanakkaya

Merhaba,
Butonun tıklandığında olayındaki kodları aşağıdaki ile değiştiriniz.

DoCmd.SetWarnings False

DoCmd.RunSQL "INSERT INTO Veri_tabanı ( FİRMA_ADI, FATURA_TARİHİ, FATURA_NO, TUTARI, AÇIKLAMA, Teslim_Tarihi ) SELECT Fatura_tutanak.FİRMA_ADI, Fatura_tutanak.FATURA_TARİHİ, Fatura_tutanak.FATURA_NO, Fatura_tutanak.TUTARI, Fatura_tutanak.AÇIKLAMA, Fatura_tutanak.Teslim_Tarihi FROM Fatura_tutanak;"

MsgBox "Aktarma Yapıldı. ", , "Bilgi"
   
DoCmd.RunSQL "DELETE Fatura_tutanak.Kimlik FROM Fatura_tutanak;"
   
Me.Form1.Requery
   
DoCmd.SetWarnings True
1 2