table veya query ile ilgili

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
cebeser
Üye
Mesajlar: 34
Kayıt: 17 Mar 2004 02:38
Konum: istanbul

table veya query ile ilgili

Mesaj gönderen cebeser »

table componentini kullanırken,
önce databasename
sonra da tablename
özelliklerini atadıktan sonra;
table componenti üzerine tıklayarak "fields editor"e giriyoruz. ve oradan "field"lar ekliyoruz.

aynı şeyin benzeri query comp. için de geçerli.

peki bu işi program içerisinde kodla nasıl yapabilirim.

umarım sorum anlaşılmıştır ve saçma değildir.
CE
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

siz table nin database, datasource bağlantılarını yapıp, query için de sql cümleciğini yazarak bağlantıları yapıp open yaptığınız zaman zaten alanlar eklenmiş oluyor ancak kullanımda fark var.
siz manuel olarak alanları eklediğinizde bunu TableAlan_adi.value yada TableAlan_Adi.text olarak kullanırsınız diğer türlü Table.Fieldbyname('Alan_adi').asstring yada Table.Fieldbyname('Alan_Adi').asfloat gibi kullanabilirsiniz.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Kod: Tümünü seç

Table1.DataBaseName:='xyx';
Table1.TableName:='tbl.db';
Table1.Open;
Query1.DataBaseName:='xyx';
Query1.SQL.Text:='select * from tbl';
Query1.Open;
Artık tablo veya sorgu kullanıma hazır. Burada bahsettiğin alanlar eğer fields editor ile alan eklenmemişse dinamik olarak oluşurlar. Bunları da

Kod: Tümünü seç

for i:=0 to Table1.Fields.Count-1 do 
 ShowMessage(Table1.Fields[i].FieldName);
koduyla kontrol edebilirsin. Eğer alanlara ismi ile erişmek istersen 2 fonksiyon kullanabilirsin.
-S:=Table1Alan.AsString; şeklini fields editor doluyken kullanabiliyorduk.

-S:=Table1.FieldByName('Alan').AsString; veya
-S:=Table1.FindField('Alan').AsString;
şeklinde kullanılabilir. Aralarında küçük bir fark vardır. O da yazılan alan ismi hatalı ve tabloda yoksa ortaya çıkar. FieldByName'de çıkacak hata yazılan alan tabloda bulunamadı hatasıdır, FindField'da ise bir bellek erişim hatası olan Access Violation hatası çıkar. Bir de alanın kaçıncı sırada olduğunu biliyorsak numarasından da erşilebilinir. Mesela Alan ilk sırada ise aşağıdaki kod da aynı işlevi görür.
-S:=Table1.Fields[0].AsString;

Kolay gelsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Mesaj gönderen csunguray »

Cebeser'e :Biz bu bahsettiğiniz field yükleme işlemini niye yapıyoruz? Kod yazarken fieldlara ulaşmada kolaylık sağlaması için. Yani her field için bir TField componenti oluşturup kod yazarken bu componentleri kullanıyoruz. Runtime da neden böyle bir şeye ihtiyacımız olsun? Bu dediğiniz işleme sadece delphi IDE'sine bir expert yazıyorsanız ihtiyacınız olur.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

csunguraya ek olarak ;

statik alanların ne getirdiği ve götürdüğü hep tartışılır ancak en önemli eksiğini belirtmek durumundayım. böyle yapar ve stattik fieldleri oluşturursanız DB eklediğiniz her alanda programın da bu alanı görmesi gerekir + yeniden derlenmesi. bu sizin için problem olur...

bunun yerine fieldbyname fonksiyonu daha uygun olacaktır. ancak bu seferde alan isimlerinde değişiklik (alter table vs) aparken dikkatli olmalısınız.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Her birinin yerine göre ayrı ayrı işlevleri vardır. Her ne kadar field editorden alan eklemek pratik gibi görünse de durgun (statik) yapıdadır ve değişken (dinamik) olmadığından bazı durumlar için işlevsel değildir. Mesela tek table nesnesi ile esnek bir kayıt aktarma projejinde string değerlerden oluşturulan şablonlarla çok tırmalamaya gerek kalmaz. Kayıt aktarımı için yapılması gereken değişiklikler sadece string sabitler (alan isimleri) üzerinde olacaktır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
cebeser
Üye
Mesajlar: 34
Kayıt: 17 Mar 2004 02:38
Konum: istanbul

teşekkürrler

Mesaj gönderen cebeser »

fikirleriniz için teşekkürler.

query.open ve
table.open

ile field ların otomatik yüklendiğini sayenizde öğrendim.

fieldbynam özelliği daha dinamik geldi bana ve işimi gördü, teşekkürler.
CE
Cevapla