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.
yeni girilen verinin mevcut kayıtlar içinde kontrolü
Sayın mehmetb84, Veri Açılan Kutuda Yoksa Eklensin 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.
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.
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
İnadına, ille de Accesstr.net...
(19/06/2016, 13:14)mehmetdemiral yazdı: İstediğiniz örnek biçimi aşağıya eklendi. Güle güle kullanınTam 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 ) ) Memo değişkenine şu satırla o anda it.kalite açılan kutusundan şu kodlarla veri gönderdim:
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.
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 ) ) 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)
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.
İnadına, ille de Accesstr.net...
Konuyu Okuyanlar: 1 Ziyaretçi