Query Sorgu

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

Query Sorgu

Mesaj gönderen ozcank »

Arkadaşlar bu şekilde sorgum var ve DBGrid2 yi ortak kullanıyorum ama bir türlü ayrıştıramadım yardım ederseniz çok sevinirim.

Kod: Tümünü seç

       if RadioButton8.Checked then
      If Edit1.Text='' Then
Begin
Query2.Active:=False;
ShowMessage('Lütfen Ürünün Seri Nosunu Boş Geçmeyiniz !!! ');
Edit1.Setfocus;
Exit;
end
else
begin
DataSource2.DataSet.close;
DataSource2.DataSet:=Query2;
Query2.Sql.Clear;
Query2.Sql.Add('Select * From ROKAYIT');
Query2.Sql.Add('Where ROMONTAJTAR Between :SERTAR15 AND :SERTAR16 AND ROSERINO=:ROSERIYAZ');
Query2.ParamByName('ROSERIYAZ').AsString:=Edit1.Text;
Query2.ParamByName('SERTAR15').AsDate:=DateTimePicker1.date;
Query2.ParamByName('SERTAR16').AsDate:=DateTimePicker2.Date;
       end;
Query2.Active:=true;
DataSource2.DataSet.Open;
DBGrid2.DataSource:=DataSource2;
Label4.Caption:=IntToStr(Query2.RecordCount);

// Depo Giriş
       if RadioButton9.Checked Then
        if Edit1.Text='' then
        begin
DataSource3.DataSet.close;
DataSource3.DataSet:=Query3;
Query3.Sql.Clear;
Query3.Sql.Add('Select * From DEPOGIRIS');
Query3.Sql.Add('Where DEPOTARIH Between :SERTAR17 AND :SERTAR18');
Query3.ParamByName('SERTAR17').AsDate:=DateTimePicker1.date;
Query3.ParamByName('SERTAR18').AsDate:=DateTimePicker2.Date;
       end;
Query3.Active:=true;
DataSource3.DataSet.Open;
DBGrid2.DataSource:=DataSource3;
Label4.Caption:=IntToStr(Query3.RecordCount);
end;
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

ayrıştırmaktan kastın nedir? ne yapmak istediğini anlayamadığımdan cevap yazamıyorum.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

1 Tane DBGrid2 var ve iki tane sorgum var RadioButton8 ve 9
RadioButton8 e bastığım zaman rapor aldığımda DBGrid2 e rapor alıyor,
RadioButton9 a bastığım zaman rapor aldığımda yine DBGrid2 ye rapor alıyor fakat ben ikisine ayrı ayrı rapor alamadım sorgular birbirine karışıyor.

RadioButton8 e bastığımda şu sorgu DBGrid2 e rapor almalı;

Kod: Tümünü seç

       if RadioButton8.Checked then 
      If Edit1.Text='' Then 
Begin 
Query2.Active:=False; 
ShowMessage('Lütfen Ürünün Seri Nosunu Boş Geçmeyiniz !!! '); 
Edit1.Setfocus; 
Exit; 
end 
else 
begin 
DataSource2.DataSet.close; 
DataSource2.DataSet:=Query2; 
Query2.Sql.Clear; 
Query2.Sql.Add('Select * From ROKAYIT'); 
Query2.Sql.Add('Where ROMONTAJTAR Between :SERTAR15 AND :SERTAR16 AND ROSERINO=:ROSERIYAZ'); 
Query2.ParamByName('ROSERIYAZ').AsString:=Edit1.Text; 
Query2.ParamByName('SERTAR15').AsDate:=DateTimePicker1.date; 
Query2.ParamByName('SERTAR16').AsDate:=DateTimePicker2.Date; 
       end; 
Query2.Active:=true; 
DataSource2.DataSet.Open; 
DBGrid2.DataSource:=DataSource2; 
Label4.Caption:=IntToStr(Query2.RecordCount); 
RadioButton9 a bastığım zaman bu sorguda yine DBGrid2 rapor almalı;

Kod: Tümünü seç

       if RadioButton9.Checked Then 
        if Edit1.Text='' then 
        begin 
DataSource3.DataSet.close; 
DataSource3.DataSet:=Query3; 
Query3.Sql.Clear; 
Query3.Sql.Add('Select * From DEPOGIRIS'); 
Query3.Sql.Add('Where DEPOTARIH Between :SERTAR17 AND :SERTAR18'); 
Query3.ParamByName('SERTAR17').AsDate:=DateTimePicker1.date; 
Query3.ParamByName('SERTAR18').AsDate:=DateTimePicker2.Date; 
       end; 
Query3.Active:=true; 
DataSource3.DataSet.Open; 
DBGrid2.DataSource:=DataSource3; 
Label4.Caption:=IntToStr(Query3.RecordCount); 
end; 
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

dbgird kullanmadım ama şu şekilde özellikleri olmalı.
grid.clearitems yada grid.columns.clearitems yada grid.columns.clear;
data'yı atadıktan sonrada
grid.getitems yada grid.columns.getitems;

bu özellikler data kontroller içindede olabilir.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

baktım ama bu şekilde olmadı.
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Mesaj gönderen Ancestor »

Kod: Tümünü seç

if radiobutton8.checked = true then 
......
......
......

if radiobutton9.checked = true then
.......
.......
.......
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
sanırım sorun begin end bloklarında
kodu refoktör edersen sorun ortadan kalkar gibime geliyor.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

peki bunu nasıl düzeltirim?
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »


if RadioButton9.Checked Then
merhaba bu kod satırından sonra begin kullansan diyorum. benimde checkbox lar ile böyle bir uygulamam var checkbox ile sorgulamaları değiştiriyorum fakat aynı tabloda farkımız burda.

genelde checkboxları kontrol ettiriyorum eğer check edilmiş olan yoksa application.messagebox ile uyarı verdiriyorum ve end else begin ile devam ediyorum. her if satırında begin kullanıyorum böylelikle sorguları yapabiliyorum. sizde if satırlarının sonuda begin kullanmayı deneseniz belki çözüm olur.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
ozcank yazdı: peki bunu nasıl düzeltebilirim
arkadaş bu kadar hazırcılığa alışma...
kodlarını düzenli yaz. begin nerde başlıyor nerde bitiyor belli olsun.
hangi else hangi ifin belli olsun.
bakınca anlaşılsın.

Kod: Tümünü seç

if RadioButton8.Checked then
begin
  If Edit1.Text='' Then
  Begin
     ...........
  end
  else
  begin
    ...............
  end;
  .............
end

// Depo Giriş
if RadioButton9.Checked Then
Begin
  if Edit1.Text='' then
  begin
     ............
  end
  else
  begin
    ................
  end
  ..........
end 
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Hazırcılık değil üzerine çok uğraştım en son yapamayınca mesaj yazdım
yapmak istediğim DBGrid2 de iki tane Query2 ve Query3 sorgusunu çalıştırmak istiyorum ve ayarlarınıda yaptım şimdi tek takıldığım yer bu kodlar nereye ne yaptıysam olmadı.
Şöyle ;

DBGrid2 de hem ROKAYIT hemde DEPOGIRIS listelenecek RadioButton8
ve RadioButton9 kodları aşağıdaki gibi fakat bu şekilde çalışmıyor RadioButton8 e bastığımda RadioButton9 karışıyor. Kodlarım bu şekilde ;
Karışmaması için ne yapabilirim?

Kod: Tümünü seç

   If Edit1.Text='' Then 
Begin 
Query2.Active:=False; 
ShowMessage('Lütfen Ürünün Seri Nosunu Boş Geçmeyiniz !!! '); 
Edit1.Setfocus; 
Exit; 
end 
else 
begin 
Query2.Sql.Clear; 
Query2.Sql.Add('Select * From ROKAYIT'); 
Query2.Sql.Add('Where ROMONTAJTAR Between :SERTAR15 AND :SERTAR16 AND ROSERINO=:ROSERIYAZ'); 
Query2.ParamByName('ROSERIYAZ').AsString:=Edit1.Text; 
Query2.ParamByName('SERTAR15').AsDate:=DateTimePicker1.date; 
Query2.ParamByName('SERTAR16').AsDate:=DateTimePicker2.Date; 
       end; 
Query2.Active:=true; 
Label4.Caption:=IntToStr(Query2.RecordCount); 

  if RadioButton9.Checked Then 
        if Edit1.Text='' then 
        begin 
Query3.Sql.Clear; 
Query3.Sql.Add('Select * From DEPOGIRIS'); 
Query3.Sql.Add('Where DEPOTARIH Between :SERTAR17 AND :SERTAR18'); 
Query3.ParamByName('SERTAR17').AsDate:=DateTimePicker1.date; 
Query3.ParamByName('SERTAR18').AsDate:=DateTimePicker2.Date; 
       end; 
Query3.Active:=true; 
Label4.Caption:=IntToStr(Query3.RecordCount); 
end; 
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

gönderdiğim kod yapısına bi bak. bide kendi gönderdiğin kodlara bak.
begin nerde başlamış nerde bitmiş belli değil
end koymuşsun ama neyin endi. else hangi ifin elsesi.
bunları düzgün bi şekilde yazarsan eminim kim radiobutton 9 dan sonra yazdığın kodların her zaman çalıştığını göreceksin ve begin end leri düzeltip rahatlayacaksın.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Arkadaşlar sorgum bu şekilde çalıştı ve gönderiyorum eğer yanlışım varsa da düzeltirseniz çok sevinirim.

Kod: Tümünü seç

       if RadioButton8.Checked then
Begin
      If Edit1.Text='' Then
Begin
Query2.Active:=False;
ShowMessage('Lütfen Ürünün Seri Nosunu Boş Geçmeyiniz !!! ');
Edit1.Setfocus;
Exit;
end
else
begin
DataSource2.DataSet.close;
DataSource2.DataSet:=Query2;
DataSource2.DataSet.Open;
DBGrid2.DataSource:=DataSource2;
Query2.Sql.Clear;
Query2.Sql.Add('Select * From ROKAYIT');
Query2.Sql.Add('Where ROMONTAJTAR Between :SERTAR15 AND :SERTAR16 AND ROSERINO=:ROSERIYAZ');
Query2.ParamByName('ROSERIYAZ').AsString:=Edit1.Text;
Query2.ParamByName('SERTAR15').AsDate:=DateTimePicker1.date;
Query2.ParamByName('SERTAR16').AsDate:=DateTimePicker2.Date;
       end;
       end;
Query2.Active:=true;
Label4.Caption:=IntToStr(Query2.RecordCount);

// Depo Giriş
       if RadioButton9.Checked Then
Begin
        if Edit1.Text='' then
Begin
DataSource3.DataSet.close;
DataSource3.DataSet:=Query3;
DataSource3.DataSet.Open;
DBGrid2.DataSource:=DataSource3;
Query3.Sql.Clear;
Query3.Sql.Add('Select * From DEPOGIRIS');
Query3.Sql.Add('Where DEPOTARIH Between :SERTAR17 AND :SERTAR18');
Query3.ParamByName('SERTAR17').AsDate:=DateTimePicker1.date;
Query3.ParamByName('SERTAR18').AsDate:=DateTimePicker2.Date;
       end;
       end;
Query3.Active:=true;
Label4.Caption:=IntToStr(Query3.RecordCount);
end;
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Kod: Tümünü seç

if RadioButton8.Checked then
Begin
  If Edit1.Text='' Then
  Begin
    Query2.Active:=False;
    ShowMessage('Lütfen Ürünün Seri Nosunu Boş Geçmeyiniz !!! ');
    Edit1.Setfocus;
    Exit;
  end
  else 
  begin
    DataSource2.DataSet.close;
    DataSource2.DataSet:=Query2;
    DataSource2.DataSet.Open;
    DBGrid2.DataSource:=DataSource2;
    Query2.Sql.Clear;
    Query2.Sql.Add('Select * From ROKAYIT');
    Query2.Sql.Add('Where ROMONTAJTAR Between :SERTAR15 AND       
                                        :SERTAR16 AND ROSERINO=:ROSERIYAZ');
    Query2.ParamByName('ROSERIYAZ').AsString:=Edit1.Text;
    Query2.ParamByName('SERTAR15').AsDate:=DateTimePicker1.date;
    Query2.ParamByName('SERTAR16').AsDate:=DateTimePicker2.Date;
  end;
end;
  Query2.Active:=true;
  Label4.Caption:=IntToStr(Query2.RecordCount);

// Depo Giriş
     if RadioButton9.Checked Then
     Begin
        if Edit1.Text='' then
        Begin
          DataSource3.DataSet.close;
          DataSource3.DataSet:=Query3;
          DataSource3.DataSet.Open;
          DBGrid2.DataSource:=DataSource3;
          Query3.Sql.Clear;
          Query3.Sql.Add('Select * From DEPOGIRIS');
          Query3.Sql.Add('Where DEPOTARIH Between :SERTAR17 AND  
                                                                     :SERTAR18');
          Query3.ParamByName('SERTAR17').AsDate:=
                                                                  DateTimePicker1.date;
          Query3.ParamByName('SERTAR18').AsDate:=
                                                                  DateTimePicker2.Date;
        end;
      end;
          Query3.Active:=true;
          Label4.Caption:=IntToStr(Query3.RecordCount);
end; 
@ozcank öncelikle sorunun hallolduğuna sevindim. Aslangeri' nin bahsettiği tekniği gözardı ettiğini zannediyorum ama bizim için muhakkak faydalı bir durum ve bunu delphi yi yazanlarda istiyor öneriyor. Sitede bu kod yazım tekniklerini anlatan bölüm vardı diye hatırlıyorum araştırırsan ve buna göre kodlarını yazarsan ileride sen ve seni takip edenler rahat edecektir. Nasıl başlarsan öyle gidiyor çünkü. baştan sıkı tutmak lazım. Yukarıda biraz düzenlemeye çalıştım gerçek ustaların gibi olmadı ama bilmişlikte yapmak isetimiyorum.

Başarılarının devamı dileği ile kolay gelsin.
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Cevapla