ibquery ile cift tabloya id yazdırma

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
kirve
Üye
Mesajlar: 64
Kayıt: 03 Nis 2008 12:40

ibquery ile cift tabloya id yazdırma

Mesaj gönderen kirve »

merhaba arkadaslar.. bu konu daha once acildimi bilmiyorum biraz inceledim ama formda goremedim..eger acilmissa kusura bakamyin... soruma gecmek istiyorum
simdi ben firebird ve ibexpert kullanarak 2 tablo olusturdum. 1. tablom da isimler 2. tablomda telefon nuramları kayıt edilecek
TBLKIMLIK TBLTELEFON
-id -id
-ad -kimlikid
-soyad -telno

IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('INSERT INTO TBLKIMLIK(TCKIMLIK,AD,SOYAD) values ('''+edit1.Text+''','''+edit2.Text+''','''+edit3.Text+''')');
IBQuery1.Open;

IBQuery2.Close;
IBQuery2.SQL.Clear;
IBQuery2.SQL.Add('INSERT INTO TBLTELEFON(TELNO) values ('''+edit4.Text+''')');
IBQuery2.Open;

iki tabloya bilgileri girdim bu sekilde ama ikinci tablonun KIMLIKID alanına 1.tablodaki idi yazdıramadım bunu dataset kullanırken datasetin before postuna ibdataset2.fieldbyname('KIMLIKID').value:=ibdataset1.fieldbyname('ID').value; yazıyordum v yapıyordum ama query ile bunu gerceklestiremedim..
yardımlarınızı bekliyorum
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: ibquery ile cift tabloya id yazdırma

Mesaj gönderen akdatilla »

Bazı programcıların kendilerini ID'no alanı kullanmaya mecburmuş gibi hissetmelerini anlamıyorum.
Veri tabanı sistemlerinde her tablo için en az bir tane anahtar kelime bulunması tavsiye olunur.
Ben tablo oluştururken tekrar edilmeyecek, sıralı olması avantajlı olacak alanları key olarak belirlerim.

Bence sizin TBLKIMLIK tablonuzda TCKIMLIK alanı key olarak ayarlanmalıdır.
Buna göre TBLTELEFON tablonuzu TBLKIMLIK tablonuza bağlarken de TCKIMLIK
alanına göre bağlantı kurmanız gerekir. TBLTELEFON tablonuzun alanları TCNO,TELNO olabilir.
Bir kişinin birden fazla telefon numarası olabileceğine göre bu iki alanıda key olarak ayarlamanız gerekir.
buna göre telefon numarası tablosuna şöyle kayıt yapılabilir:

Kod: Tümünü seç

IBQuery2.Close;
IBQuery2.SQL.Clear;
IBQuery2.SQL.Add('INSERT INTO TBLTELEFON(TCNO,TELNO) values ('''+edit1.Text+''','''+edit4.Text+''')');
IBQuery2.Open;
kirve
Üye
Mesajlar: 64
Kayıt: 03 Nis 2008 12:40

Re: ibquery ile cift tabloya id yazdırma

Mesaj gönderen kirve »

ustad harika bi cevap verdiginiz...
hemen bunu denemeye baslayim..
delphiye yeni basladim kademe kademe ilerletiyorum..
tesekkurler
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Re: ibquery ile cift tabloya id yazdırma

Mesaj gönderen rsimsek »

Olayın delphi le alakası yok. Tamamen veri tabanı mantığı ile alakalı. Belki forumda eşsizliği sağlaması açısından anahtar (ID) alandan çok bahsedildiğinden bu şekilde düşünmüş olabilirsiniz. Halbuki tekrarlamayan alanların tek (özellikle istenmiyorsa) tabloda olması gerekir. Yoksa telefon numarasına ayrı bir tablo, isme ayrı bir tablo, adrese ayrı bir tablo kullanışlı olmaz :shock:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: ibquery ile cift tabloya id yazdırma

Mesaj gönderen akdatilla »

rsimsek yazdı:Olayın delphi le alakası yok. Tamamen veri tabanı mantığı ile alakalı. Belki forumda eşsizliği sağlaması açısından anahtar (ID) alandan çok bahsedildiğinden bu şekilde düşünmüş olabilirsiniz. Halbuki tekrarlamayan alanların tek (özellikle istenmiyorsa) tabloda olması gerekir. Yoksa telefon numarasına ayrı bir tablo, isme ayrı bir tablo, adrese ayrı bir tablo kullanışlı olmaz :shock:
Haklısınız hocam, ama sanki kafama bir taş atılmış gibi hissettim.
Adamın birden fazla telefonu olabilir diye ayrı bir tablo tutmanın anlamı yok tabi.
Birkaç tane telefon numarası alanı açmak veya telno alanının boyutunu birkaç telefonun yazılabileceği şekliyle belirtmek daha uygundur.
Ancak şöyle bir durum olabilir. TBLKIMLIK tablosunda kişinin temel bilgileri bulundurulur. TBLKISIDETAY isimli ikinci bir tablo açılıp,
kişinin detaylı olarak bilgileri girilebilir. Bunun şöyle bir avantajı olabilir, kayıt aramak için kişinin temel bilgileri yeterli olacaktır ve sadece
TBLKIMLIK tablosundan select sorgusu yapılır. Kişi kartı açılırken select sorgusu tblkimlik ile detay tablosu birleştirilerek yapılır.
Buda sadece performans artışı sağlayabilir (detay tablodaki alan sayısı fazla olması durumunda).
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Re: ibquery ile cift tabloya id yazdırma

Mesaj gönderen rsimsek »

Sanırım detay tablo olayı tam anlaşılamadı! Çünkü kişiye ait bilgiler çok da olsa genelde tek tabloda tutulur özel durumlar dışında bölünmez. Detaydaki amacı şöyle anlatayım: Aynı proje üzerinde düşünün ki kişilerin telefon görüşmelerinin kaydını seri porttan gönderen bir santralınız var. O santral sürekli her numaraya ait görüşmeleri dönem sonunda faturalandırmak için bir tabloya yazacaksa bu tablo detay tablosudur. Bu yapıda ilk tablo da ana/master tablo olmaktadır.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla