Skip to main content

AccessTr.neT


Accessde ID alanına göre tekrarsız kayıt girme

Accessde ID alanına göre tekrarsız kayıt girme

Çözüldü #1
Merhaba Arkadaşlar,

İhtiyaç üzerine çalıştığım şirkette IT Envanter programını Access de oluşturmak üzere birkaç ay önce kolları sıvadım. İnceledikçe ve uyguladıkça bilgiler de yavaş yavaş aklıma geliyor. Ancak bir yerde takıldım .

Varlık Hareketleri Formundan Varlık Hareket tablosuna basit bir kayıt yapıyorum. Bu formdaki alanlar kısaca Hareket Türü, Varlık_Sınıf, Kullanıcı, Departman gibi...

Formdaki bilgileri kaydet butonuna tıkladıktan sonra kayıt ediyorum. Ancak kaydet butonuna 2 kere bastığımda farklı bir ID ile tabloda aynı kayıttan bir tane daha oluşturuyor. Veya o kaydı güncellemek istediğimde de farklı bir ID ile kayıt açıyor.

Kaydet Butonu içerisinde oluşturmuş olduğum Sql kodu aşağıdaki gibidir.

Private Sub btn_Kaydet_Click()

Dim kaydet As String

kaydet = "INSERT INTO tbl_VarlikHareket (Hareket_Tur ,Varlik_Kodu ,Departman ,Yeni_Departman ,Kullanici ,Yeni_Kullanici,Tarih,Aciklama,Sinif)VALUES(cbo_hareket_tur,cbo_VarlikKodu,txt_Departman,cbo_YeniDepartman,txt_Kullanici,cbo_YeniKullanici,txt_Tarih,txt_Aciklama,cbo_Sinif)"

DoCmd.SetWarnings False
DoCmd.RunSQL kaydet
DoCmd.SetWarnings True


Sorunu çözmek için benim aklıma ID numarasını koşulda belirtip üzerine kayıt yapmaktı ancak birincil anahtar olduğu için bu kayıt gerçekleşmedi ve yeni oluşturulan kayıtlarda tabloya henüz bir kayıt girilmediği için hata verdi.

Sorunum ile ilgili var ise çözümünüzü paylaşırsanız sevinirim.

Teşekkürler.
Cevapla
#2
sayın cetinyildiz,


bahsettiğiniz talebinize yönelik olarak,
site içerisindeki arama sayfasında mükerrer kayıt yazıp arama yaptığınız takdirde,edineceğiniz çeşitli konularda yer alan bilgileri ve örnekleri uygulamak sureti ile,aynı kaydın tekrar girilmesini engelleme işlemini sağlayabilirsiniz.bilginize.

son olarak,
Site Kuralları sayfasını tekrar incelemekle birlikte,örnek uygulamanızı konunuza dahil etmeyi ihmal etmeyiniz.

ayrıca,ekleyeceğiniz örneğinizi,2003-2007 kullanıcıları da olabileceği düşünülerek 2002-2003 farklı kaydet işlemini uygulayıp bu hali ile de dahil edebilirsiniz.

farklı kaydetme konusunda yine sorun yaşayacak olursanız eğer,aşağıda bağlantısı verilen konunun 4.mesajında yazılı olanları uygulayabilirsiniz.

otel otomasyonu

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
Belirttiğiniz hususlara bundan sonrası için dikkat edeceğim/uygulayacağım.

teşekkür ederim.
Cevapla
#4
Tekrar Merhaba ,

Gönderdiğiniz konuyu inceledim. Ayrıca mükerrer kayıt olarak açılmış konularada baktım. Benim işime yarayanı bulamadım veya bende farkedememiş olabilirim.

Sorunumu daha iyi analiz edebilmeniz için programı EK' te gönderiyorum. Herhangi bir kayıt yaptıktan sonra 2 defa kaydet butonuna tıklayıp tablodan olan biteni izlemeniz yeterli olacaktır.

İlgilendiğiniz için şimdiden Teşekkür Ederim.
.rar IT Envanter-2003.rar (Dosya Boyutu: 35,68 KB | İndirme Sayısı: 4)
.rar IT Envanter-2007-2013.rar (Dosya Boyutu: 109,65 KB | İndirme Sayısı: 14)
Cevapla
#5
sayın cetinyildizz,

öncelikle uygulamanız incelendiğinde ilgili form üzerinde tespit edilen bazı hususlara dair açıklamalarda bulunmakta fayda var kanısındayım.

1) frm_EnvanterHareket adlı formun kayıt kaynağında sorgu ifadesi yazmak yerine direkt ilgili tbl_VarlikHareket adlı tabloyu listeden seçmeniz yeterli.

2) 1.maddede yazılı durumdan dolayı Kaydetme işlemi için,"INSERT INTO..." Sql sorgu ifadesi kullanmanıza da gerek kalmayacaktır böylece.bunun yerine,

Kod:
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
ifadesini yazmanız yeterli olacaktır.

3) Sql sorgu işlemlerini çalıştırırken uyarı mesajlarının çıkmasını engellemek adına kullanmayı düşündüğünüz DoCmd.SetWarnings kod ifadelerini,illa ki her bir Sql sorgu satırı için yazmanıza da gerek yoktur.birkaç Sql sorgu ifadesini yazacağınız zaman,ilk sorgu ifadesinin bir üzerine DoCmd.SetWarnings False ifadesini ve en son Sql sorgusunun bir altına da DoCmd.SetWarnings True ifadesini yazmanız yeterlidir.

4) Uygulamalarınızdaki Olay Yordamlarında,Katıştırılmış Makro yerine,kodlama bilginizi geliştirmeye imkan sağlamanız amacı ile Kodlama içerikli Olay Yordamları kullanmaya özen göstererek önem veriniz.

5) kod sayfasında yer alan bazı kodlar gerekmediği için iptal edilmiştir.buna dair bilgilendirme de kodlarda belirtilmiştir.

son olarak,EK'te;yukarıda bahsi geçen işlemlerin gerekli görülen düzenlemeleri yapılarak hazırlanmış örnek uygulama mevcuttur.inceleyebilirsiniz.bilginize...iyi çalışmalar,saygılar.
.rar IT Envanter-ATOZ.rar (Dosya Boyutu: 40,36 KB | İndirme Sayısı: 16)
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
#6
Yardımınız için teşekkür ederim.İnceleyen diğer arkadaşlara da bilgi olması açısından açıklama gereği duydum.

IT Envanter programının tamamını size göndermediğim için bazı alanları gereksiz görüp iptal etmişsiniz. Örneğin VarlikKodu_AfterUpdate() içerisindeki kod , seçilen varlığın kullanıcısını ve departmanını aşağıdaki textboxlara dolduruyor. Varlık farklı bir bölüme ve/veya kullanıcıya da verilebileceği için comboboxlardan yeni kullanıcısını seçebiliyoruz. Böylelikle varlığın kullanım geçmişi de sorgu ile ortaya çıkabilecektir. En azından ben böyle düşündüm Img-grin

Ayrıca yakın zamanda IT Envanter Programını sizlerle de paylaşıyor olacağım.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da