Formdan Tabloya Update Mi Kullanılmalı Yoksa Silip Tekrar Kaydetmek Mi Mantıklı.

27/02/2020, 14:06

Oğuz Türkyılmaz

Merhabalar 
İlişkisiz bir Uye Tanımlama formum var. Kaydetme ve silme fonksiyonları calısıyor. Bilgilerde deöişiklik yapma ihtiyacı olduğunda ilgili Formda  Düzenle Tusunun olay yordamında update mi kullanmalıyım yoksa silip tekrar kaydetme seklinde mi çalıştırmalıyım. Silip tekrar kaydetme yontemı sanki daha mantıklı ve cabuk gibi ama bır sakınca cıkma ıhtımali varmı sonucta bu üyenin database de hareketleri olacak hareket gormus bır kaydı sildirmek ve tekrar kaydetmek mantıklı mı ?

27/02/2020, 14:36

orhantanriverdi

Sn.Oguz Turkyilmaz

Ben bu sekilde bir form kullansaydim, kesinlikle update tusu kullanirdim. Cunku ayni kisiye ait baska yerlerde kayitlar olabilir. 

Karar tabiki sizin

Kolay gelsin
27/02/2020, 14:42

Oğuz Türkyılmaz

(27/02/2020, 14:36)orhantanriverdi yazdı: Sn.Oguz Turkyilmaz

Ben bu sekilde bir form kullansaydim, kesinlikle update tusu kullanirdim. Cunku ayni kisiye ait baska yerlerde kayitlar olabilir. 

Karar tabiki sizin

Kolay gelsin
Yanıtınız için çok teşekkür ederim. Öyle yapayım.
28/02/2020, 10:44

ozanakkaya

Ekleme sorgusu veya güncelleme sorgusu yerine ado kullanın. Sorguda tablodaki alanın veri tipine göre sorunlar çıkabilir.

Kayıt eklemek için;
strSQL = "SELECT * FROM tabloadı "
    Set rstkayit = New ADODB.Recordset
    rstkayit.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
        With rstkayit
            If Not rstkayit.EOF Then
                .AddNew
                .Fields("tablodakialan1") = Me.metinkutusu1
                .Fields("tablodakialan2") = Me.acilankutu.Column(0)
                .Update
            End If
        End With


Kayıt güncellemek için;

strSQL = "SELECT * FROM tabloadı "
    Set rstkayit = New ADODB.Recordset
    rstkayit.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
        With rstkayit
        .Find "[kayitno]=" & "'" & Me![KAYITNO] & "'"
            If Not rstkayit.EOF Then
                .Fields("tablodakialan1") = Me.metinkutusu1
                .Fields("tablodakialan2") = Me.acilankutu.Column(0)
                .Update
            End If
        End With

Ado kodunda tablodaki alanlar ve formdaki denetimleri alt alta yazdığı için net görebilirsiniz ve hata olasılığı azalır.

Bu kodun kullanılması için ado referansının eklenmesi gerekli.
28/02/2020, 11:36

Oğuz Türkyılmaz

Çok teşekkür ederim ozan bey bu cevabın gelmesi cok iyi oldu.