Delphi'de DataGrid Üzerinde Direkt Oynama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Delphi'de DataGrid Üzerinde Direkt Oynama
A.slm;
datagrid üzerinde oynayarak satılan malın miktarı ve fiyatı üzerinde kullanıcıya kolaylık sağlamaya çalışıyorum. Mesela 90 TL ye satılan ürünü indirip yapıp müşteriye 75 TL sattığımızı varsayalım. Ürün barkodundan okutulduğu zaman otomatikman stok kartından 90 TL satış fiyatı gelecek ekrana ve ben ekran üzerinden oynama yaparak 75 TL olarak girebileceğim veya aynı şekilde miktar ile grid üzerinde oynayabileceğim.
Ana amacım bu aslangeri hocam. Yazan arkadaşların yardımları ile o işi hallettik çok şükür ancak toplamda sıkıntı oluştu. Alttaki sayfanın toplam tutarına yaptığımız değişiklikleri yansıtamadım bir türlü...Dediğiniz teşhis doğru tablo için insert hatası alıyorum, null etme işinin mantığını anlayamadım, yapmaya çalıştım dediğiniz kod gibi ama şu hatayı alıyorum bu seferde:
Incompatible types: 'procedure untyped pointer or untypeda parameter' and 'Variant'
Yaptığınız eleştiride haklısınız, çok profesyonel değilim, hele ki bir hata kodu ile karşılaştığımda ne yapmam gerektiğini inanın bilmiyorum.
datagrid üzerinde oynayarak satılan malın miktarı ve fiyatı üzerinde kullanıcıya kolaylık sağlamaya çalışıyorum. Mesela 90 TL ye satılan ürünü indirip yapıp müşteriye 75 TL sattığımızı varsayalım. Ürün barkodundan okutulduğu zaman otomatikman stok kartından 90 TL satış fiyatı gelecek ekrana ve ben ekran üzerinden oynama yaparak 75 TL olarak girebileceğim veya aynı şekilde miktar ile grid üzerinde oynayabileceğim.
Ana amacım bu aslangeri hocam. Yazan arkadaşların yardımları ile o işi hallettik çok şükür ancak toplamda sıkıntı oluştu. Alttaki sayfanın toplam tutarına yaptığımız değişiklikleri yansıtamadım bir türlü...Dediğiniz teşhis doğru tablo için insert hatası alıyorum, null etme işinin mantığını anlayamadım, yapmaya çalıştım dediğiniz kod gibi ama şu hatayı alıyorum bu seferde:
Incompatible types: 'procedure untyped pointer or untypeda parameter' and 'Variant'
Yaptığınız eleştiride haklısınız, çok profesyonel değilim, hele ki bir hata kodu ile karşılaştığımda ne yapmam gerektiğini inanın bilmiyorum.
Re: Delphi'de DataGrid Üzerinde Direkt Oynama
s.a.
önceki mesajdaki sehven "null" yazmışım o "nil" olacak.
gibi birşey olacak.
bileşenlere isim vermeniz sizin için iyi olacaktır. bir sene sonra tablo3 ün ne olduğunu hatırlayamayabilirsiniz ancak tfaturasatir gibi bir isim verdiğiniz zaman hatırlamanız daha kolay olacaktır.
kolay gelsin.
önceki mesajdaki sehven "null" yazmışım o "nil" olacak.
Kod: Tümünü seç
table3.OnCalcFields:=nil;
......
table3.OnCalcFields:=Table3CalcFields;
bileşenlere isim vermeniz sizin için iyi olacaktır. bir sene sonra tablo3 ün ne olduğunu hatırlayamayabilirsiniz ancak tfaturasatir gibi bir isim verdiğiniz zaman hatırlamanız daha kolay olacaktır.
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
Re: Delphi'de DataGrid Üzerinde Direkt Oynama
S.A.
table3TOPLAMChange ile table3CalcFields eventleri arasında program stack overflow oluyor.
Yukarıdaki table3.first satırından sonra table3CalcFields'ın (aşağıda) begin satırına gidip işlemi yapıp dönüp tekrar üstteki kodun begin satırına gidiyor, onun da first satırından tekrar buraya dönüş oluyor ve stack overflow hatası veriyor. Yani yukarıda while not ile başlayan satıra erişemiyor program...
table3TOPLAMChange ile table3CalcFields eventleri arasında program stack overflow oluyor.
Kod: Tümünü seç
procedure Tform4.Table3TOPLAMChange(Sender: TField);
var
top: double;
begin
top:=0;
table3.First;
while not table3.Eof do
begin
table7.Edit;
top:= top+table3TOPLAM.Value;
table7TTUTAR.AsCurrency:=top;
table3.Next;
end;
end;
end.
Kod: Tümünü seç
procedure Tform4.Table3CalcFields(DataSet: TDataSet);
var
i: Integer;
top:Double;
begin
table3TOPLAM.AsCurrency:= table3MIKTAR.AsInteger*table3FIYAT.AsCurrency;
end;
Re: Delphi'de DataGrid Üzerinde Direkt Oynama
table3TOPLAM bilgisini bir Query ile toplat.
oncalc eventinde
Queryi requery ile tazele ve global olarak oluşurulan Top değişkenine at.
döngüyü kaldır..
Kod: Tümünü seç
select sum(toplam) as toplam from table3 where ......
Queryi requery ile tazele ve global olarak oluşurulan Top değişkenine at.
döngüyü kaldır..
Bir kelimenin anlamını öğretsen bile yeter..



Re: Delphi'de DataGrid Üzerinde Direkt Oynama
Hocam table bileşeni kullanıyorum, query hiç kullanmadım şimdiye kadar, query bilmiyorum:((
Re: Delphi'de DataGrid Üzerinde Direkt Oynama
query işlem yapmayacağın durumlarda daha kullanışlıdır.
Basit örnekleri sitede hemen bulabilirsin.
Basit örnekleri sitede hemen bulabilirsin.
Bir kelimenin anlamını öğretsen bile yeter..



Re: Delphi'de DataGrid Üzerinde Direkt Oynama
Table la yöntemi yok mu hocam, işler karışıyor yine?? Şimdi query ile boğuşturma beni..
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Delphi'de DataGrid Üzerinde Direkt Oynama
Veritabanı ile işiniz varsa SQL sorgular çalıştırmak size nefes almak kadar gerekli. Aksi halde SQL sorguları kullanmak niyetinde değilseniz adres etiket programından öte program yazmanız tavsiye olunmaz.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Delphi'de DataGrid Üzerinde Direkt Oynama
Conari hocam,conari yazdı:table3TOPLAM bilgisini bir Query ile toplat.oncalc eventindeKod: Tümünü seç
select sum(toplam) as toplam from table3 where ......
Queryi requery ile tazele ve global olarak oluşurulan Top değişkenine at.
döngüyü kaldır..
bu koddan anladığım kadarı ile table3 den TOPLAM'ı biryerlerden hesapla diyeceğiz...Ama bizim TOPLAM'a ulaşmamız için miktar ile fiyatı çarpmamız lazım bu aşamada. Where komutu şuradan hazır bir şeyi almak demek değil mi?? Aklımdan geçen şu:
Kod: Tümünü seç
select sum (TOPLAM) from table3 where table3MIKTAR.AsInteger*table3FIYAT.AsCurrency;
Re: Delphi'de DataGrid Üzerinde Direkt Oynama
s.a.
gibi bişeyler olması lazım.
Kod: Tümünü seç
select sum(miktar*fiyat) as toplam from table3tablename where faturano=table3faturanumarası
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
Re: Delphi'de DataGrid Üzerinde Direkt Oynama
A.Slm aslangeri hocam;
where den sonraki kısmı anlayamadım.
Yapmamız gereken şu değil mi?... table3 içerisindeki fiyat ve miktar kolonlarını çarp ve bir toplam olarak ata...faturano ile biz neyi teyit ediyoruz???
bir de paradox da bu sql sorguları sorun oluşturur mu?
where den sonraki kısmı anlayamadım.
Yapmamız gereken şu değil mi?... table3 içerisindeki fiyat ve miktar kolonlarını çarp ve bir toplam olarak ata...faturano ile biz neyi teyit ediyoruz???
bir de paradox da bu sql sorguları sorun oluşturur mu?
Re: Delphi'de DataGrid Üzerinde Direkt Oynama
Evet, Query ile ilgili çalışmamızı tamamladık ve mantığının table kontrolünden pek de farklı olmadığını gördük. (korktuğum gibi karmaşık değilmiş)
Şimdi kısaca toparlarsak;
Satış Ekranı üzerinde barkod okutturulan ürünün satış fiyatı ve miktarı üzerinde oynama yapmak istiyorduk. Oynama işini dbgrid özelliklerinden hallettik yalnız satışı yapılan ürünlerin fiyatlarının toplandığı toplam tutar'ı bir türlü becerememiştim.
Tavsiyeniz üzerine form'a 1 adet query ekledim, ilgili datasource'a bağladım, fields editörden alanları ekledim, active özelliğini true yaptım, string list editor'e kodunu ekleyerek database den bilgileri çektim.
query'nin calcfields'ına şu kodu yazdım:
Ve undeclared identifier:'select' uyarısı aldım. 
Şimdi kısaca toparlarsak;
Satış Ekranı üzerinde barkod okutturulan ürünün satış fiyatı ve miktarı üzerinde oynama yapmak istiyorduk. Oynama işini dbgrid özelliklerinden hallettik yalnız satışı yapılan ürünlerin fiyatlarının toplandığı toplam tutar'ı bir türlü becerememiştim.
Tavsiyeniz üzerine form'a 1 adet query ekledim, ilgili datasource'a bağladım, fields editörden alanları ekledim, active özelliğini true yaptım, string list editor'e
Kod: Tümünü seç
select * from NISTEK.db
query'nin calcfields'ına şu kodu yazdım:
Kod: Tümünü seç
select sum(MIKTAR*FIYAT) as TOPLAM from table3;

Re: Delphi'de DataGrid Üzerinde Direkt Oynama
Yine karıştırmışsınız. o cümleyi Queryin SQL text kısmına yazmalısınız.
şeklinde.
sonra query.open
sonra query den dönen sonucu ilgili bileşenlerde göstereceksiniz.
Kod: Tümünü seç
Query.SQL.text:='select sum(MIKTAR*FIYAT) as TOPLAM from table3';
sonra query.open
sonra query den dönen sonucu ilgili bileşenlerde göstereceksiniz.
Bir kelimenin anlamını öğretsen bile yeter..



Re: Delphi'de DataGrid Üzerinde Direkt Oynama
conari hocam biraz daha detaylı anlatırsan bu işi çözecez sonunda, neyi nereye yazacağımı detaylı bir şekilde tekrar yazabilir misin sana zahmet. Mesela query nin sql test i neresi?conari yazdı:Yine karıştırmışsınız. o cümleyi Queryin SQL text kısmına yazmalısınız.
şeklinde.Kod: Tümünü seç
Query.SQL.text:='select sum(MIKTAR*FIYAT) as TOPLAM from table3';
sonra query.open
sonra query den dönen sonucu ilgili bileşenlerde göstereceksiniz.
Re: Delphi'de DataGrid Üzerinde Direkt Oynama
Breakpoint ike hata ararken form üzerindeki timer'da devamlı bir döngü olduğunu gördüm. Neden olabilir acaba, nasıl giderebilirim?

Uploaded with ImageShack.us

Uploaded with ImageShack.us