SQL Raporlama

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

SQL Raporlama

Mesaj gönderen ozcank »

Arkadaşlar;
DB ye kayıtlı BAKIM alanlarım var BAKIM1,BAKIM2,BAKIM3,BAKIM4,BAKIM5 ve FALSE ve TRUE değerini alıyor bu alanları nasıl raporuma dahil edebilirim? CheckBox2 yerleştirdim forma işaretli ise TRUE işaretsiz ise FALSE değerlerini listeleyecek yardım ederseniz sevinirim.


if RadioButton1.Checked or CheckBox2.Checked Then
Begin
Query1.Sql.Clear;
Query1.Sql.Add('Select * From ROKAYIT');
Query1.Sql.Add('Where RO5BAKTAR Between :ILK5TAR AND :SON5TAR OR BAKIM1=:FALSE');
Query1.ParamByName('ILK5TAR').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SON5TAR').AsDate:=DateTimePicker2.Date;
end;
Query1.Active:=true;
if RadioButton2.Checked then
Kullanıcı avatarı
spoke25
Üye
Mesajlar: 434
Kayıt: 16 May 2005 04:06
Konum: Bolu

Mesaj gönderen spoke25 »

Yapmak istediğinden ben birşey anlamadım.. istersen daha baska bir anlatım ile sorununu genişlet
Başlayan Herşey Birgün Bitmek Zorundadır.
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Aşağıdaki kodu inceleyerek istediğin gibi bir kod oluşturabilirsin.

Kod: Tümünü seç

var 
  Cumle : AnsiString; 
begin 
  if (dxCheckEdit1.Checked = True) or (dxCheckEdit2.Checked = True) or (dxCheckEdit3.Checked = True) or (dxCheckEdit4.Checked = True) or (dxCheckEdit5.Checked = True) Then 
    Begin 
      Cumle := 'Select * From mafbilgileri where id is not null'; 
      if dxCheckEdit1.Checked Then Cumle := Cumle+' and (faturatarihi between :ilk and :son)'; 
      if dxCheckEdit2.Checked Then Cumle := Cumle+' and (faturano=:faturano)'; 
      if dxCheckEdit3.Checked Then Cumle := Cumle+' and (cunvan=:cunvan)'; 
      if dxCheckEdit4.Checked Then Cumle := Cumle+' and (vtarihi between :bas and :sn)'; 
      if dxCheckEdit5.Checked Then Cumle := Cumle+' and (odemedurumu=:odemedurumu)'; 
      cumle := Cumle+' order by faturatarihi asc'; 

      with flistetable do 
        Begin 
          Close; 
          SQL.Clear; 
          SQL.Add(Cumle); 

          if dxCheckEdit1.Checked = True Then 
            Begin 
              ParamByName('ilk').AsDate := dxDateEdit1.Date; 
              ParamByName('son').AsDate := dxDateEdit2.Date; 
            End; 
          if dxCheckEdit2.Checked = True Then 
            Begin 
              ParamByName('faturano').AsString := dxEdit1.Text; 
            End; 
          if dxCheckEdit3.Checked = True Then 
            Begin 
              ParamByName('cunvan').AsString := RxDBLookupCombo1.Text; 
            End; 
          if dxCheckEdit4.Checked = True Then 
            Begin 
              ParamByName('bas').AsDate := dxDateEdit3.Date; 
              ParamByName('sn').AsDate := dxDateEdit4.Date; 
            End; 
          if dxCheckEdit5.Checked = True Then 
            Begin 
              if RadioButton1.Checked = True Then 
                Begin 
                  ParamByName('odemedurumu').AsString := 'Ödendi' 
                End Else ParamByName('odemedurumu').AsString := 'Ödenmedi'; 
            End; 
          Active := True; 
        End; 
    End Else Gerigetir;
Kolay gelsin... ;)
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

şöyle izah edeyim
DB de kayıtlı BAKIM1 var ve kaydederken FALSE veya TRUE olarak kaydediyor.Bende rapor alırken sorgu alanıma CheckBox2 işaretli ise TRUE işaretsiz ise FALSE olanları listelemek istiyorum ;


if RadioButton1.Checked or CheckBox2.Checked Then
Begin
Query1.Sql.Clear;
Query1.Sql.Add('Select * From ROKAYIT');
Query1.Sql.Add('Where RO5BAKTAR Between :ILK5TAR AND :SON5TAR OR BAKIM1=:FALSE');
Query1.ParamByName('ILK5TAR').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SON5TAR').AsDate:=DateTimePicker2.Date;
end;
Query1.Active:=true;
if RadioButton2.Checked then
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

biltes size çok teşekküğr ederim yardımlarınızdan dolayı fakat ben bu alandaki değişikliği yapmak istiyorum ;

Query1.Sql.Add('Where RO5BAKTAR Between :ILK5TAR AND :SON5TAR OR CheckBox2.Checked=BAKIM1');

BAKIM1 DB de FALSE veya TRUE değerini alıyor ben sorguda CheckBox2 işaretli ise TRUE işaretsiz ise FALSE olan listeyi almak istiyorum.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Arkadaşlar ;
Sorguyu nasıl değiştirebilirim DB de BAKIM1 alanım var bu alana FALSE ve TRUE olarak kayıt yapıyorum ve liste alırken BAKIM1 i TRUE veya FALSE ye eşitleyerek liste almalıyım yardım ederseniz sevinirim.

Ben CheckBox2 yerleştirdim forma işaretli ise TRUE işaretsiz ise FALSE yapmak istedim ama olmadı.

Query1.Sql.Add('Where RO5BAKTAR Between :ILK5TAR AND :SON5TAR OR CheckBox2.Checked=BAKIM1');
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Hocam sorunuzda aslında cevabı vermişsiniz ama hatalı yazmışsınız. Aşağıdaki şekilde bir denermisiniz..

Kod: Tümünü seç

case Radiogroup1.Itemindex of
  0 : Begin
         Query1.Sql.Clear; 
         Query1.Sql.Add('Select * From ROKAYIT'); 
         Query1.Sql.Add('Where RO5BAKTAR Between :ILK5TAR AND :SON5TAR OR BAKIM1=:FALSE'); 
         Query1.ParamByName('ILK5TAR').AsDate:=DateTimePicker1.date; 
        Query1.ParamByName('SON5TAR').AsDate:=DateTimePicker2.Date; 
        Query1.Active:=true; 
       End;
  1 : Begin
       //Bir seçili ise gerekli işlemi yap gibi...
       End;
Umarım size yardımcı olur. Kolay gelsin... :roll:
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Aslında sorgu alanım sadece o kadar değil alttarafa doğru çok tanım var fakat bu satır içerisinde hem FALSE hemde TRUE nasıl cözerim CheckBox2 ye bağlayabilirmiyim;İşaretliyse TRUE işaretsizse FALSE
gibi.Veya bu satırda başka nasıl bir alternatifim olur? Yardım ederseniz çok sevinirim.



Query1.Sql.Add('Where RO5BAKTAR Between :ILK5TAR AND :SON5TAR OR CheckBox2.Checked=BAKIM1');
poshet303
Üye
Mesajlar: 235
Kayıt: 26 Eki 2005 01:15

Mesaj gönderen poshet303 »

Yazdıklarınız biraz karışık anladığım kadarıyla yazayım.

Kod: Tümünü seç

Var
 WhereStatement:String;
...
begin
...

WhereStatement:='Where RO5BAKTAR Between :ILK5TAR AND :SON5TAR OR BAKIM1='+ UpperCase(BoolToStr(CheckBox1.Checked,True)) +
' OR BAKIM2=' + UpperCase(BoolToStr(CheckBox2.Checked,True)) + ' OR BAKIM3=' + UpperCase(BoolToStr(CheckBox3.Checked,True)) +
' OR BAKIM4=' + UpperCase(BoolToStr(CheckBox4.Checked,True)) + ' OR BAKIM5=' + UpperCase(BoolToStr(CheckBox5.Checked,True));

Query1.Sql.Add(WhereStatement);

...
end;

Bir bakın bakalım istediğiniz gibi mi.

Aslında Veritabanı tasarımınızın biraz problemli olduğunu düşünüyorum. Tabii olayı hala tam anlayamadığım için yanılıyor da olabilirim.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Arkadaşlar karışık anlattım sanırım;
yapmak istediğim iki tarih arası ve durumu false veya true olan kayıtları listelemek bu kadar .
true ve false olan alanım BAKIM1 alanı ben bu işlemi bu satırda cözmek istiyorum yardımlarınızı bekliyorum.

Query1.Sql.Add('Where RO5BAKTAR Between :ILK5TAR AND :SON5TAR OR CheckBox2.Checked=BAKIM1');
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Arkadaşlar ;
Şöyle birşey yapmak istiyorum yardım edermisiniz?

ComboBox1 e Bakımı yapılanlar bakımı yapılmayanlar diye yazıp bunu FALSE ve TRUE ye eşitleyip nasıl seçtirebilirim?
ikut

Mesaj gönderen ikut »

ozcank yazdı:Arkadaşlar ;
Şöyle birşey yapmak istiyorum yardım edermisiniz?

ComboBox1 e Bakımı yapılanlar bakımı yapılmayanlar diye yazıp bunu FALSE ve TRUE ye eşitleyip nasıl seçtirebilirim?
Merhaba

Items(Yapılanlar, yapılmayanlar) sırasında ise

Kod: Tümünü seç

If combobox.itemindex >0 then yapılanları al :=true else yapılanlarıal=False

bilemiyorum yapmaya çalıştığın bumu
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

evet fakat yaptığınızı bu satıra nasıl ekleyebilirim çalışan bir sorgu var çünkü

Query1.Sql.Add('Where RO5BAKTAR Between :ILK5TAR AND :SON5TAR');
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

daha doğrusu kod döngüsü;

if RadioButton1.Checked or CheckBox2.Checked Then
Begin
Query1.Sql.Clear;
Query1.Sql.Add('Select * From ROKAYIT');
Query1.Sql.Add('Where RO5BAKTAR Between :ILK5TAR AND :SON5TAR');
Query1.ParamByName('ILK5TAR').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SON5TAR').AsDate:=DateTimePicker2.Date;
end;
Query1.Active:=true;
if RadioButton2.Checked then
ikut

Mesaj gönderen ikut »

ozcank yazdı:evet fakat yaptığınızı bu satıra nasıl ekleyebilirim çalışan bir sorgu var çünkü

Query1.Sql.Add('Where RO5BAKTAR Between :ILK5TAR AND :SON5TAR');
burada bakımın yapılıp yapılmadığını hangi alan tutuyor pek i?

Query1.Sql.Add('Where RO5BAKTAR Between :ILK5TAR AND :SON5TAR and bakim1='+senindegisken+'')
En son ikut tarafından 08 Tem 2006 11:07 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Cevapla