calculated field

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

calculated field

Mesaj gönderen yusuf simsek »

herkese kolay gelsin

öncelikle "mustafa hocam" vermiş olduğunuz linklerde calculated field alanını inceledim ve olayı çözdüm..(daha önce de birkaç kullanma girişimim olmuştu)

Şöyle bir sorunla karşılaştım...Query nesnesine ve program içine yazdığım kodlada tanımladığım calculated alanını kullanıyorum ama veri tabanında olmadığı için " ... alan bulunamadı "şeklinde bir hata mesajı veriyor...

veritabanın da alanı tanımladığımda zaten calculated field in bir anlamı kalmıyor...

bu hatayla karşılaşmamak için acaba ne önerirsiniz....


birde program içinde diğer formlarda da kullanabileceğim genel amaçlı kendi yazacağım procedureleri programın hangi alanında tanımlayabalirim...
HERKESE ÇOK TEŞEKKÜR EDERİM
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Karşılaşılan hata hakkında bilgi detaysız Kodlarınızı adım adım çalıştırarak problemin hangi aşamada kaynaklandığını bulunuz.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Mesaj gönderen yusuf simsek »

hata şu: ben "toplam" adında bir calculated field oluşturuyorum...( bu arada veri tabanı paradox :cry: ) hesaplama yaptırdığımda " toplam alanı veritabanında bulunamadı" mesajını veriyor... yani veritabanında toplam diye bir alan arıyor...
veritabanına toplam diye bir alan oluşturursam sorunsuz çalışıyor...
program içinde diğer formlarda da kullanabileceğim genel amaçlı kendi yazacağım procedureleri programın hangi alanında tanımlayabalirim...
bir de bu konuda yardım istiyorum
... sadece proje içinde nereye yazacağım :?:

teşekkürler
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
Calculated alana değer aktardığın kodları gönderirsen daha fazla yardımcı olabilriz.Sanırım. Birde calculated alana tablonun OnCalcFields olayında değer atamalısın.
ikinci soruna gelince
yazdığın bir procedureyi kullandığın diğer ünit ve formlarda kullanmak istiyorsan procedure(yada function u) formun public alanına

Kod: Tümünü seç

 procedure benimprocedurem(parametreler);
yazıp procedureyi tanımlamalısın. daha sonra Ctrl+Shift+Ctuşlarına basarak procedureni yazabilirsin. ancak procedure yi diğer form ve unitlerde kullanmadan önce formun adını referans göstermen gerek.

Kod: Tümünü seç

 form1.benimprocedurem(parametreler)
şeklinde
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Mesaj gönderen yusuf simsek »

öncelikle public hatırlatması için teşekkürler...

calculate field tanımlamasını query nesnesinin field editör alanında new field sekmesini kullanarak tanımladım...(urun_top)

toplama yapacağım alan (adet) integer tipte, urun_top alanının tipini de integer olarak tanımladım...

bu kodu kullandığımda
dm.toplam.close;
dm.toplam.SQL.Clear;
dm.toplam.SQL.Add('SELECT URUN_NO, SUM( ADET ) urun_top');
dm.toplam.SQL.Add('FROM "s_hareket.DBF" S_hareket');
dm.toplam.SQL.Add('WHERE URUN_NO ='''+edit1.Text+'''');
dm.toplam.SQL.Add('GROUP BY URUN_NO, urun_top');
dm.toplam.Open;
edit7.Text:=inttostr(dm.toplamurun_top.Value);
invalid field name urun_top hatasını veriyor....
dm.toplam.SQL.Add('GROUP BY URUN_NO ');
satırında urun_top satırını yazmadığımda değeri göremiyorum... yani edit nesnesine 0 değerini dönderiyor....

farklı yollar deniyorum ama hala olmadı....

vazgeçmeyeceğim :x bu işi mutlaka çözeceğim...
ama tabiki yardımlarınızı da bekliyorum...

şimdiden herkese tekrar teşekkür ederim....
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

Kod: Tümünü seç

edit7.Text:=inttostr(dm.toplamurun_top.Value);
yerine

Kod: Tümünü seç

edit7.text:=dm.toplam.fieldbyname('urun_top').asstring;
dene
olmazsa query nin üzerine iki kere tıkladığında açılan fields editöre sağ tıklayıp add allfields de.
bi de öyle dene
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Mesaj gönderen yusuf simsek »

@aslangeri denedim ama malesef olmadı...

ben kullandığım veri tabanından olduğunu düşünüyorum (çünki mustafa hocam kullanabiliyor) ama veri tabanıyla ne bağlantısı olduğunu çözemiyorum...

ver tabanında bir alan oluşturdum, çalışıyor ama alan sadece yer işgal ediyor...

bu calculated field olayı benim canımı sıkmaya başladı :twisted:

ama beni altedemiyecek...sakin bir kafayla ALLAHIN İZNİYLE bu işi halledeceğim....
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

fields editördeki tüm alanları silip
tekrak eklemeyi denermisin.
Add all fields dediğin zaman sadece iki alan olması lazım. urun_top alanınıda kendisinin getirmesi lazım.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Mesaj gönderen yusuf simsek »

add all fields olayını yaptım...
orada sorun yok. urun_top alanını ve urun_no alanını görüyor...

ama edit nesnesine sonuç döndürmüyor..
dm.toplam.close;
dm.toplam.SQL.Clear;
dm.toplam.SQL.Add('SELECT URUN_NO, SUM( ADET ) urun_top');
dm.toplam.SQL.Add('FROM "s_hareket.DBF" S_hareket');
dm.toplam.SQL.Add('WHERE URUN_NO ='''+edit1.Text+'''');
dm.toplam.SQL.Add('GROUP BY URUN_NO');
dm.toplam.Open;
edit7.Text:=inttostr(dm.toplamurun_top.Value);
kodu bu şekilde çalışıyor ama edit'e 0 değerini yazıyor...
edit7.text:=inttostr(dm.toplam.fieldbyname('urun_top').asinteger);


bu kod satırıda aynı şekilde... bu da 0 değerini döndürüyor...


anladığım kadarıyla sorun değerin içine toplamı yazmıyor...
çünki sql query içinde yazdığım kod çalışıyor ve sonucu veriyor.

program içinde de sonuç olarak 0 dönderiyor...
(benim işime yaramıyor da sağolsun en azından boş çevirmiyor :lol: )
En son yusuf simsek tarafından 31 Tem 2004 06:02 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

edit1 in text inde ne yazıyor
yani tablonda where şartını sağlayan kayıt varmı
tabloyu bi gride bağlayıp ne geliyor ne yapıyor bi baksan
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Mesaj gönderen yusuf simsek »

SELECT SUM( TOPLAM ) kasa, TUR, TARIH
FROM "s_hareket.DBF" S_hareket
WHERE (TUR = 'g') AND (TARIH = '07/31/2004')
GROUP BY TUR, TARIH


query nesnesinin sql builder alanına bu kodu hazırlattım ve kasa alanını ilave ettim...kodu denemek için çalıştırdığımda sonuç aldım... toplam değeri dönderdi...
dm.kasa.Close;
dm.kasa.SQL[2]:='WHERE (TUR = '''+'c'+''')AND (TARIH ='''+datetostr(date)+''')';
dm.kasa.Open;
edit1.Text:=floattostr(dm.kasakasa.Value);


query nesnesinde kasa adında calculate field alanı olşturdum...
bu kodu da program içerisinde buton click olayına yazdım ve çalıştırdım
ama gene 0 değerini dönderdi....

delphinin bana garezi var :evil: ama benim de vazgeçmeye yok...
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Mesaj gönderen yusuf simsek »

hatalar,hatalar...

hepsi üst üste binip sinir katsayısı artınca sorun çözülmüyor ve kafada saç kalmıyor.
ama en güzeli hatayı bulup çözmesi.Ondan sonra saçlar yeniden çıkıyor...

MUSTAFA HOCAMIN DEDİĞİ GİBİ :ara MA
Sakin kafayla inceleyince ve ayrı bir çalışma alanında hataları önemsemeden deneyince oluyor...(esas çalışma alanında fazla risk alınamıyor)

Neyse geyik yeter.(sorunu çözünce seviçten :bravo: oldu)

Hatam SUM fonksiyon sonucunu calculate alana aktarmakmış.Yani tabloda olmayan bir alana SUM fonksiyonunun sonucunu göndermeye çalışmak.
Diğer veri tabanları destekliyormu bilmiyorum ana DBASE ve PARADOX desteklemiyor.

Query nesnesinin olaylarında (alt sıralarında) bulunan ONCALCFIELD alanına gerekli kodu yazdıktan sonra bal gibi de oluyor.("vay yapamadım, oy anam olmadı " gibi bahaneler dinlemiyor)
procedure TForm1.Query1CalcFields(DataSet: TDataSet);
begin
query1CALCULATEALAN.value:=queryALAN1.value+queryALAN2.value;
end;
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

hepsi üst üste binip sinir katsayısı artınca sorun çözülmüyor ve kafada saç kalmıyor.
ama en güzeli hatayı bulup çözmesi.Ondan sonra saçlar yeniden çıkıyor...
Ya ben sorunlarımı çözmeme rağmen benim saçlar geri çıkmıyor problem ne olabilir? :P

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Mesaj gönderen yusuf simsek »

ya hüseyin hocam senin sorun herhalde ırsi.Ama böyle daha yakışıklısın.
saçlı halini düşünemiyorum.

Yani öyle bir imajın varki!!! Fazla söze gerek yok.

Ben yolduklarımı atmıyorum.Onları biriktirip karşıma koyuyorum. Onlara bakarak kendimi cezalandırıyorum. :duvar:

Cezam bittiğinde de tekrar yapıştırıyorum :D
Böylece kendimi ödüllendiriyorum.
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba ,
SQL sonucu aktarılan sanal alanların tipi daima "fkData" olmalıdır.
Örneğin, fkData olarak tanımlı toplam adında bir sanal olsun
"Select sum(toplancak) as toplam from tablom" gibi bir sorguda doğru sonuç dönecektir ama eğer fkCalculated tanımlı ise hata oluşacaktır.

New Field Penceresinde orta kısımda bulunan field type kısmından DATA yı seçerek bunu yapabilirsiniz.

Kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
Cevapla