AdoQuery Performans

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

pardon hocam, özür dilerim. durumunun böyle olduğunu bilmiyordum.

Ancak bence yine de eğer bu işi öğrenmek istiyorsanız, kendiniz uğraşmanız gereken noktalar var. Yöntemi öğrenip, diğer kod kısmıyla sizin uğraşmanız daha önce de dediğim gibi size çok şeyler katar. Delphi bilginizi artırır.

Bunlar tavsiye tabii ki. Ama kodda ısrarlı iseniz kodda yazarız, problem değil.

Kolay gelsin.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Hayır kodu ben yazayım ama siz doğru yolda olup olmadığımı söyleyin. ipucu üzerinden gitmekte zevkli olur zaten benim yapmak istediğimde buydu. Hocam birde kod yazmanızı istediğim bir yazım oldumu hatırlamıyorum yaşlanıyorum galiba.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

hocam farklı farklı şeylerden bahsediyoruz sanırım :lol: Benim kafa da karışık bugün, bir reset atalım. Şey ehem kem soru neydi? :D

Kolay gelsin.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Hemen Restledim CTRL+ALT+DEL
Aman Allahım Makina kapanıyor. :(

Açıldıktan sonra :D

Günaydın!

Hocam yazmış olduğum soru aşağıda

Calculadet alanlar üzerinde değiştirme işlemi yapamıyorum. Demek istediğim şu

Alan1 = Adet alanı
Alan2 = Fiyat alanı
Alan3 = Toplam alanı 'bu alan calculadet olarak tanımlanmış olsun

Alan1 ve alan2 de yapılan değişiklikler toplam alanına yansıyor.

Alan3 ancak Calculadet olarak tanımlanmış olan alanda değişkilik yapamıyoruz (klavyeden veri giremiyoruz) ben bunun çözümünü merak etmiştim.


Bu soruya Fahrettin Hocam aşağıdaki yazmış olduğum cevabı verdi

Evet Admin'in de dedig gibi calculated alanlari gerek delphi tarafinda gerekse veritabani tarafina degistiremezsiniz. zaten varolus mantiklari belirli bir mantık ile hesaplanmaları. Gridinizin icinde el ile veri giremezsiniz.

ama eger ben toplami gireyim adete bolup birim fiyati kendisi bulsun tarzinda bir amaciniz varsa : O zaman toplam alanını da tabloda tutup mesela before post'da toplam alanini bos ise gerekli degerleri carpip o alana deger atarsiniz. Yok eger toplam alani dolu ise adete bolup buldugunuz degeri birimfiyat alanina atarsiniz.


Bu soruyada ben bir örnek kod yazarak sürdüğüm izin doğru olup olmadığını sordum.


Peki Hocam Toplam alanını tablomda alan ayırdığımı farzedelim before post eventine yazacağım kod aşağıdaki gibimi olcak !

Kod: Tümünü seç

Kod: 

if Table1TOPLAM.Asinteger = ' ' then 
        Table1TOPLAM.AsInteger:=Table1ADET.AsInteger*Table1FIYAT.AsInteger 
Else 
    Table1FIYAT.AsInteger:=Table1TOPLAM.AsInteger / Table1ADET.AsInteger; 

[/b]

Ve Hocam neler olduysa bu kodu yazdıktan sonra oldu.

Bu soru benim için önemli yazmış olduğum programın kemik noktalarında biri benim için.

Umarım netice'ye bugün ulaşabiliriz.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Ornegin TField'in ozelliklerine bakarsaniz IsEmty seklinde bir ozellik goreceksiniz yani filed'in bos olup olmadığını anlamanıza olanak verir.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

[quote="husonet"]Hemen Restledim CTRL+ALT+DEL


Peki Hocam Toplam alanını tablomda alan ayırdığımı farzedelim before post eventine yazacağım kod aşağıdaki gibimi olcak !

Kod: Tümünü seç

Kod: 

if Table1TOPLAM.Asinteger = ' ' then 
        Table1TOPLAM.AsInteger:=Table1ADET.AsInteger*Table1FIYAT.AsInteger 
Else 
    Table1FIYAT.AsInteger:=Table1TOPLAM.AsInteger / Table1ADET.AsInteger; 

[/b]


Daha öncede soylemistim ama gozden kactı galiba
Calculated fieldlara Kod icinde Table in OnCalculated olay yordamı haricinde bir veri girmek/guncellemek hataya sebep olur

Table1TOPLAM.AsInteger:=Table1ADET.AsInteger*Table1FIYAT.AsInteger

atamasının OnCalculated olayı icinde yapılması lazım baska yerde olmaz
ayrıca bu olay yordamı icerisinde de diger data alanlarına yazamazsın sadece okursun
yani
Table1FIYAT.AsInteger :=0;//ornegin
gibi bir atama "dataset edit modda degil" diye bir hataya sebep olur

kolay gelsin
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Fahrettin hocam teşekkür ederim dün akşam denemiştim çalıştırdım ama hep hata alıyordum bugünkü vermiş olduğunuz ipucuyla hata olayındanda kurtulacağıma inanıyorum carptığım alanlarda boş bırakmazsam hata yok ama alanına en az bir tanesini boş bırakıp başka bir kayıt'a geçtiğim zaman hata alıyorum.

Her halde bu akşam bu hatayıda çözerim.

İyi Çalışmalar.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

if Table1TOPLAM.Asinteger = ' ' then
Table1TOPLAM.AsInteger:=Table1ADET.AsInteger*Table1FIYAT.AsInteger
Else
Table1FIYAT.AsInteger:=Table1TOPLAM.AsInteger / Table1ADET.AsInteger;
bir delphicinin yapmaması gereken bir yazım hatası. derlemede hata vermese bile bu yanlış bir kullanımdır. zaten asinteger ile bir değerden bahsediyorsunuz. o halde kıyaslama için de integer bir değer koymalısınız. string değil. içeriğin boş olup olmadığı kontrolunu
if Table1TOPLAM.IsNull then ... şeklinde kontrol edebilirsin.
Yani kısaca yukarıda kullandığın if bloğunda if Table1TOPLAM.Asinteger = ' ' then şartı hiç sağlanmadığından sürekli else bloğuna düşüp, orada da Table1ADET.AsInteger ın değeri null veya sıfır dönüyorsa bir hata alman çok muhtemeldir, işi sağlama bağlamak için bu kontrolü de yapmak gerekiyor.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Arkadaşım uyarın için saol aceleyle kodu yazdığım için dikkatsizliğime gelmiş uyarın için teşekkür ederim.
Cevapla