AccessTr.neT

Tam Versiyon: Test Çalışması - Soru 1: Tablodan Tabloya Veri Aktarımı (Boş satırları aktarmayalım)
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2
Merhaba,

Oradan buradan devşirme yöntemiyle ama sonuçta kendi hayal gücümüde katmak suretiyle bir test uygulaması yapmaya çalışıyorum.

Form1 formundaki buton ile Ana_Tablo dan Ana_Tablo1 e veri aktarımı yaptırıyorum.

Soru 1 : Bir şekilde Sorulansoru veya verilencevap bir şekilde boş bırakıldıysa o ID'ye ait satırın aktarılmamasını istiyorum.

Butondaki kodda yapılması gereken düzenleme konusunda cahilliğime yenik düştüm..
merhaba sayın SCavusoglu,

bahsettiğiniz talebinize dair ek'te örnek uygulama mevcuttur.inceleyebilirsiniz.

yalnız belirtmekte fayda var;ek'teki çalışmada şu anki hali üzerinden yapılmış bir çalışmadır,
istenen talebe geçici olarak cevap verebilmek anlamında.

not:ana tablodan kaydın silinmesini de talep ettiğiniz için sonrasında,bu kayıt da silinmektedir.

fakat bir hususu belirtmekte fayda görüyorum.uygulamanızı ayrıntılı inceleme imkanım olmasa da geneline bakıldığında,gerek yapmayı düşündüğünüz çalışma amacına dair gerekse de kodlama kısımlarında uygulamanızın yeniden gözden geçirilmeye ve düzenlenmeye ihtiyacı olduğu görülmektedir.bu sebeple,uygulamanın yapılma amacına dair çeşitli örnek uygulamalar araştırılarak izlenimlerde bulunmak,fikir almak açısından durum değerlendirmesi yaparak,uygulamanızın daha geçerli ve verimli olmasını,değerlendirilebilir ve kullanılabilir olmasını,soru cevap akışının doğru işlemesini sağlamanız pekala mümkün.bilgilerinize.

iyi çalışmalar,
saygılar.
Atoz Hocam Teşekkürler,

Kodun aşağıdaki kısmını boş kısımların aktarılmaması için kullandığınız sanırım.. Ancak bir sorun var gibi duruyor.. Çünkü formdan her çıktığımda Ana_Tablo da bir kayıt kalıyor.. Bir yerlerde bir hata var sanırım.. Keza kodun bu kısmını silince tüm veriler aktarılıp hepsi siliniyor..
LEFT JOIN Ana_Tablo2 ON Ana_Tablo.ID_ANA = Ana_Tablo2.ID_ANA
Sayın scavusoglu,

Alıntı:...formdan her çıktığımda Ana_Tablo da bir kayıt kalıyor...

Sizin talebinize göre, frm_ana formunda önce soruyu cevaplayıp sonrasında bitiş işlemi gerçekleştikten sonra, Form1 formuna geçme işlemi söz konusu.ve burada da yine sizin talebinize göre önce Ana_Tablo2 isimli tabloya Ana_Tablo isimli tablodaki kaydın kaydedilmesi ve ardından da Ana_Tablo isimli tablodan kaydın silinmesi sağlanmıştır.bahsettiğiniz tabloda kaydın kalması söz konusu değildir.denemelerde böyle bir sorun görülmemekte ve sorunsuz çalıştığı gözlenmektedir.

ayrıca,uygulamanızda frm_ana formunda bir soru cevapladıktan sonra Ana_Tablo tablosuna tek kayıt yapmaktadır.bu sebeple bu tabloda tek kayıt olmaktadır.haliyle,buradaki tek kayıt bir diğer tabloya aktarıldıktan sonra silinmektedir,talebiniz doğrultusunda.

Alıntı:...kodun bu kısmını silince tüm veriler aktarılıp hepsi siliniyor...

bu ifadenizde kast ettiğiniz anlaşılmamatadır.

son olarak;
Bir önceki mesajda da belirtildiği üzere,soru cevap oluşturma mantığı yeniden gözden geçirilmeli,işleyiş yeniden düzenlenmeli.bu sebeple,benzer nitelikteki uygulamalar incelenerek işleyiş mantığı uygulamanıza adapte edilmeli.

iyi çalışmalar,
saygılar.
Sn.Atoz112,

Ana_Tablo ya elle bir kayıt ekleyin, ancak sadece ID ve SORULANSORU dolu olsun VERILENCEVAP boş olsun sonra eklediğiniz kodu çalıştırın. Benim istediğim böyle bir durumda tablodaki o satırın diğer tabloya aktarılmamasıdır.

Yani tüm satırdaki, tüm alanlar tam doldurulmadığı takdirde o satırın bütünüyle es geçilmek suretiyle Ana_Tablo da kalmasını, başka bir deyişle aktarılma işleminin bunun gibi eksik satır(lar) dışında gerçekleşmesini istiyorum.

Kodun devamındaki sil komutu zaten o eksik doldurulmuş satırla birlikte tüm tabloyu temizleyeceğinden veride şişme yaşanmayacağını düşünüyorum..
Biraz uğraştırdı ama çözdüm sonuçta..

Çözüm :
frm_ana kapandığında olayına
Private Sub Form_Close()
If IsNull(Me.VERILENCEVAP) Or Me.VERILENCEVAP = "" Then
Else
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE FROM Ana_Tablo WHERE VERILENCEVAP is null "
End If
End Sub

Kodu ile tabloda boş kayıt oluşursa otomatik silinmesini sağladım.. Denemelerim devam ediyor..

Aynı zamanda form1 deki tbsil kodunuda

Sub tblsil()

DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE FROM Ana_Tablo WHERE VERILENCEVAP is null " 'boş satır sil
CurrentDb.Execute "insert into Ana_Tablo2 select * from Ana_Tablo" 'Aktarma
DoCmd.RunSQL "delete from Ana_Tablo where 1=1" 'tümünü sil
End Sub

Şeklinde değiştirerek önce boş satır varsa silmesini, ardından tablo2 ye aktarmasını ve son olarak tümünü silmesini sağladım..
Sayfalar: 1 2