GROUP BY Kullanımı

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

GROUP BY Kullanımı

Mesaj gönderen ozcank »

Arkadaşlar ;
Bir tane tablom var ve bu tabloyu aşağıdaki kod ile DBGrid1 listeliyorum fakat içerisinde aynı stok dan bir çok kayıt dönüyor Group By kullandım ama olmadı yardımcı olabilir misiniz?

Kod: Tümünü seç

ESRehber.Close;
ESRehber.SQL.Clear;
ESRehber.SQL.Add('SELECT ESTOK_KODU,ESTOK_ADI,ESTHAR_TARIH,EFISNO,EFIS_NO,EGCTIP,EOLCU_BR1,EBARKOD1 FROM TBLEMANET WHERE EGCTIP='+#39+'G'+#39+' AND ECARI_KOD='+QuotedStr(Form3.DBEdit1.text));
ESRehber.Open;
ESRehber.Active:=True;
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Re: GROUP BY Kullanımı

Mesaj gönderen ender_arslanturk »

Selâmlar,

Kod: Tümünü seç

ESRehber.Close;
ESRehber.SQL.Clear;
ESRehber.SQL.Add('SELECT ESTOK_KODU, ESTOK_ADI, ESTHAR_TARIH, EFISNO, EFIS_NO, EGCTIP, EOLCU_BR1, EBARKOD1 FROM TBLEMANET ');
ESRehber.SQL.Add('WHERE EGCTIP='+#39+'G'+#39+' );
ESRehber.SQL.Add('AND ECARI_KOD='+QuotedStr(Form3.DBEdit1.text));
ESRehber.SQL.Add('Group By ESTOK_KODU, ESTOK_ADI, ESTHAR_TARIH, EFISNO, EFIS_NO, EGCTIP, EOLCU_BR1, EBARKOD1');
ESRehber.Open;
Select ifadesinde kaç tane alan belirtilmişse o alanların hepsi group by ifadesine eklenmek zorundadır. Gruplama birden fazla alanda olacağı için sonuçlar da ona göre geri dönecektir. Where şartlarınızı artırmanızı öneririm.

İyi çalışmalar,
ozcank
Üye
Mesajlar: 929
Kayıt: 28 Nis 2005 05:29

Re: GROUP BY Kullanımı

Mesaj gönderen ozcank »

Nasıl artırabilirim çok uğraştım bir türlü çözemedim DISTINCT de kullandım olmadı dediğiniz gibide yaptım olmadı ama where nasıl artırabilirim yardım edebilirmisiniz?
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: GROUP BY Kullanımı

Mesaj gönderen tayipk »

ozcank yazdı:Nasıl artırabilirim çok uğraştım bir türlü çözemedim DISTINCT de kullandım olmadı dediğiniz gibide yaptım olmadı ama where nasıl artırabilirim yardım edebilirmisiniz?
slm group by kullanımı yapabilmen için sorgu sonucunda dönen sonuçlarda benzerlik olmalı mesela

Kod: Tümünü seç

SELECT ESTOK_KODU, ESTOK_ADI, ESTHAR_TARIH, EFISNO, EFIS_NO, EGCTIP, EOLCU_BR1, EBARKOD1
kodundan yola çıkalım burda group by ESTOK_KODU, ESTOK_ADI, ESTHAR_TARIH, EFISNO, EFIS_NO, EGCTIP, EOLCU_BR1, EBARKOD1 yapman gerekmete ki sorgu çalışsın. çalıştığı zaman ne olacak ben sana söyleyeyim örneğin ESTOK_KODU = 1 olsun şimdi ESTOK_KODU 1 olan hareketlerdeki diğer alanlar arasında tek bir nokta dahi farklı olsa bunu gruplamaz. yani atıyorum 100 tane sonuç döndü bu 100 tane sonucun 100 tanesinde de ESTOK_KODU, ESTOK_ADI, ESTHAR_TARIH, EFISNO, EFIS_NO, EGCTIP, EOLCU_BR1, EBARKOD1 alanlarındaki bilgi birebir aynı olmalıki Group By ile sana tek satır sonuç dönsün. Umarım Group by mantığını anlatabilmişimdir. Dilim döndüğünce anlatmaya çalıştım. kolay gelsin
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
ozcank
Üye
Mesajlar: 929
Kayıt: 28 Nis 2005 05:29

Re: GROUP BY Kullanımı

Mesaj gönderen ozcank »

Tayipk çok teşekkür ederim açıklaman için benim bu alanların hiçbiri birbirini tutmuyor o yüzden group by mantığını kullanamam ESTOK_KODU ve ESTOK_ADI iki alan kullanmış olsaydım sizin anlattığınız gruplama olacaktı. Peki ben nasıl bir döngü ile ve bu alanları da kullanarak bir gruplama yapabilirim çünkü bu alanları kullanmam gerekiyor. Aslında hata benim bir tane tablom var ve bunun içerisinde "ESTOK_KODU, ESTOK_ADI, ESTHAR_TARIH, EFISNO, EFIS_NO, EGCTIP, EOLCU_BR1, EBARKOD1" bu alanları saklıyor ve ben stok rehberi yaptığım da ilk ekranda group by mantığını kullanıyorum.Şöyle ;

Kod: Tümünü seç

{ESRehber.Close;
ESRehber.SQL.Clear;
ESRehber.SQL.Add('SELECT ESTOK_KODU,ESTOK_ADI FROM TBLEMANET WHERE EGCTIP='+#39+'G'+#39+' AND ECARI_KOD='+QuotedStr(Form3.DBEdit1.text));
ESRehber.SQL.Add('GROUP BY ESTOK_KODU,ESTOK_ADI');
ESRehber.Open;
ESRehber.Active:=True;
Buraya kadar herşey tamam ve DBGRid1 de çift tıkladığımda bu alanları hesaplatarak DBEditlere alıyorum sorun burda başlıyor ve bu kod yapısıda şöyle ;

Kod: Tümünü seç

procedure TForm4.DBGrid1DblClick(Sender: TObject);
begin

 Form3.DBEdit8.text  :=Form3.EKAYIT.fieldbyname('EFIS_NO').text;
 Form3.DBEdit5.Text  :=ESREHBER.fields[2].asstring;
 Form3.DBEdit3.Text  :=ESREHBER.fields[3].asstring;
 Form3.DBEdit6.Text  :=ESREHBER.fields[0].asstring;
 Form3.DBEdit7.Text  :=ESREHBER.fields[1].asstring;
 Form3.DBEdit9.Text  :=ESREHBER.fields[6].asstring;
 Form3.DBEdit10.Text :=ESREHBER.fields[7].asstring;
 Form3.Edit9.Text    :=ESREHBER.fields[0].asstring;

////// HESAPLAMA BÖLÜMÜ //////
Form3.Filitre.close;
Form3.Filitre.sql.clear;
Form3.Filitre.sql.add('SELECT ESTOK_KODU,ESTOK_ADI,');
Form3.Filitre.sql.add('SUM(CASE WHEN EGCTIP='+#39+'G'+#39+' then ESTHAR_GCMIK else 0 end) [GTOP],');
Form3.Filitre.sql.add('SUM(CASE WHEN EGCTIP='+#39+'C'+#39+' then ESTHAR_GCMIK else 0 end) [CTOP],');
Form3.Filitre.sql.add('SUM((CASE WHEN EGCTIP='+#39+'G'+#39+' then ESTHAR_GCMIK else 0 end)-(CASE WHEN EGCTIP='+#39+'C'+#39+' then ESTHAR_GCMIK else 0 end)) [KTOP]');
Form3.Filitre.sql.add('FROM TBLEMANET WHERE ECARI_KOD='+#39+''+Form3.DBEdit1.text+''+#39+'');
Form3.Filitre.sql.add('AND ESTOK_KODU='+#39+''+Form3.DBEdit6.text+''+#39+'');
Form3.Filitre.sql.add('GROUP BY ESTOK_KODU,ESTOK_ADI');
Form3.Filitre.open;
Form3.Edit3.Text:=form3.Filitre.Fields[2].asstring;
Form3.Edit4.Text:=form3.Filitre.Fields[3].asstring;
Form3.Edit5.Text:=form3.Filitre.Fields[4].asstring;
Form4.Close;
end;
alanlar olmadığı için aktarmıyor ve hata alıyorum
"List İndex out of Bounds (2) " hatası veriyor. Bunu nasıl aşabilirim Kod da yardımcı olabilecek misiniz?
ozcank
Üye
Mesajlar: 929
Kayıt: 28 Nis 2005 05:29

Re: GROUP BY Kullanımı

Mesaj gönderen ozcank »

Bu şekilde bir kod düzenledim ama yine gruplamadı ESTOK_KODU ve ESTOK_ADI nı gruplamam lazım koda bakabilir misiniz ? yada nasıl bir şey yapmalıyım ?

Kod: Tümünü seç

Form4.ESRehber.Close;
Form4.ESRehber.SQL.Clear;
Form4.ESRehber.SQL.Add('SELECT A1.ESTOK_KODU,A1.ESTOK_ADI,A1.ESTHAR_TARIH,A1.EFISNO,A1.EFIS_NO,A1.EGCTIP,A1.EOLCU_BR1,A1.EBARKOD1 ');
Form4.ESRehber.SQL.Add('FROM TBLEMANET A1 ');
Form4.ESRehber.SQL.Add('WHERE A1.ESTOK_KODU=(SELECT TOP 1 A2.ESTOK_KODU ');
Form4.ESRehber.SQL.Add('FROM TBLEMANET A2 WHERE A1.ESTOK_ADI=A2.ESTOK_ADI ');
Form4.ESRehber.SQL.Add('AND EGCTIP='+#39+'G'+#39+' AND ECARI_KOD='+QuotedStr(Form3.DBEdit1.text));
Form4.ESRehber.SQL.Add('ORDER BY A1.ESTOK_KODU , A2.ESTOK_ADI DESC)');
Form4.ESRehber.Open;
form4.ESRehber.Active:=True;
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: GROUP BY Kullanımı

Mesaj gönderen tayipk »

Kod: Tümünü seç

SELECT A1.ESTOK_KODU,A1.ESTOK_ADI,A1.ESTHAR_TARIH,A1.EFISNO,A1.EFIS_NO,A1.EGCTIP,A1.EOLCU_BR1,A1.EBARKOD1
burdaki alanlardan A1.ESTHAR_TARIH,A1.EFISNO,A1.EFIS_NO,A1.EGCTIP,A1.EOLCU isimli alnlardaki bilgilerin birbirine eş olması sözkonusu değil diye düşünüyorum haliyle bu alanlarla grup yapman malesefki imkansız görünüyor.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
ozcank
Üye
Mesajlar: 929
Kayıt: 28 Nis 2005 05:29

Re: GROUP BY Kullanımı

Mesaj gönderen ozcank »

Peki DBGrid1 de ilk önce liste alıyorum burda sorun yok stok hareket ekranına aktarmak için cift tıklıyorum burda alanlara ihtiyacım oluyor.Buraya nasıl bir çözüm yapabiliriz?

Kod: Tümünü seç

procedure TForm4.DBGrid1DblClick(Sender: TObject);
begin
 Form3.DBEdit8.text  :=Form3.EKAYIT.fieldbyname('EFIS_NO').text;
 Form3.DBEdit5.Text  :=ESRehber.fields[2].asstring;
 Form3.DBEdit3.Text  :=ESRehber.fields[3].asstring;
 Form3.DBEdit6.Text  :=ESRehber.fields[0].asstring;
 Form3.DBEdit7.Text  :=ESRehber.fields[1].asstring;
 Form3.DBEdit9.Text  :=ESRehber.fields[6].asstring;
 Form3.DBEdit10.Text :=ESRehber.fields[7].asstring;
 Form3.Edit9.Text    :=ESRehber.fields[0].asstring;

////// HESAPLAMA BÖLÜMÜ //////
Form3.Filitre.close;
Form3.Filitre.sql.clear;
Form3.Filitre.sql.add('SELECT ESTOK_KODU,ESTOK_ADI,');
Form3.Filitre.sql.add('SUM(CASE WHEN EGCTIP='+#39+'G'+#39+' then ESTHAR_GCMIK else 0 end) [GTOP],');
Form3.Filitre.sql.add('SUM(CASE WHEN EGCTIP='+#39+'C'+#39+' then ESTHAR_GCMIK else 0 end) [CTOP],');
Form3.Filitre.sql.add('SUM((CASE WHEN EGCTIP='+#39+'G'+#39+' then ESTHAR_GCMIK else 0 end)-(CASE WHEN EGCTIP='+#39+'C'+#39+' then ESTHAR_GCMIK else 0 end)) [KTOP]');
Form3.Filitre.sql.add('FROM TBLEMANET WHERE ECARI_KOD='+#39+''+Form3.DBEdit1.text+''+#39+'');
Form3.Filitre.sql.add('AND ESTOK_KODU='+#39+''+Form3.DBEdit6.text+''+#39+'');
Form3.Filitre.sql.add('GROUP BY ESTOK_KODU,ESTOK_ADI');
Form3.Filitre.open;
Form3.Edit3.Text:=form3.Filitre.Fields[2].asstring;
Form3.Edit4.Text:=form3.Filitre.Fields[3].asstring;
Form3.Edit5.Text:=form3.Filitre.Fields[4].asstring;
Form4.Close;
end;
ozcank
Üye
Mesajlar: 929
Kayıt: 28 Nis 2005 05:29

Re: GROUP BY Kullanımı

Mesaj gönderen ozcank »

Arkadaşlar ben çözemedim yardımcı olur musunuz? Şu şekilde anlatayım;
Form3 de "Stok Rehber" Button var ve buna tıkladığımda Kod şu şekilde çalışıyor;

Kod: Tümünü seç

Form4.ESRehber.Close;
Form4.ESRehber.SQL.Clear;
Form4.ESRehber.SQL.Add('SELECT ESTOK_KODU,ESTOK_ADI FROM TBLEMANET WHERE EGCTIP='+#39+'G'+#39+' AND ECARI_KOD='+QuotedStr(Form3.DBEdit1.text));
Form4.ESRehber.SQL.Add('GROUP BY ESTOK_KODU,ESTOK_ADI');
Form4.ESRehber.Open;
Form4.ESRehber.Active:=True;
"Form4" deki DBGrid1 ' e "Stok Kodu" ve "Stok Adı" istediğim gibi group yaparak listeliyor buraya kadar sorun yok . DBGrid1 de istediğim kayıt üzerinde tıkladığımda ise şu kod çalışıyor ve "Form3" e ilgili alanları aktarıyor sorunda burda başlıyor kod şöyle;

Kod: Tümünü seç


 Form3.DBEdit8.text  :=Form3.EKAYIT.fieldbyname('EFIS_NO').text;
 Form3.DBEdit5.Text  :=ESRehber.fields[2].asstring;
 Form3.DBEdit3.Text  :=ESRehber.fields[3].asstring;
 Form3.DBEdit6.Text  :=ESRehber.fields[0].asstring;
 Form3.DBEdit7.Text  :=ESRehber.fields[1].asstring;
 Form3.DBEdit9.Text  :=ESRehber.fields[6].asstring;
 Form3.DBEdit10.Text :=ESRehber.fields[7].asstring;
 Form3.Edit9.Text    :=ESRehber.fields[0].asstring;

Fields alanlarını bulamıyor şöyle olsaydı buluyor ama bu sefer "GROUP BY" devre dışı kalıyor;

Kod: Tümünü seç

ESRehber.Close;
ESRehber.SQL.Clear;
ESRehber.SQL.Add('SELECT ESTOK_KODU, ESTOK_ADI, ESTHAR_TARIH, EFISNO,EFIS_NO, EGCTIP, EOLCU_BR1, EBARKOD1 ');
ESRehber.SQL.Add('FROM TBLEMANET ');
ESRehber.SQL.Add('WHERE EGCTIP='+#39+'G'+#39+' AND ECARI_KOD='+QuotedStr(Form3.DBEdit1.text));
ESRehber.Open;
ESRehber.Active:=True;

Yardımcı olur musunuz?
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: GROUP BY Kullanımı

Mesaj gönderen tayipk »

bu konuyu daha öncede sizinle paylaşmıştım bu şekilde gruplama olmaz "Form4.ESRehber.SQL.Add('SELECT ESTOK_KODU,ESTOK_ADI FROM TBLEMANET WHERE EGCTIP='+#39+'G'+#39+' AND " koduylada fiwldlar olmaz. burda yapacağınız şey eğer illa aktarmak ise birden fazla query ile çalışıp kodlamanızı biraz genişletmek örn. dbgirde tıklayınca istediğiniz alanları direkt olarak rehber querysinden değilde farklı bir query çalıştırıp o query üzerinden rehber querysindeki stok?koduna eşit olanları aktarım yaparsanız ancak öyle çözüm kavuşabilirsiniz.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
ozcank
Üye
Mesajlar: 929
Kayıt: 28 Nis 2005 05:29

Re: GROUP BY Kullanımı

Mesaj gönderen ozcank »

Tayipk kardeşim dediğin gibi yaptım fakat bu sefer ESTAktar ile ESRehber deki stok kaydı farklı geliyor ;

Kod: Tümünü seç

ESTAktar.Close;
ESTAktar.SQL.Clear;
ESTAktar.SQL.Add('SELECT ESTOK_KODU, ESTOK_ADI, ESTHAR_TARIH, EFISNO,EFIS_NO, EGCTIP, EOLCU_BR1, EBARKOD1 ');
ESTAktar.SQL.Add('FROM TBLEMANET ');
ESTAktar.SQL.Add('WHERE EGCTIP='+#39+'G'+#39+' AND ECARI_KOD='+QuotedStr(Form3.DBEdit1.text));
ESTAktar.Open;
ESTAktar.Active:=True;

ShowMessage (DBEdit1.Text);
ShowMessage (ESTAktar.fields[0].asstring);


If DBEdit1.Text=ESTAktar.fields[0].asstring Then
Begin
ShowMessage (DBEdit1.Text);
ShowMessage (ESTAktar.fields[0].asstring);

 Form3.DBEdit8.text  :=Form3.EKAYIT.fieldbyname('EFIS_NO').text;
 Form3.DBEdit5.Text  :=ESTAktar.fields[2].asstring;
 Form3.DBEdit3.Text  :=ESTAktar.fields[3].asstring;
 Form3.DBEdit6.Text  :=ESTAktar.fields[0].asstring;
 Form3.DBEdit7.Text  :=ESTAktar.fields[1].asstring;
 Form3.DBEdit9.Text  :=ESTAktar.fields[6].asstring;
 Form3.DBEdit10.Text :=ESTAktar.fields[7].asstring;
 Form3.Edit9.Text    :=ESTAktar.fields[0].asstring;

////// HESAPLAMA BÖLÜMÜ //////
Form3.Filitre.close;
Form3.Filitre.sql.clear;
Form3.Filitre.sql.add('SELECT ESTOK_KODU,ESTOK_ADI,');
Form3.Filitre.sql.add('SUM(CASE WHEN EGCTIP='+#39+'G'+#39+' then ESTHAR_GCMIK else 0 end) [GTOP],');
Form3.Filitre.sql.add('SUM(CASE WHEN EGCTIP='+#39+'C'+#39+' then ESTHAR_GCMIK else 0 end) [CTOP],');
Form3.Filitre.sql.add('SUM((CASE WHEN EGCTIP='+#39+'G'+#39+' then ESTHAR_GCMIK else 0 end)-(CASE WHEN EGCTIP='+#39+'C'+#39+' then ESTHAR_GCMIK else 0 end)) [KTOP]');
Form3.Filitre.sql.add('FROM TBLEMANET WHERE ECARI_KOD='+#39+''+Form3.DBEdit1.text+''+#39+'');
Form3.Filitre.sql.add('AND ESTOK_KODU='+#39+''+Form3.DBEdit6.text+''+#39+'');
Form3.Filitre.sql.add('GROUP BY ESTOK_KODU,ESTOK_ADI');
Form3.Filitre.open;
Form3.Edit3.Text:=form3.Filitre.Fields[2].asstring;
Form3.Edit4.Text:=form3.Filitre.Fields[3].asstring;
Form3.Edit5.Text:=form3.Filitre.Fields[4].asstring;
Form4.Close;
ozcank
Üye
Mesajlar: 929
Kayıt: 28 Nis 2005 05:29

Re: GROUP BY Kullanımı

Mesaj gönderen ozcank »

kodu düzenleyebilir misin?
ozcank
Üye
Mesajlar: 929
Kayıt: 28 Nis 2005 05:29

Re: GROUP BY Kullanımı

Mesaj gönderen ozcank »

Arkadaşlar; Ben kodu bir türlü uyarlayamadım ne yaptıysam olmadı yardımcı olabilecek misiniz?
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: GROUP BY Kullanımı

Mesaj gönderen tayipk »

şimdi ozcank kardeşim sana şöyle bir yöntem önerecem. formumuzda Qry1,Qry2 ve Qry3 adında 3 tane query miz olsun. bir tane datasource olacak bunun dataseti Qry1 olacak. dbgrid datasource1 e bağalanacak. ve dbgridin oncellclick yada onclick hangisi varsa oraya aşağıdaki gibi bir mantık yaparsan sorununun çözüleceğini düşünüyorum.

önce dbgride cellclick yapınca Qry2 de o stok koduna ait hareketleri listeleyecez. Tablo adını stok yapıyorum kendine göre düzenlersin.

Kod: Tümünü seç

Qry2.close;
Qry2.sql.clear;
Qry2.sql.text:='select * from stok where stok_kodu='''+QRY1stok_kodu.asstring+'''';
Qry2.open;
şimdi yukarıdaki koddan anlaşılacağı gibi stok tablomdan QRY1 deki stok_koduna eşit olan hareketleri QRY2 ye çektim. buraya kadar tamam sanırım. şimdi yapmamız gereken döngüye girerek QRY2 içindeki bütün bilgileri QRY3 te istediğimiz tabloya aktarmak.öncelikle senin yerinde olsam QRY3 teki sql string bölümünde hangi tabloda iş yapacaksam onu çağırır Query me fieldları ekler o şekilde kodlarım çünkü rahatlık olur senin için.bu şekilde yapacağını düşünerek devam ediyorum. bir button koy ve onclick olayına

Kod: Tümünü seç

begin
while not QRY2.EOF do
begin
QRY3.Open;
QRY3.insert;
QRY3stok_kodu.asstring:=QRY2stok_kodu.asstring;
...
...
...
...
QRY3.Post;
end;
Showmessage('AKTARIM TAMAMLANMIŞTIR TEBRİKLER :) ');
end;
hepsi bu kadar. kolay gelsin.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
ozcank
Üye
Mesajlar: 929
Kayıt: 28 Nis 2005 05:29

Re: GROUP BY Kullanımı

Mesaj gönderen ozcank »

Tayipk kardeşim aslında ben hareket listelemeyecem olayım çok basit ama çok karıştırdım içinden çıkamadım şöyle;
Bir tane DBGrid1 var buna Stok Listesi alıyorum rehber kullanmak için kodu şöyle;

Kod: Tümünü seç

procedure TForm4.FormActivate(Sender: TObject);
begin
ESRehber.Close;
ESRehber.SQL.Clear;
ESRehber.SQL.Add('SELECT ESTOK_KODU,ESTOK_ADI FROM TBLEMANET WHERE EGCTIP='+#39+'G'+#39+' AND ECARI_KOD='+QuotedStr(Form3.DBEdit1.text));
ESRehber.SQL.Add('GROUP BY ESTOK_KODU,ESTOK_ADI');
ESRehber.Open;
ESRehber.Active:=True;
buraya kadar herşey tamam istediğim gibi liste alıyorum fakat DBGRid1 e cift tıkladığımda şu kod çalışıyor ve alanları bulamadığı için hata alıyorum ;

Kod: Tümünü seç

procedure TForm4.DBGrid1DblClick(Sender: TObject);
begin
ESTAktar.Close;
ESTAktar.SQL.Clear;
ESTAktar.SQL.Add('SELECT ESTOK_KODU, ESTOK_ADI, ESTHAR_TARIH, EFISNO,EFIS_NO, EGCTIP, EOLCU_BR1, EBARKOD1 ');
ESTAktar.SQL.Add('FROM TBLEMANET ');
ESTAktar.SQL.Add('WHERE EGCTIP='+#39+'G'+#39+' AND ECARI_KOD='+QuotedStr(Form3.DBEdit1.text));
ESTAktar.Open;
ESTAktar.Active:=True;

while not ESTAktar.EOF do
begin
ESRehber.Open;
ESRehber.insert;
ESRehberESTOK_KODU.AsString:=ESTAktarESTOK_KODU.AsString;
 Form3.DBEdit5.Text  :=ESRehber.fields[2].asstring;
 Form3.DBEdit3.Text  :=ESRehber.fields[3].asstring;
 Form3.DBEdit6.Text  :=ESRehber.fields[0].asstring;
 Form3.DBEdit7.Text  :=ESRehber.fields[1].asstring;
 Form3.DBEdit9.Text  :=ESRehber.fields[6].asstring;
 Form3.DBEdit10.Text :=ESRehber.fields[7].asstring;
 Form3.Edit9.Text    :=ESRehber.fields[0].asstring;
ESRehber.Post;
end;
2 tane ADOquery var 1 . ESREHBER 2.ESTAKTAR
Sadece bu kadar bu kodlara müdahele edersen çok sevinecem.
Cevapla