SQL de Toplama ve Çıkarma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen ozcank »

SimaWB kardeşim sana çok teşekkür ederim verdiğin bilgilerden dolayı çok değerli bilgiler bunlar. :bravo:
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen ozcank »

Arkadaşlar çok basit bir sorgu ilede çözemedim bir fikri olan varmı yardım edermisiniz?

TBLEMANET de EGCTIP VarChar(1) olarak tanımlı Allow Nulls işaretli artık oraya kadar baktım

ve DBGrid ve 1 tanede button koydum deniyorum ama yok

Kod: Tümünü seç

Filitre.Close;
Filitre.Filter:='EGCTIP="C"';
Filitre.Filtered:=True;
Filitre.Open;

Kod: Tümünü seç

Filitre.SQL.Text:='SELECT SUM(ESTHAR_GCMIK) FROM TBLEMANET WHERE EGCTIP="C"';
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen ozcank »

Arkadaşlar bu şekilde sorgum düzgün çalışıyor.

Kod: Tümünü seç


procedure TForm3.Button1Click(Sender: TObject);
begin
Filitre.Close;
Filitre.SQL.Clear;
Filitre.SQL.Text:='SELECT SUM(ESTHAR_GCMIK) FROM TBLEMANET WHERE ESTOK_KODU ='+ QuotedStr(Form4.DBEdit1.text);
Filitre.Open;

Ben EGCTIP deki G ve C alanlarını ayrı ayrı toplatmak istiyorum bu sorguya nasıl eklerim? Ne yaptıysam olmadı YARDIM !!!
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen emin_as »

Daha önce de yazdım, birazcık oturup delphi, pascal veya sql kitapları okusan bu basit şeyleri kolayca halledersin. Körleme şekilde gidiyorsun, bu yazdıgın programın saglıklı çalışacagına da inanmıyorum.

İşini görecek sql şu olacak.

Kod: Tümünü seç

select EGCTIP, sum(ESTHAR_GCMIK) from TBLEMANET group by EGCTIP
Bu kod egctip e göre gruplandırma yapıp, her grubun toplamını gösterecektir.
Fields[0] da egctip degeri G, C ve digerleri, Fields[1] de ise bu grupların toplamı gösterilecektir.

Gerekirse where ile toplamı yapılacak bölümü daraltabilirsin, sadece bir stogu topla vs gibi.

Kodu kendine göre uyarla.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen ozcank »

ADOQuery kullanıyorum ve databases program çalışınca aktif oluyor ben Fields alanı eklediğimde dataset i veremiyorum
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen ozcank »

Fields alan tanıladıktan sonra çalıştırdığımda Edit4 e C değerini yazıyor

Kod: Tümünü seç

Form3.Filitre.Close;
Form3.Filitre.SQL.Clear;
Form3.Filitre.SQL.Text:='select EGCTIP, sum(ESTHAR_GCMIK) from TBLEMANET group by EGCTIP';
Form3.Filitre.Open;
Form3.Edit4.Text:=Form3.Filitre.Fields[0].asstring;
bu kadar zormu bir sql cümlesiyle G ve C kayıtlarını süzüp toplatmak
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen unicorn64 »

bir de buraya bak...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen emin_as »

Kodları şu şekilde düzelt.

Kod: Tümünü seç

Form3.Filitre.Close;
Form3.Filitre.SQL.Clear;
Form3.Filitre.SQL.Text:='select EGCTIP, sum(ESTHAR_GCMIK) from TBLEMANET group by EGCTIP';
Form3.Filitre.Open;
Form3.Edit4.Text:=Form3.Filitre.Fields[1].asstring;
Form3.Filitre.Next;
Form3.Edit5.Text:=Form3.Filitre.Fields[1].asstring;
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen ozcank »

emin_as kardeşim Allah senden razı olsun , eline yüreğine sağlık toplam işlemi tamam dır ben sadece dBgrid e gelen tek cari için stok kodlarının giriş çıkışını toplatıyorum ve sorgunu bu şekilde değiştirdim ama yine hata aldım

Kod: Tümünü seç


Form3.Filitre.Close;
Form3.Filitre.SQL.Clear;
Form3.Filitre.SQL.Text:='select EGCTIP,ESTOK_KODU, sum(ESTHAR_GCMIK) from TBLEMANET group by EGCTIP';
Form3.Filitre.SQL.Text:='WHERE ESTOK_KODU ='+ QuotedStr(DBEdit1.text);
Form3.Filitre.Open;
Form3.Edit4.Text:=Form3.Filitre.Fields[1].asstring;
Form3.Filitre.Next;
Form3.Edit5.Text:=Form3.Filitre.Fields[1].asstring;
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen unicorn64 »

neyi niye nasıl yapacağını bilmeden, yaklaşık 10 gündür, 2-3 mesajda bir dile getirilenleri dikkate almadan, kopyala yapıştır düzenle olsun bitsin mantığıyla ilerlemeye çalıştığınız için hata almanız normal... temel sql bilgisi olmadan, netsise veritabanı bazında entegre program yazmaya çalışıyorsunuz ama her adım attığınızda da takılıyorsunuz.. işin ilginç yanı foruma 2005 de üye olmuş, 2008 e kadar forumda aktif olarak bulunmuş birisiniz, 2012 mayıstan beri de şuan üzerinde çalıştığınız programla ilgili baya bir soru sormuşsunuz ancak temel adımları hala aşamamış görünüyorsunuz... Allah kolaylık versin ne diyeyim...

en temel sql dökümanlarında bile "group by" bloğunun "where" kısmından sonra olması gerektiği yazar.

Kod: Tümünü seç

select SorguSonucuİstenenAlanlar from asilTablo
[gerekliyse diğer tablolarla joinler]
[gerekliyse where ile filtreleme]
[gerekliyse group by bloğu [gerekliyse having ile gruplama işlemi üzerinde filtreleme] ] 
[gerekliyse order by bloğu] 
sorguyu sql server ortamında çalıştırmayı denemiş olsanız bu hatayı zaten farkedecektiniz...


ayrıca Form3.Filitre.SQL.Text e direk değer ataması yaptığınız için de select olan satır gümbürtüye gitmiş oluyor...
bunu da Form3.Filitre.Open; satırına break point koyup programı çalıştırsanız, o satıra geldiğinde de Form3.Filitre.SQL.Text üzerine mouse ile gelmiş olsanız görecektiniz....
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen ozcank »

bu sorgu sql de çalıştı ve istediğim sonucu da aldım

Kod: Tümünü seç

select EGCTIP,ESTOK_KODU, sum(ESTHAR_GCMIK) from TBLEMANET group by EGCTIP,ESTOK_KODU
ama delphi de kullandığımda istediğim sonuçu alamadım

Kod: Tümünü seç

Form3.Filitre.Close;
Form3.Filitre.SQL.Clear;
Form3.Filitre.SQL.Text:='select EGCTIP,ESTOK_KODU, sum(ESTHAR_GCMIK) from TBLEMANET group by EGCTIP,ESTOK_KODU';
Form3.Filitre.Open;
Form3.Edit4.Text:=Form3.Filitre.Fields[1].asstring;
Form3.Filitre.Next;
Form3.Edit5.Text:=Form3.Filitre.Fields[1].asstring;
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen SimaWB »

Yazmayayım diyorum ama dayanamadım!
İnatla, hâlâ aynı mantıkla devam ediyor!!!

Bu forumda 4 yüz küsur yorum yazmış/soru sormuş bir insan, en azından şu kodla

Kod: Tümünü seç

Form3.Edit4.Text:=Form3.Filitre.Fields[1].asstring;
Form3.Filitre.Next;
Form3.Edit5.Text:=Form3.Filitre.Fields[1].asstring;
Edit4 ve Edit5'e aynı değeri attığının farkında değilse ben söyleyecek birşey bulamıyorum.
Sabırla cevap vermeye çalışan arkadaşlara da :bravo:
There's no place like 127.0.0.1
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen ozcank »

onun ben farkındayım simaWB ben sonuçu almaya çalışıyorum.Yine de teşekkür ediyorum yardımlarını es geçemem
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen ozcank »

Where yerine HAVING kulladım ama olmadı

Kod: Tümünü seç

Form3.Filitre.Close;
Form3.Filitre.SQL.Clear;
Form3.Filitre.SQL.Text:='select EGCTIP,ESTOK_KODU, sum(ESTHAR_GCMIK) from TBLEMANET group by EGCTIP HAVING ESTOK_KODU='+QuotedStr(Form4.DBEdit1.text);
Form3.Filitre.Open;
Form3.Edit4.Text:=Form3.Filitre.Fields[1].asstring;
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: SQL de Toplama ve Çıkarma

Mesaj gönderen ozcank »

Arkadaşlar bu şekilde halletim sorunumu sorunsuz çalışıyor.Sabırla yardımcı olanlara çok teşekkür ediyorum

Kod: Tümünü seç

Form3.Filitre.Close;
Form3.Filitre.SQL.Clear;
Form3.Filitre.SQL.Text:='select EGCTIP,ESTOK_KODU, sum(ESTHAR_GCMIK) from TBLEMANET group by EGCTIP,ESTOK_KODU HAVING ESTOK_KODU='+ QuotedStr(Form4.DBEdit1.text);
Form3.Filitre.Open;
Form3.Edit4.Text:=Form3.Filitre.Fields[2].asstring;
Form3.Filitre.Next;
Form3.Edit3.Text:=Form3.Filitre.Fields[2].asstring;
Cevapla