Skip to main content

AccessTr.neT


Aynı veri varsa Güncelle Yoksa Ekle

Aynı veri varsa Güncelle Yoksa Ekle

#1
Ek'teki örneğimizde form2 de açılır kutu seçimi ile tablo1 de ay alan bölümünü güncelliyoruz.
Tablo1 de ay alanını günceledikten sonra komut tuşu ile (form2 de) tablo1 den tablo2 insert ediyoruz fakat tablo1 de aynı ayda değişiklik yapılmışsa (tablo2 insert ettikten sonra bu fark edilmiş ise) tablo2 den (form2 de) verileri silmeden güncellemek istiyoruz.
Özetle İnsert işlemi sorunsuz ama update işlemi eksik kalıyor.Tablo1 kontrol etsin ay farklı ve tablo2 de yoksa insert  aynı (var) ise update yapsın istiyoruz.Ama nasıl?
.zip insert-update.zip (Dosya Boyutu: 22,09 KB | İndirme Sayısı: 12)
Son Düzenleme: 15/12/2016, 08:01, Düzenleyen: ask200075.
Cevapla
#2
sayın ask200075,

bahsettiğiniz talebinize yönelik olarak;
kendi adıma olmak üzere,imkan ve zaman yetersizliği gerekçesi ile kısa süreli bir inceleme neticesinde,

her iki tabloda da aynı bilgilerin olması bana göre gereksiz bir durum olsa gerek.bir tabloda yer alan bilgilerin bir başka tabloda daha olması anlamında kast etmekteyim.bu durum,uygulama içerisinde hem gereksiz yer işgaline neden olacaktır hem de boşuna miktar artışına etki edecektir,öyle aşırı bir etkileme olmasa da.

bu veri güncelleme veya yeni kayıt ekleme işlemlerini ya tek bir tablo üzerinden yapmanın yahut da bir tabloda işlem yapılırken diğer tabloda ilgili kayıtların silinmesinin daha yerinde olacağı kanısındayım.

elbette ki,tercih ve takdir sizindir.

bilginize...iyi çalışmalar,saygılar.
Herkes, kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla
#3
Form2 de seçerek silme yapılabilir ama bunu yapmak veya yaptırmak istemiyoruz. Ek'teki bu küçük örnekte gereksiz olacağı doğrudur  fakat başka projede bu amaç tam yerinde ve gerekli olacalağını düşünmekteyım. saygılarımla
Son Düzenleme: 14/12/2016, 12:59, Düzenleyen: ask200075.
Cevapla
#4
sayın ask200075,

EK'te;
bahsettiğiniz talebinize yönelik olarak hazırlanmış örnek uygulama mevcuttur.inceleyebilirsiniz.

NOT 1

Alıntı:...bu küçük örnekte anlamsız gelebilir fakat başka projede bu amaç tam yerinde ve gerekli olacak...

ifadenize yönelik olarak;
sadece bilgilendirme ve açıklık getirmek amacı ile,zaten ilerideki bu duruma dikkat çekilmek sureti ile konunuzun 2.mesajındaki içerikte "anlamsız" diye bir ifade kullanılmamıştır.sadece,"gereksiz" olacağı vurgulanmıştır.yine bahsedildiği üzere,bu;sadece öneri mahiyetindedir.tercih ve takdir sizindir ibaresi de yer almıştır.

NOT 2

Mükerrer Kayıt Kontrolleri de dahil edilmiştir.

bilginize...iyi çalışmalar,saygılar.
.rar insert-update-ATOZ.rar (Dosya Boyutu: 22,82 KB | İndirme Sayısı: 41)
Herkes, kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla
#5
Hocam teşekkür ederim ama çözümü bu şekilde değilde;  Tablo1 içindeki (ay) alanla Tablo2 deki (ay) alanlanı kontrol ettirip yoksa (Tablo2 de mevcut değilse) Tablo2 ye tamamını (Tüm Verileri) eklemeyi var ise Tablo2 deki eşit olan ayın verilerini tüm verileri güncellemeyi amaçlamıştık uyarı vermeden de olur. Şöyle bir kod  görmüştüm ama uyarlayamadım.

If dcount("*","Kayıtyapılacaktabloadı",[Kayıteklenecek sutunadı]=&Forms("Formadı").FormMetinkutusu)>0 Then
curruntdb.execute"Insert into...........................................................
else
curruntdb.execute"Update........................................................... 
End If

Saygı ve Hürmetlerimle.....
Son Düzenleme: 15/12/2016, 08:04, Düzenleyen: ask200075.
Cevapla
#6
sayın ask200075,

aşağıdaki açıklamaların yapılması uygun görülmüştür.

1)

Alıntı:Tablo1 içindeki (Ay) alanla Tablo2 deki (Ay) alanlanı kontrol ettirip yoksa (Tablo2 de mevcut değilse) Tablo2 ye tamamını (Tüm Verileri) eklemeyi var ise Tablo2 deki eşit olan ayın verilerini tüm verileri Güncellemeyi amaçlamıştık

ifadenize yönelik olarak;
yapılan işlem zaten bunu sağlamaya yönelik bir çalışmadır.işleyişi özetlemek adına:

a) Form2 adlı formun alt kısmında yer alan ve Tablo2 tablosunu güncellemeye yönelik kullanılan buton ile,Tablo2 tablosunda eğer ilgili AY değeri mevcut değilse,Tablo1 tablosundaki değerleri Tablo2 tablosuna yeni AY değeri ile aktarmaktadır.

b) eğer Tablo2 tablosunda seçili AY değeri içeren kayıtlar mevcutsa GÜNCELLEME yapmakta ve eğer mevcut değilse YENİ KAYIT olarak eklemektedir.

c) Mükerrer Kayıt Kontrolü de yapılmak sureti ile Tablo2 tablosuna aynı değerlerin aktarılması engellenmiştir.

d) eğer olduğu gibi aktarımda bulunursanız,bu kodların dışında sizin yazdığınız kodlar ile,o zaman,Tablo2 tablosunda aynı kayıtlardan aynı ay değerleri ile ikinci bir kayıt daha eklemiş olursunuz.

örneğin;10 kayıt varsa ve tekrar aktarırsanız,20 kayıt olacak aynı kayıtları içeren.bunu engellemek için de,tablo2 tablosuna aktarmadan öncesinde mevcut kayıtları önce silip yani temizleyip sonra aktarmanız gerekecek.bu da,önce DELETE sorgusu ardından INSERT INTO sorgusunu çalıştırmak demektir.

fakat bu kodlar ile,bu durum engellenmiş,sadece gerekli kayıtların aktarımı sağlanmıştır.elbetteki,tercih ve takdir yine sizindir.

2) 

Alıntı:...uyarı vermeden de olur...

mesaj bildirimleri,sadece nasıl bir işlemin uygulanacağını bildirmek amacı ile dahil edilmiştir.Güncelleme veya Yeni Kayıt durumlarının bilinmesi için.

fakat,mesajları istemiyorsanız,yapmanız gereken,sadece;bu mesaj satırlarını (MSGBOX ifadeli olan) etkisizleştirmek veya tamamen kaldırmak.

bilginize...iyi çalışmalar,saygılar.
Herkes, kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task