IBDataset ile Master Detail ilişkisi
IBDataset ile Master Detail ilişkisi
Tekrar Merhaba
Acilen Bir sorunu çözmem gerekiyor.
1- SicilBilgileri tablosu nu içeren IBDataset Ana Form üzerinde bulunuyor
2- Bu sicilBilgilerine ait nufus bilgilerini ise başka bir formdan getiriyorum
bu durumda iki IBdataset arasındaki ilişkiyi personelid alanı ile kurduğumda
Nufus bilgisini içeren IBDataseti nasıl yazmalıyım
arkadaşlar bugün sizi meşgul ettim ama bu sorunuma yardımcı olursanız çok sevinirim
şimdiden çok teşekkür ederim
Acilen Bir sorunu çözmem gerekiyor.
1- SicilBilgileri tablosu nu içeren IBDataset Ana Form üzerinde bulunuyor
2- Bu sicilBilgilerine ait nufus bilgilerini ise başka bir formdan getiriyorum
bu durumda iki IBdataset arasındaki ilişkiyi personelid alanı ile kurduğumda
Nufus bilgisini içeren IBDataseti nasıl yazmalıyım
arkadaşlar bugün sizi meşgul ettim ama bu sorunuma yardımcı olursanız çok sevinirim
şimdiden çok teşekkür ederim
Merhabalar,
Öncelikle database ile ilgili componentlerini (IBdatabase, IbDataset vs) koymak için datamodule kullanmanız işleri kolaylaştırır.
Eğer interbase/firebird kullanıyorsanız. Aşagıda yazdıklarım işinize yarar.
masterTable
MasterIdAlan-->integer, Pk (primary) not null
DigerAlanlar
DetailTable
DetailId-->ınteger, Pk not Null (bu alan şart değil)
MasrerIdAlan-->integer Fk (foreign Key) not Null (bu alanla Detail table master table a bağlanacak)
Detail Table a aşağıdaki kodu ekle.
Buna benzer iki table oluştur ve diğer alanları ekle.
IbDetail dataset in select ine
yazın.
IbDetail dataset in after insert ine
yazın.
Son olarak
IbDetailTable---->DataSource:=MasterTableDataSource
özelliğini ayarlayın.
Master Detail ilişkiniz hazır durumdadır.
Kolay gelsin
Öncelikle database ile ilgili componentlerini (IBdatabase, IbDataset vs) koymak için datamodule kullanmanız işleri kolaylaştırır.
Eğer interbase/firebird kullanıyorsanız. Aşagıda yazdıklarım işinize yarar.
masterTable
MasterIdAlan-->integer, Pk (primary) not null
DigerAlanlar
DetailTable
DetailId-->ınteger, Pk not Null (bu alan şart değil)
MasrerIdAlan-->integer Fk (foreign Key) not Null (bu alanla Detail table master table a bağlanacak)
Detail Table a aşağıdaki kodu ekle.
Kod: Tümünü seç
ALTER TABLE detailTable ADD CONSTRAINT FK_DetailTable FOREIGN KEY (MasterIdAlan) REFERENCES MasterTable (MasterIdAlan);
IbDetail dataset in select ine
Kod: Tümünü seç
select * from DetailTable where masterIdAlan=:MasterIdAlan
IbDetail dataset in after insert ine
Kod: Tümünü seç
IBDetailMasterIdAlan.AsInteger:=IBMasterTableMasterIdAlan.AsInteger;
Son olarak
IbDetailTable---->DataSource:=MasterTableDataSource
özelliğini ayarlayın.
Master Detail ilişkiniz hazır durumdadır.
Kolay gelsin
saygılar
IB detail' in dataset after post olayına aşağıdaki atamayı yaptım ama;
söylenen kod:
IBDetailMasterIdAlan.AsInteger:=IBMasterTableMasterIdAlan.AsInteger;
bendeki kod: COCUK.CAUTOINC.AsInteger:=PERSONEL.AUTOINC.AsInteger;
hata:
undeclared ıdendifier COCUK
missing operator semicolon...........
diyor....
söylenen kod:
IBDetailMasterIdAlan.AsInteger:=IBMasterTableMasterIdAlan.AsInteger;
bendeki kod: COCUK.CAUTOINC.AsInteger:=PERSONEL.AUTOINC.AsInteger;
hata:
undeclared ıdendifier COCUK
missing operator semicolon...........
diyor....
Delphi konusunda daha çok database ile ilgileniyorum...
Buradakiergunalp yazdı:bendeki kod: COCUK.CAUTOINC.AsInteger:=PERSONEL.AUTOINC.AsInteger;
hata:
undeclared ıdendifier COCUK
missing operator semicolon...........
diyor....
Kod: Tümünü seç
CocukCAUTOINC.AsInteger:=PersonelAUTOINC.AsInteger;
Kod: Tümünü seç
Cocuk.FieldByName('CAUTOINC').AsInteger:=Personel.FieldByName('AUTOINC').AsInteger;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Bu hata mesajı COCUK diye bir tanımlama / tablo vs. aynı form üzerinde olmadığını söyluyor.ergunalp yazdı:yine hata veriyor... "undeclared idendifier cocuk"
IBDataset datamodule içinde ve select ile tablodan bilgiler alınıyor(standart yapı)...
Ama hata vermesi tuhaf.....
çözümsüzlüğe kilitlenip kalmışsan klasik yöntemi dene, arabadan in ve tekrar bin


Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Bir kez arabadan inip tekrar binmiştim ama yine öyle yapayım bakalım ne olacak... İşte bu nedenlerle çok fazla in bin yapmamak için foruma bir öneri sumuştum(ideal olması gereken basit örnek bir proje, hatta seminervari veya makale gibi...Sizde bir o önerimi okursanız memnun olurum aslında, çünkü üyeler için oldukça faydalı olabilir....
Delphi konusunda daha çok database ile ilgileniyorum...
Ergün bey haklısınız, belki yapılacak çok şey var ancak şunu da göz önünde bulundurmak lazım. Seminerler şu an tüm vaktimizi alıyor. Sadece pazar günü 3 saat sizi meşgul etmiyor. Hazırlıklar, düzenlemeler, dosyaların hazırlanması, upload edilmesi vs. vs.ergunalp yazdı:İşte bu nedenlerle çok fazla in bin yapmamak için foruma bir öneri sumuştum(ideal olması gereken basit örnek bir proje, hatta seminervari veya makale gibi...
Biz de bir işte çalışıyoruz. Foruma fazla girmemiz üyeleri yanıltmasın! Ben kendi adıma en az bir 6 ay seminer olayına sıcak bakmıyorum. Genel kanı da öyle.
Bence mevcut seminerlerden ve forumdan işinizi halletmelisiniz.
Kolay gelsin.
S.A.
Bir ihtimal daha kodları kullandığın procedure in yapısında olabilir.
Yani procedure
eğer ilki gibiyse islemyapdan önce formun (yada datamodule ün) adını yazmayı dene. tabi yukardada tanımlaman gerekecek.
yadaifadesini
gibisinen bir değiştirip bir dene
Kolay gelsin.
Bir ihtimal daha kodları kullandığın procedure in yapısında olabilir.
Yani procedure
Kod: Tümünü seç
Procedure islmeyap();
begin
end;
//yoksa
Procedure Datamodule1.islemyap();
begin
end;
//gibimi
yada
Kod: Tümünü seç
CocukCAUTOINC.AsInteger:=PersonelAUTOINC.AsInteger
Kod: Tümünü seç
datamodule1.CocukCAUTOINC.AsInteger:=PersonelAUTOINC.AsInteger
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Tüm arkadaşlara teşekkür....
Aslangeri' nin önerisi ile kafamı tam sarmasada halledebildim(bende bir eksikilik var gibi)...
Peki bu şekilde olması normalmi???
Olması gereken kod(ama hata veren):
Cocuk.FieldByName('CAUTOINC').AsInteger:=Personel.FieldByName('AUTOINC').AsInteger;
yukarıdaki şekilde neden table'ı tanımadı(tüm örneklerdede yukardaki şekil kullanılmış ama)???
Çalışan Kod (ama kafamı sarmayan):
dm1.IBDataSet2.FieldByName('CKODU').asstring:=dm1.IBDataSet1.FieldByName('KODU').asstring;
Aslangeri' nin önerisi ile kafamı tam sarmasada halledebildim(bende bir eksikilik var gibi)...
Peki bu şekilde olması normalmi???
Olması gereken kod(ama hata veren):
Cocuk.FieldByName('CAUTOINC').AsInteger:=Personel.FieldByName('AUTOINC').AsInteger;
yukarıdaki şekilde neden table'ı tanımadı(tüm örneklerdede yukardaki şekil kullanılmış ama)???
Çalışan Kod (ama kafamı sarmayan):
dm1.IBDataSet2.FieldByName('CKODU').asstring:=dm1.IBDataSet1.FieldByName('KODU').asstring;
Delphi konusunda daha çok database ile ilgileniyorum...