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

Mesaj gönderen ozcank »

BAKIM1
BAKIM2
BAKIM3
BAKIM4
BAKIM5

5 ürün için ayrı ayrı tutuyorum kayıt alanında FALSE veya TRUE olarak yazılıyor.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

sorgum şu şekilde ;
procedure TForm29.Button1Click(Sender: TObject);
begin
if RadioButton1.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
Begin
Query1.Sql.Clear;
Query1.Sql.Add('Select * From ROKAYIT');
Query1.Sql.Add('Where ROILKBAKTAR Between :ILKRTAR AND :SONRTAR');
Query1.ParamByName('ILKRTAR').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SONRTAR').AsDate:=DateTimePicker2.Date;
end;
Query1.Active:=true;
if RadioButton3.Checked then
Begin
Query1.Sql.Clear;
Query1.Sql.Add('Select * From ROKAYIT');
Query1.Sql.Add('Where RO1BAKTAR Between :ILK1TAR AND :SON1TAR');
Query1.ParamByName('ILK1TAR').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SON1TAR').AsDate:=DateTimePicker2.Date;
end;
Query1.Active:=true;
if RadioButton4.Checked then
Begin
Query1.Sql.Clear;
Query1.Sql.Add('Select * From ROKAYIT');
Query1.Sql.Add('Where ROMEMBAKTAR Between :ILKMTAR AND :SONMTAR');
Query1.ParamByName('ILKMTAR').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SONMTAR').AsDate:=DateTimePicker2.Date;
end;
Query1.Active:=true;
if RadioButton5.Checked then
Begin
Query1.Sql.Clear;
Query1.Sql.Add('Select * From ROKAYIT');
Query1.Sql.Add('Where ROSONBAKTAR Between :ILKSTAR AND :SONSTAR');
Query1.ParamByName('ILKSTAR').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SONSTAR').AsDate:=DateTimePicker2.Date;
end;
Query1.Active:=true;
end;
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Arkadaşlar ;
Bu şekilde yaptım ama itemindex>0 da hata veriyor ne olabilir?


procedure TForm29.Button1Click(Sender: TObject);
begin
if RadioButton1.Checked or combobox1.itemindex>0 then BAKIMLI:=true
else BAKIMSIZ:=False 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
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

S.A.

1-

Kod: Tümünü seç

if (RadioButton1.Checked) or (combobox1.itemindex>0) then
şeklinde olmalı.

2- Else BAKIMSIZ := False then : else'den sonra then olmaz.

3-BAKIMLI ve BAKIMSIZ Boolean tipte değişken gibi kullanmışsınız, tanımlandı mı bunlar?

4- Verdiği hatayı da yazarsanız güzel olur.

Çözüm de şu olabilir;

Kod: Tümünü seç

procedure TForm29.Button1Click(Sender: TObject);  var
    AlanAdi: String;
Begin
  AlanAdi := 'BAKIM'+inttostr(RadioGroup1.ItemIndex+1);
  //BAKIM1, BAKIM2 vs.

  with Query1, SQL do
  begin
    Close;
    Clear; 
    Add('Select * From ROKAYIT');
    Add('Where RO5BAKTAR Between :ILK5TAR AND :SON5TAR');
    Add('and '+AlanAdi+'=:ParamBakim');
    ParamByName('ILK5TAR').AsDate:=DateTimePicker1.date;
    ParamByName('SON5TAR').AsDate:=DateTimePicker2.Date;
    ParamByName('ParamBakim').AsBoolean := True;
    Open;
  end;//with
end;
Kolay gelsin...

(Not: Query kullanırken with ile birlikte yapın, tadından yenmez)

EDİT: Yanlış anlayarak cevap yazmışım.
Bir radiogroup ekleyip, içine Bakım1, Bakım2 .. Bakım5 Item'leri yerleştirirseniz çözüm bu. Ama anlamadım raidobuton ne işe yarıyor, checkbox ne işe yarıyor?
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

ComboBox1 in Items ine "Bakım yapılanlar" ve "Bakım yapılmayanlar" diye iki satır yazdım 0 ve 1 ben bunu döngü içerisinde FALSE ve TRUE ye eşitlemek istiyorum bu değişkende DB de BAKIM1 .....BAKIM5 e kadar
bu işlemi sorguya nasıl ekleyecem onu birtürlü yapamadım.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Gönderdiğim koddaki ParamByName('ParamBakim').AsBoolean := True satırını şu şekilde değiştirin

Kod: Tümünü seç

ParamByName('ParamBakim').AsBoolean := (ComboBox1.Text = '1');
Doğru anladıysam çözüm bu olmalı
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Ulu Coder abi ya ben bunu şu şekilde kısa olarak yapabilirmiyim?

CheckBox1 form a yerleştireyim ve işaretliyse TRUE işaretsizse FALSE olanları DB den listelesin bunu nasıl yapabilirim bu benim işimi görür.


DB deki alanım BAKIM1... BAKIM5 e kadar.


if (RadioButton1.Checked) or (CheckBox1.Checked:=BAKIM1) 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
Begin
Query1.Sql.Clear;
Query1.Sql.Add('Select * From ROKAYIT');
Query1.Sql.Add('Where ROILKBAKTAR Between :ILKRTAR AND :SONRTAR');
Query1.ParamByName('ILKRTAR').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SONRTAR').AsDate:=DateTimePicker2.Date;
end;
Query1.Active:=true;
if RadioButton3.Checked then
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Ulu Coder abi ya ben bunu şu şekilde kısa olarak yapabilirmiyim?

CheckBox1 form a yerleştireyim ve işaretliyse TRUE işaretsizse FALSE olanları DB den listelesin bunu nasıl yapabilirim bu benim işimi görür.


DB deki alanım BAKIM1... BAKIM5 e kadar.


if (RadioButton1.Checked) or (CheckBox1.Checked:=BAKIM1) 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
Begin
Query1.Sql.Clear;
Query1.Sql.Add('Select * From ROKAYIT');
Query1.Sql.Add('Where ROILKBAKTAR Between :ILKRTAR AND :SONRTAR');
Query1.ParamByName('ILKRTAR').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SONRTAR').AsDate:=DateTimePicker2.Date;
end;
Query1.Active:=true;
if RadioButton3.Checked then
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Tablonda Baım1, Bakım2, Bakım3, Bakım4, Bakım5 alanları var.
Bunları bir radioGroup'da listelemişsin.
Yani Item'ları Bakım1..Bakım5 olan bir radiogroup'un var.
Bir de CheckBox'ın var.
RadioGroup'dan Bakım1..Bakım5 arası sadece bir şey seçiyorsun ve checkBox'dan da seçilen alanın değerini girmek istiyorsun, doğru mu anladım?

Doğru anladıysam, düzeltmenizi istediğim satırı tekrar şu şekilde düzeltin:

Kod: Tümünü seç

ParamByName('ParamBakim').AsBoolean := CheckBox1.Checked;
Eğer Bakım1, bakım2, bakım3 True olanlar gibi bir sorgulama istiyorsanız, daha değişik bir şey yapmamız gerekecek.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Arkadaşlar ;
Emeği geçen arkadaşlarıma teşekkür ediyorum.

sorumun cevabı;

if (RadioButton1.Checked) then
Begin
Query1.Sql.Clear;
Query1.Sql.Add('Select * From ROKAYIT');
Query1.Sql.Add('Where RO5BAKTAR Between :ILK5TAR AND :SON5TAR AND BAKIM1=:PARAM1');
Query1.ParamByName('ILK5TAR').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SON5TAR').AsDate:=DateTimePicker2.Date;
Query1.ParamByName('PARAM1').Asboolean := CheckBox2.Checked
Cevapla