AccessTr.neT

Tam Versiyon: yeni girilen verinin mevcut kayıtlar içinde kontrolü
Ş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 arkadaşlar,
Ekte göreceğiniz veritabanımdaki f_ithalust formunda, kalite bölümündeki veriyi kıstas alarak kontruksiyon alanında veriler çağırılıyor ve kullanıcı bunlardan birini seçiyor. 
Eksiklik ise şurada; mevcut olan veri seçilmesi durumunda, "eklemek istiyor musunuz? " sorusu sorulmaması ve mevcut olan verinin bir kopyasının eklenmemesi gerekirken, bu maalesef oluyor.
Yani özetle istediğim, konstruksiyon alanında mevcut olan kayıt seçildiğinde hiçbir soru ve ekleme durumu olmasın, ancak mevcut kaytılarda bulunmayan, yeni bir kayıt eklendiğinde bu sorulsun ve kabul edilmesi dahilinde ekleme yapılsın.

Yardımlarınız için şimdiden teşekkür ederim.
Sayın mehmetb84,Bilgi-Kaynak  Veri Açılan Kutuda Yoksa Eklensin URL'ye Git bağlantısındaki konuyu inceleyiniz. Örnek uygulamadaki kodları kendi uygulamanıza ekleyebilirsiniz.

Yapamazsanız belirtin yardımcı olmaya çalışırız. Üzerinde biraz uğraşın.
Bu örnekte listede yoksa olayından hareketle yapıyor işlemi. Benimkinde eşleşen tablo verileri aracılığıyla çağırılan verileri kontrol ediyor. O yüzden uyarlamayı başaramadım. 
Benim kodda bi hata var da, nerede onu çözemedim. 
Zamanınız olduğunda bi göz atarsanız çok memnun olurum.
İstediğiniz örnek biçimi aşağıya eklendi. Güle güle kullanın Img-grin
(19/06/2016, 13:14)mehmetdemiral yazdı: [ -> ]İstediğiniz örnek biçimi aşağıya eklendi. Güle güle kullanın Img-grin
Tam istediğim gibi olmuş Mehmet Hocam ellerine sağlık.
Yalnız o kadar uğraştım anlayamadım, ilk dosyada POWER'ın yazdığı aşağıdaki kodda yanlış nerede?
Ona kafayı takmış durumdayım, belki de çok uğraştığım için.
Kod:
Private Sub it_kalite_AfterUpdate()
Me.txtKALNO = Me.it_kalite.Column(1)
Me.it_konst.Requery
End Sub


Private Sub it_konst_AfterUpdate()
Dim SQL As String
Dim db As Database
Dim rs As DAO.Recordset
Set db = CurrentDb()
SQL = "SELECT * FROM t_konst WHERE kons_kaliteno = " & Me.txtKALNO
Set rs = db.OpenRecordset(SQL)
If rs.EOF = True Then GoTo 100
rs.MoveFirst
If Me.it_konst = rs!kons_analiz Then Exit Sub
Do Until rs.EOF
rs.MoveNext
Loop


100
c = MsgBox(Me.it_konst & " Listede yok...Eklensin mi ?", vbYesNo + vbQuestion, "Program")
If c = vbYes Then
  rs.AddNew
  rs!kons_analiz = Me.it_konst
  rs!kons_kaliteno = Me.txtKALNO
  rs.Update
  MsgBox "Yeni Kalite eklenmiştir..."
  Me.it_konst.Requery
  Else
  End If
 
  End Sub
Mantık farklı biraz. Benim yaptığım Ozan'ın yıllarca önce yaptığı listede yoksa eklensin olayını sizin isteğinize göre güncellemekti. Bu arada çok da kolay yapmadım çünkü Sql konusunda ben de çok çok eksiğim. Dikkat ederseniz olay yordamını "listede yokken" olayına yazdım. Sizin örneğinizde daha farklı. Onda güncelleme sonrasında alana girilen veri kontrol edilip tabloda yoksa eklenmesi isteniyor. O biraz daha zor ve Access  nimetlerini kullanmadan daha çok vb mantığıyla hazırlanmış. Benim zorlandığım yer ise, aynı anda tabloya birden çok alanın eklenmesiydi. Biz daha önce tek bir kayıt olan bir tabloya (mesela diyelim bir adres olayında mahalle adı) listede yoksa veri ekliyorduk. Bunun için insert into komutunu kullanarak Sql ile tabloya veri ekliyoruz. Normalde Ozan'ın eklediği örnekte bunun için tek satır eklendiğinden işimiz eksik kalıyor ve ilişkili olduğu kons_kaliteno verisi de aynı anda eklenemediğinden iş tamamlanmıyor. Bu nedenle sql'de insert into komutunun kullanımıyla ilgili şu adresi inceledim ve çözüme çok yardımı oldu. 
SQL insert into açıklaması

Bu arada it_kalite alanındaki ilişkili değerin de sayısal bir değer olarak tablodaki kons_kaliteno alanına eklenmesi gerekiyordu. Bunun için bir alt formdaki açılan kutunun 2. kolonundan gelen veriyi bir değişkene atadım. Değişkenimin adı memo. (Mehmet'iz ya Img-grin) ) Memo değişkenine şu satırla o anda it.kalite açılan kutusundan şu kodlarla veri gönderdim:

Kod:
memo = Forms!f_ithalust![f_ithalalt].[Form].it_kalite.Column(1)

Böylece strsql = "Insert Into t_konst (kons_analiz,kons_kaliteno) values ('" & NewData & "'," & memo & ")" koduyla da memoyu mevcut kodun içine yerleştirdim. Tek değer için 

strsql = "Insert Into t_konst (kons_analiz) values ('" & NewData & "')"
olan kodumuz ilavelerle 2 değeri tabloya yazmış oldu. Tablodaki kons_no alanı zaten otomatik sayı olduğundan ona bir şey yapmak gerekmiyordu. Umarım açıklayıcı olmuştur.
Sayfalar: 1 2