Onay Kutu kodu nasıl olmalıdır?

1 2 3 4 5 6 7 8 9
25/05/2009, 13:50

assenucler

Değer dostlar ve hocalarım;

Herkese merhabalar ve iyi günler...

Ekteki dosyanın Oturanlar_Frm formu’nda “Tümünü Seç” komut düğmesine tıkladığımda YonetimGelirleri alt formundaki “odemede geciktimi” alanının hepsi (850 kayıt) seçili hale gelmektedir.

“Seçimi Kaldır” komut düğmesine tıkladığımda da, bu kez alt formdaki tüm verilerin (850 kayıt) seçimi kalkmaktadır.

Oysa ben, bu seçimin daire kapino ve OturanAdi alanına göre yapılmasını arzu ediyorum. Böylece sadece o dairede oturana ait (20) kayıt seçilecek, ya da seçimi kalkacak..

İlginiz ve yanıtınız için öncelikle teşekkürler.

Sevgi ve saygılar.
25/05/2009, 14:58

mesudi

Sevgili dostum, programın tablo yapısında ciddi sorunlar var. İlişkiler ihtiyaca cevap verecek gibi değil ya da ben senin kurguladığın mantığı anlayamadım. Örneğin Oturanlar tablosu ile YönetimGelirleri tabloları arasındaki ilişki için Adı alanını kullanmışsın. Ayrıca her iki tablodada KapiNo alanı var. Bunlar gereksiz. Doğrusu; ana tobloda bir ID alanı olmalı ve bu alan Pimary Key (Birincil Anahtar) özelliğine sahip olmalı. İlişkinin çoklu tarafı diye adlandırdığımız ikinci tabloda ise bu ID değerle aynı özelliklerde ama Primary Key olmayan bir alan oluşturulmalı ve ilişki bu iki alan arasında bire çok şeklinde oluşturulmalıdır. Bence bu sorunları çözmeden, form bazlı sorunlarla çok fazla ilgilenme. Ayrıca sorunuzun cevabı oldukça basit. Tek yapmanız gereken sözü geçen düğmenin altındaki Sql kodlarına bir Where cümleciği ile her iki formadi KapiNo alanlarını kriter olarak kullanır, sorunu çözersiniz. Ama dediğim gibi her iki tabloda kapino alanı olması veri tekrarı dediğimiz gereksiz ve kontrol edilemez sorunlara yol açar ve veriler arası tutarlılığı riske atar. İyi çalışmalar.
25/05/2009, 15:57

okileturc

Aslında kod aşağıdaki ama nedense sizin tablolar
biraz karışık geldi bana da
Kod:
DoCmd.RunSQL "UPDATE YonetimGelirleri SET YonetimGelirleri.OdemesiGeciktimi = -1 WHERE (((YonetimGelirleri.OturanAdi)=[Forms]![oturanlar_frm]![Adi]) AND ((YonetimGelirleri.kapino)=[Forms]![oturanlar_frm]![KapıDaireNo]));"
Eşleştiremiyor gibi
Siz de bir denermisiniz
Kolay gelsin
Arkadaşım Yonetim giderleri tablonuzda
Oturan adi alanına "Sayı" vermişsiniz
ama içi "Metin" Oysa diğer tabloda "Adi" metin
ve bir ilşki kurmuşsunuz

İlişkiyi kaldırıp iki tarafı da metin yapın
Kod bu yüzden çalışmıyor

Kolay gelsin
25/05/2009, 16:15

assenucler

Sayın mesudi ve Sayın Okileturc;

Öncelikle ilginiz, doyurucu yanıtlarınız için teşekkürlerimi lütfen kabul edin..

Sevgi ve saygılar.
25/05/2009, 16:25

okileturc

Bir çok kaydınız var ve işiniz biraz zor ben ce şöyle yapın
Yönetim giderleri tablonuzdaki İsimleri gruplayın ve grupladğınız
sorguyu " tablo yapma sorgusuna" çevirerek yeni bir tablo
oluşturun böylece yeni oturanlar tablosu ile Yönetim giderleri
tablosundaki isimler arasında kesinlikle bi eşleşmemezlik olmaz.
Bu yeni yaratacğınız tabloda isimi birincil anahtar yapıp diğer
tabloyla 1 e çok ilişki kurun. Formları yeniden düzenlerseniz
koda tekrar bakarız.

Bu yukarıda saydıklarım konusunda tereddüte düşerseniz ben yapıp
yollayabilirim

Kolay gelsin

__________________

Mesudi, özür dilerim cevabınızı görmemişim
25/05/2009, 16:48

mesudi

Tablo tasarımınnın doğru şekilde yapılması konusunda ısrarcıyım, diğer türlü uygulamanız daha sonra tekrar başka açılardan aksayacaktır. Tabiki form veya rapor bazlı sorunlar bir şekilde çözülecektir. Okileturc hocamın anlattığı şekilde. Ama tablo tasarımı, tablolar arası ilişkilerin doğru organize edilmesi bir uygulamanın kalbidir. Kolay gelsin.
1 2 3 4 5 6 7 8 9