master / detail tablo

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
sTb
Üye
Mesajlar: 59
Kayıt: 06 Nis 2005 11:13
Konum: Eskişehir

master / detail tablo

Mesaj gönderen sTb »

Kolay gelsin..

Sitedeki genel tavsiye üzerine firebird kullanmaya başladım (daha 2 gün oluyor)


viewtopic.php?t=9830

burada master ve detail tablo için örnek verilmiş ama yine olmadı..

Okul tablosundaki ogrencino ile ogrenci tablosundaki ogrencino ları birbirine baglamam gerek ( ogrenci master okul detail olarak )

Şimdiden herkeze teşekkürler...

Saygılarımla
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
olmayan kısmı ne :?:
hata mı verdi :?:
yanlış kayıtları mı getirdi :?:
yaptığınız işlemleri ve sonucuda yazarsanız yardımcı olmak isteyen arkadaşların işi kolaylaşacaktır.
Biraz daha detay lütfen .:wink:
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
Terminator
Üye
Mesajlar: 313
Kayıt: 13 Ara 2005 01:45
Konum: İzmir, ama Aydın Efesi!

Mesaj gönderen Terminator »

Daha önce hangi ciddi RDBMS ile master detaili yapabildin de
aynısını FB ile yapamıyorsun?
bir sorunun var evet var, ama sorunun var. sorunun nedir bunu sen
bile bilmek ya da bilinmesini itemiyor olmalısın ki ne yaptığını göstermemişsin. her zamanki gibi arzular yazılmış.
Firebird Foundation Member #208
http://www.firebirdsql.org
Kullanıcı avatarı
sTb
Üye
Mesajlar: 59
Kayıt: 06 Nis 2005 11:13
Konum: Eskişehir

Mesaj gönderen sTb »

iki tabloyu birbirine bağlayabildim..

kayıt girişinde problem oluyor..
program ile veri girişi sırasında problem veriyor.. lakin benim anladığım kadarıyla okul tablosunda (detail) auto olan kısımda ( no die bi field var ) otomatik olarak yazmıyor.. bunun sebebi baglantıdan mı kaynaklanıyor yada eksik bi ayar mı yapıyorum.. tablo daki sadece no die bolüm auto diğerleri dbedit ile bağlı ve veri girişi var. auto olan kısım için otomatik veri için ayrıca birşey yapmam mı lazım ?

@terminator daha önce paradox kullanıyordum ve orada yapabiliyordum.. sorunumu düzgün ifade edememiş olmam sorunumun bilinmesini istemediğim yada sorunum olduğunu bilmediğim anlamına gelmez. ayrıca sorunumun bilinmesi istemesem kalkıp foruma yazmam anlaşılan tek sorunu olan ben değilim

Saygılarımla
Kullanıcı avatarı
spoke25
Üye
Mesajlar: 434
Kayıt: 16 May 2005 04:06
Konum: Bolu

Mesaj gönderen spoke25 »

Ben İbdataset in mastersource olayından yapıyorum Bunuhicte problem olmadı. Bugune kadar. master detail olayını denemden Once tablona kayıt girmeyi dene ayrı ayrı Olarak Bunu Bircok sbebi olabilir mesela en basitinden birtanesi sen Auto inc Bir alnın varsa fileds editorden bunun reqest ozelligini false yapman lazım. Am sen once Ayrı ayrı bir kayıt gir Tablolarıan onlarda sorun yasamıyorsan tamam.. Birde hata mesajını yazarsan burada firebirde gibi verei tabanı yazabilecek arkadaslar var mutlaka yardımcı olurlar. Forumun Ofline halini indir cok faydası olur. Kolay gelsin
Başlayan Herşey Birgün Bitmek Zorundadır.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

tablonda autoinc alanının triger ve generator işlemleri yapılmış ise sorun olmaması lazım. aklıma gelen bir yer var ibdatasetin ayarlarında generator field ayarını yapmamış olabilirsin. eğer bu ayar yapmamış ve autoinc alanı ibdataset e tanıtmamışsan kayıt yapmada sorun yaşayacak ve kayıt yapamayacaksın

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
Terminator
Üye
Mesajlar: 313
Kayıt: 13 Ara 2005 01:45
Konum: İzmir, ama Aydın Efesi!

Mesaj gönderen Terminator »

sTb yazdı:iki tabloyu birbirine bağlayabildim..

kayıt girişinde problem oluyor..
program ile veri girişi sırasında problem veriyor.. lakin benim anladığım kadarıyla okul tablosunda (detail) auto olan kısımda ( no die bi field var ) otomatik olarak yazmıyor.. bunun sebebi baglantıdan mı kaynaklanıyor yada eksik bi ayar mı yapıyorum.. tablo daki sadece no die bolüm auto diğerleri dbedit ile bağlı ve veri girişi var. auto olan kısım için otomatik veri için ayrıca birşey yapmam mı lazım ?

@terminator daha önce paradox kullanıyordum ve orada yapabiliyordum.. sorunumu düzgün ifade edememiş olmam sorunumun bilinmesini istemediğim yada sorunum olduğunu bilmediğim anlamına gelmez. ayrıca sorunumun bilinmesi istemesem kalkıp foruma yazmam anlaşılan tek sorunu olan ben değilim

Saygılarımla
stb,
burada tablolarını ve ilgili objeleri vermezsen sorununu anlayamayız.
herkesin önemli işi gücü. kimse kimsenin ne demek istediğini tahmin edebilecek zaman bulmak zorunda değil. sen veya herhangi biri, sorununu açık ve net bir şekilde, detaylı açıklamaz ve ilgili objelerini göstermezse, ben şahsen o yardım mesajını görmezden gelirim. Bizler para karşılığı müşteri memnuniyeti vaadeden insanlar değiliz, gönüllü yardımlaşan insanlarız ve birbirimize zorluk çıkarmamız deadlock yaratır.

Sorununa gelince, ciddi RDBMS ler sequence/generator objeleri kullanır otomatik numara takibi için. ve bu numaralar tablolardan bağımsız sayı üreteçleridir.
sen tablonda otomatik ID sahası kullanmışsın, bunu tablo bilmez, ilgilenmez bile. içine ne koyarsan ve kurala uygunsa kabul eder.
bu sahalara otomatik numara vermenin birçok yolu var,
1. generatorden numarayı select edip post etmeden önce de ilgili sahaya koyabilirsin bu numarayı. böylece component de kaydın yerini kaybetmemiş olur.
2. generator kullanması gereken sahaların varsa, componentlerin çoğu bunu destekliyor ve, bu işlemi senin için posttan önce otomatik yapıyor.
3. generator numarasını before insert triggerinda alıp ilgili sahaya koyabilirsin.
if(NEW.ID IS NULL OR NEW.ID=0) NEW.ID=GEN_ID(OKUL_ID_GEN,1); şeklinde. ama bu kullanım tarzı browse giriş moduna pek uygun değil, form ekran ve embedded girişe daha uygun
vs..
generatorler, external tablolar transactiondan muaftır, dikkatli kullanılmalıdır, oynanmamalıdır.

AUTOINCREMANTAL sahaları otomatik yapan ve yaşatan sistemler, küçük, tek kullanıcılı ilkel sistemlerdir.
Firebird Foundation Member #208
http://www.firebirdsql.org
Kullanıcı avatarı
sTb
Üye
Mesajlar: 59
Kayıt: 06 Nis 2005 11:13
Konum: Eskişehir

Mesaj gönderen sTb »

açıklamalarınız için teşekkürler
" Her bildiğin doğru olsun. Ama her doğruyu her yerde söylemek doğru değildir. "
Kullanıcı avatarı
fanibiri
Üye
Mesajlar: 21
Kayıt: 05 Nis 2005 08:55
Konum: Antalya
İletişim:

anlamadım

Mesaj gönderen fanibiri »

Beni mazur görün fakat
sitedeki açıklamar çok hoş mesela accessdeki gibi otomatik id için ibSql de Generator atıyoruz...
Fakat Table da otomatik sayı yapmak için koddan başka çaremiz yokmu?
before ve after uptade e +1 eklemekten başka çaremiz ?
Gel gelelim master detail ilişkisi kurmak istiyoruz Forumda sadece IB table olarak master detail ilişkisi gösterilmiş diye gördüm yanlışım varsa affola.
Fakat IBdataset de SQL olarak kayıt girmek için o ilişkiyi nasıl kuracağız anlamadım.
malum masteri dbeditlere detailide dbgrid e aktarınca SQL de bilgisizliğimden dolayı bir master detail ilişkisi kuramadım.
Kendimce fikrimi söylüyorum adam akıllı fire Bird kullanmak istediğime karar verdim databasede yaptım
IBexpert te gerekli işlemlerde tamam Delphi ile fdb arasında ilişkiyede kurdum bundan sonra ki kısımında ikilemdeyim IBdataset ile SQL mi kullanmak daha iyi sonuç verir yoksa Table mı ? iyide Tableda generator olayını nasıl yapacağım onu anlayamadım.. birileri acemiler için acemi bir dil ile açıklarsa çok sevinirim çünkü bazı bilgili ustadlar malum alışkanlıktan dolayı öyle bir anlatıyorlar ki öyle terimler kullanıyorlar ki anlayamıyorum
Yukarıda beyefendi generator yap demis o zaman tamam sorun yok generator ekleyince ibdatasete id de sorun olmuyor fakat bu seferde master detail ilişkisini sql ile nasıl kuracağız ?
amaç sadece bilgileri çekmekse o ilişkiyi kurabiliyorum ama bilgi girişi için
ne yapılacak
master dbeditlere bağlı müşteri bilgileri masterda tabo = musteriler
detailde işlemler var tablo = icraat
Dbeditlere yani master a müşteri bilgilerini girdim şimdi detaile (DBgride)
müşterilerin vermiş oldukları bilgisayarların şikayetlerini ve yapılanları girmem gerek bir müşteri 1den fazla bilgisayar getirebilir o zaman sürekli detaile aynı müşteri için birden fazla işlem girmem gerekir bunu SQL ile nasıl ilişki kurarak yapabilirim.
Hatam oldu ise Affola şimdiden Teşekkürler ederim.
Bilenler Lütfen Bilmeyenlere Anlatsın....
Kullanıcı avatarı
fanibiri
Üye
Mesajlar: 21
Kayıt: 05 Nis 2005 08:55
Konum: Antalya
İletişim:

Sanırım Oldu

Mesaj gönderen fanibiri »

Sanırım oldu 4-5 kayıt yaptım detaile sorunsuz gidiyor
ilk başta PK valition hatası verdi
ibExpertten detaildeki ikişliki alanı yani muskod u PK yaptım
o zaman düzeldi
masterdaki generator u on post yaptım detaildekini ise on record deyince
daha iyi oldu.
IBDataset1
IBDateset2

IBDateset2 nin master data source kısmını Datada source 1 yaptım
SQL e de Select * From ICRAAT Where ICRAAT.MUSKOD = : MUSKOD
dedim oldu
umarım sorunsuz bir şekilde çalışır
Dediğiniz gibi Aramak lazım ondan sonrada saksıyı biraz çalıştırmak lazım
Çok teşekkür ederim yer işgal ettim Sağ olun
Bilenler Lütfen Bilmeyenlere Anlatsın....
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Re: anlamadım

Mesaj gönderen rsimsek »

fanibiri yazdı:Beni mazur görün fakat
sitedeki açıklamar çok hoş mesela accessdeki gibi otomatik id için ibSql de Generator atıyoruz...
Fakat Table da otomatik sayı yapmak için koddan başka çaremiz yokmu?
before ve after uptade e +1 eklemekten başka çaremiz ?
IBX bileşenlerini kullanıyorsanız VT tarafta oluşturacağınız Generator u IBDataSet in GeneratorField ına bağlamanız, artımını vermeniz, sonra her yeni kayıttı bir artmasını seçmeniz yeterli. Kendisi her yeni kayıtta generator u otomatik artırıyor ve ilgili alana atamasını yapıyor.

viewtopic.php?t=4195


Sorunun diğer tarafını kusura bakmazsanız okumadım. Çünkü master-detail olayı burada çok defa konuşuldu. master detail kriterleri ile arama yaparsanız ilgili mesajlara ulaşabilirsiniz :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla