birden çok ilişkisiz tabloya sahip tek formda boş veritabanı sorunu

1 2 3
03/08/2014, 15:00

berduş

iyi günler,
tek forma 3 farklı tablo bağladım,
tablolar arası ilişkilendirmeyi yapmadım hepsi bağımsız.
sorun şu; form tek tabloya sahipken, tablo BOŞ olsa bile çalışıyor ama 3 farklı tablo (ilişkilendirilmemiş ise) varken tablolardan biri bile boşsa formu çalıştırdığımda, form bom boş olarak ekrana geliyor üstünde etiket, buton vs vs hiç bir şey olmuyor. tasarım moduna geçtiğimde ise her şey yerli yerinde.
boş tabloda bu sorunu vermesini nasıl engellerim.
2. sorum ise (galiba yukardaki boş tabloda sorun çıkmasının sebebi bu) eğer tablolar boş değilse formun altında yer alan "kayıt gezinti" çubuğuna kayıt sayısı olarak: bu 3 tablodaki tüm kayıt sayılarının çarpımını gösteriyor. bu neden kaynaklanıyor ve bunu engellemenin bir yolu var mı?
03/08/2014, 15:42

mehmetdemiral

Merhaba
Formda kullandığınız tabloları bu şekilde bir araya getirirseniz, herhangi birinde eksik olduğunda formunuzdaki denetimler görüntülenmez. Bunun için formun ana denetimindeki sorgu cümleciğini silin yerine menutbl tablosunu seçin. Form üzerindeki denetimlerin bu tabloya kaydedileceklerini de (tarih,öğün ve yemek) direkt olarak seçerek ilişkilendirin. Tabloyu direk denetim kaynağı olarak belirlediğiniz için zaten tablonuzdaki alanlar seçilebilecektir. Böylece kaydedeceğiniz alanları Menutbl tablosuna aktarmış olursunuz. Diğer tablolara kayıt yapmayacaksanız (ki ben öyle gördüm) neden o alanları denetim kaynağı olan bir sorgu içerisine dahil ediyorsunuz ki?

Bu arada açılan kutuların denetimlerini id değerler üzerinden aktarın. Bu size tablolarınızın id değerleri üzerinden diğer referans tablolarına bağlanmasını sağlayacaktır. Yoksa her seferinde 12-13 karakterlik verileri tabloya yazmanız gerekir ki bu da ileride soruna neden olacak, verileriniz şişecektir. Oysa iki ya da üç haneli sayısal değerler üzerinden aynı işi yapabilirsiniz. Sadece açılan kutu denetimini tablo-sorgu yapın ve 2 sütunlu olarak belirleyip sütun boyutlarını ilk sütun 0 cm, diğeri de 2 veya 3 cm olarak oluşturun. Böylece doğru yapıda çalışmış olacaksınız. Gördüğüm kadarıyla öğün seçimi alanında değer listesi kullanmışsınız. Bunun yerine bir tablo yapın ve tabloda id ve öğünadı olarak iki alan oluşturun. İd alanı otomatik sayı ve anahtar olsun, tablonuza bu alanı kaydedin. Böylece tek sayılı alanı tabloya kaydedeceksiniz. Açılan kutu denetimlerini bu şekilde düzeltin.

Son olarak bir öneri: Alt form kullanmayı unutmayın
Kolay gelsin...
03/08/2014, 16:40

berduş

öncelikle ilginiz için çok teşekkürler;

(03/08/2014, 15:42)mehmetdemiral yazdı: Merhaba
...
Diğer tablolara kayıt yapmayacaksanız (ki ben öyle gördüm) neden o alanları denetim kaynağı olan bir sorgu içerisine dahil ediyorsunuz ki?
Aslında diğer alanlara da kayıt eklemek zorunda kalabiliriz. Çünkü farklı yurtlarda farklı yemekler kullanılabilir, menüye zamanla yeni yemekler eklenebilir yöresel olarak yemeklerdeki malzemeler farklı olabileceğinden kullanıcının malzeme miktarını değiştirmesi/yemek ekleyip çıkarması gerekebilir. Kullanıcıya esnek bir çalışma alanı sunabilmek için tabloları ilişkisiz yaptım

Alıntı:Bu arada açılan kutuların denetimlerini id değerler üzerinden aktarın. Bu size tablolarınızın id değerleri üzerinden diğer referans tablolarına bağlanmasını sağlayacaktır. Yoksa her seferinde 12-13 karakterlik verileri tabloya yazmanız gerekir ki bu da ileride soruna neden olacak, verileriniz şişecektir. Oysa iki ya da üç haneli sayısal değerler üzerinden aynı işi yapabilirsiniz. Sadece açılan kutu denetimini tablo-sorgu yapın ve 2 sütunlu olarak belirleyip sütun boyutlarını ilk sütun 0 cm, diğeri de 2 veya 3 cm olarak oluşturun. Böylece doğru yapıda çalışmış olacaksınız.
bu kısımda kafam karıştı diyebilirim, çünkü açılır kutularım doğrudan var olan tablolardan Sql komutları aracılığıyla çekiliyor, bu veritabanını şişirir mi?

Alıntı:Gördüğüm kadarıyla öğün seçimi alanında değer listesi kullanmışsınız. Bunun yerine bir tablo yapın ve tabloda id ve öğünadı olarak iki alan oluşturun. İd alanı otomatik sayı ve anahtar olsun, tablonuza bu alanı kaydedin. Böylece tek sayılı alanı tabloya kaydedeceksiniz. Açılan kutu denetimlerini bu şekilde düzeltin.
aslında benim içime sinmese de "değer listesi" kullanmanın sorun çıkaracağını düşünmemiştim, amacım mümkün olduğunca az veri tabanı kullanmaktı.
"değer listesi" sorun çıkartır mı yada ne tür sorunlara sebep olur?

Alıntı:Son olarak bir öneri: Alt form kullanmayı unutmayın Kolay gelsin...
öneriniz için teşekkürler yardımlarınız sayesinde artık alt formlarla çalışmayı az çok öğrendim (iddialı değilim ama temel ilkesini kavradım sayılır), zaten bu nedenle farklı bir yol denemek istedim )

yardımlarınız için tekrar çok teşekkür ederim.
03/08/2014, 17:30

berduş

(03/08/2014, 15:42)mehmetdemiral yazdı: Merhaba
...
Bunun için formun ana denetimindeki sorgu cümleciğini silin yerine menutbl tablosunu seçin
Teşekkürler Mehmet Bey dediğiniz gibi diğer tüm tabloları çıkardım,
kayıt eklemeyi Sql komutuyla yapınca sorunsuz çalıştı, en azından şimdilik ))
bazan accesste önce çalışan sonra birden hata vermeye başlıyor bende )
03/08/2014, 18:29

mehmetdemiral

Kayıt eklemeyi Sql komutuyla yapmak diye bir şeyden bahsetmedim ama... Neyi nasıl anladığınızı anlayamıyorum. Her neyse, ben doğru bildiğim yöntemi size öğretmeye çalışıyorum. Siz ister öğrenin ister kendi yönteminizde devam edin. Her yiğidin yoğurt yiyişi farklıdır ama bu arada yoğurtlar da farklı olabilir değil mi? Tatlı yoğurt var, ekşi yoğurt var. Ben tatlı yoğurdu kaşık kaşık zevkle yerken, ekşi yoğurdu tuz ekleyip ve biraz sulandırıp yemeyi severim. Nasıl olacak şimdi?

Bakın, benim söylediklerimle kendi fikirlerinizi çarpıştırmak yerine deneyin. Değer listesi olarak yazdığınız birimler tabloya aynen kaydedilirken, bir tabloya yazdığınız 2 elemanlı (yani adı ve id değeri) nesnelerin, otomatik sayıdan oluşan id değerlerinin tabloya kaydedilmesi arasındaki farkı görün. Satır değeri mesela "Acem tatlısı" olduğunda en basitinden, çok da uzun bir isim olmamasına rağmen 12 bitlik alan kapladığı görülüyor. Oysa bu değer bir tabloda olsaydı ve bu değerin sayısal bir id tanımı daha olsaydı. Bu da 2 basamaklı bir sayı olsaydı. Siz bunu 100 kez kaydettiğinizde 100*12=1200 bit olacaktır. Oysa sayısal değeri kaydettiğinizde bu değer 200 bit olacaktır. Bunun daha uzun bir isimde ve 5 farklı nesnede olduğunu, kaydın binlere ulaştığını düşünürseniz ne kadar haklı olduğumu göreceksiniz. Bunun yanında veritabanınızın kıvraklığı, arama işlemlerinde 12 hane yerine 2 hanenin aranmasında kazanılacak hız vs vs.... Anlatsam kitap olur. Siz hala itiraz edecekseniz bol bitli, baytlı günler diliyorum size ))
03/08/2014, 18:39

mehmetdemiral

İlave olarak güncelleme kolaylığı açısında tüm bu tablo değerlerinin programcıya gerek kalmadan kullanıcı tarafından düzenlenebilmesi de "kullanıcı dostu arayüz" ödülü almaktadır
1 2 3