Query de secenekli Raporlama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Query de secenekli Raporlama
Arkadaşlar şöyle birşey yapmak istiyorum Query de ; benim 5 tane alanım var GRUPKOD,KOD1,KOD2,SATKOD,ILILCE birde CheckBox lar ve DBGrid ben bu alanları rapor aldırmak istiyorum fakat şöyle;
mesela GRUPKOD ve KOD1 ve ILILCE edit alanlarını doldurup diğer alanlar boş kalacak veya KOD1 ve KOD2 ve ILILCE bu şekilde rapor alacak bunu yapmam mümkün mü nasıl yaparım yardım ederseniz çok sevinirim.
mesela GRUPKOD ve KOD1 ve ILILCE edit alanlarını doldurup diğer alanlar boş kalacak veya KOD1 ve KOD2 ve ILILCE bu şekilde rapor alacak bunu yapmam mümkün mü nasıl yaparım yardım ederseniz çok sevinirim.
merhaba,
formuna iki adet checkbox koyarsın, sorgu kodunda da hangi checkbox işaretli ise edit1, edit2, edit3 alanlarına giren kriterlere göre istediğin alanlarda sorgulatır ve sonucu grid içerisine dökersin.
kolay gelsin
formuna iki adet checkbox koyarsın, sorgu kodunda da hangi checkbox işaretli ise edit1, edit2, edit3 alanlarına giren kriterlere göre istediğin alanlarda sorgulatır ve sonucu grid içerisine dökersin.
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.

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.

şöyle birşeyi nasıl yapabilirim;
CheckBox1 e GRUPKOD
CheckBox2 e KOD1
CheckBox3 e KOD2
CheckBox4 e ILILCE
CheckBox5 e SATKOD ve hangi alanları işaretlerse karşısında Edit alanları açılsın ve oraya istediği kodu yazsın Rapor buttonuna basıncada raporu alsın fakat bunu nasıl yapacak GRUPKOD a 01 yazdı KOD1 e 12 yazdı İl İlçeyede MERKEZ yazdı diğer alanlar boş 01 e ait 12 ve MERKEZ olanlar bu şekildemi alacak raporu?
CheckBox1 e GRUPKOD
CheckBox2 e KOD1
CheckBox3 e KOD2
CheckBox4 e ILILCE
CheckBox5 e SATKOD ve hangi alanları işaretlerse karşısında Edit alanları açılsın ve oraya istediği kodu yazsın Rapor buttonuna basıncada raporu alsın fakat bunu nasıl yapacak GRUPKOD a 01 yazdı KOD1 e 12 yazdı İl İlçeyede MERKEZ yazdı diğer alanlar boş 01 e ait 12 ve MERKEZ olanlar bu şekildemi alacak raporu?
Arkadaşlar ben şöyle bir şey yaptım sorgumda çalışıyor fakat ben burda mesela Edit3 alanını boş geçtiği zaman Edit1 ve Edit2 alanı dolu olduğu zaman rapor alabilirmiyim nasıl bir değişiklik yapmam gerekiyor düzeltme yaparsanız sevinirim.
Kod: Tümünü seç
if RadioButton10.Checked then
If Edit1.Text='' Then
Begin
Query1.Active:=False;
ShowMessage('Lütfen Kod 1 Boş Geçmeyiniz !!! ');
Edit1.Setfocus;
Exit;
end
else
begin
Query1.Sql.Clear;
Query1.Sql.Add('Select * From SISTEMFOR');
Query1.Sql.Add('Where SISTAR Between :SERTAR19 AND :SERTAR20 AND SISKOD1=:SKOD1 AND SISGRUPKD=:SGRUPKD AND SISILCEKD=:SILCEKD');
Query1.ParamByName('SKOD1').AsString:=Edit1.Text;
Query1.ParamByName('SGRUPKD').AsString:=Edit2.Text;
Query1.ParamByName('SILCEKD').AsFloat:=StrToFloat(Edit3.Text);
Query1.ParamByName('SERTAR19').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SERTAR20').AsDate:=DateTimePicker2.Date;
end;
Query1.Active:=true;
Label7.Caption:=IntToStr(Query1.RecordCount);
end;
Sorgu adında string bir değişken oluştur.
Sonra
kolay gelsin
Sonra
Kod: Tümünü seç
...
sorgu:='Where SISTAR Between :SERTAR19 AND :SERTAR20 AND SISKOD1=:SKOD1 AND SISGRUPKD=:SGRUPKD';
If edit3.text<>'' then sorgu:=sorgu+' AND SISILCEKD=:SILCEKD';
Query1.Sql.Clear;
Query1.Sql.Add('Select * From SISTEMFOR');
Query1.SQL.Add(sorgu);
Query1.ParamByName('SKOD1').AsString:=Edit1.Text;
Query1.ParamByName('SGRUPKD').AsString:=Edit2.Text;
Query1.ParamByName('SERTAR19').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SERTAR20').AsDate:=DateTimePicker2.Date;
If edit3.text<>'' Then query1.ParamByName('SILCEKD').AsFloat:=StrToFloat(Edit3.Text);
Query1.Active:=true;
...
Bu şekilde denedim ama "İs Not Floating value" hatası alıyorum acaba yanlış yeremi yerleştirdim?
Kod: Tümünü seç
if RadioButton13.Checked then
If Edit1.Text='' Then
Begin
Query1.Active:=False;
ShowMessage('Lütfen Kod 1 Boş Geçmeyiniz !!! ');
Edit1.Setfocus;
Exit;
end
else
begin
Sorgu:='Where SISTAR Between :SERTAR25 AND :SERTAR26 AND SISKOD2=:SKOD2 AND SISGRUPKD=:SGRUPKD';
If edit3.text<>'' then Sorgu:=Sorgu+' AND SISILCEKD=:SILCEKD';
Query1.Sql.Clear;
Query1.Sql.Add('Select * From SISTEMFOR');
Query1.Sql.Add('Where SISTAR Between :SERTAR25 AND :SERTAR26 AND SISKOD2=:SKOD2 AND SISGRUPKD=:SGRUPKD AND SISILCEKD=:SILCEKD');
Query1.ParamByName('SKOD2').AsString:=Edit1.Text;
Query1.ParamByName('SGRUPKD').AsString:=Edit2.Text;
Query1.ParamByName('SILCEKD').AsFloat:=StrToFloat(Edit3.Text);
Query1.ParamByName('SERTAR25').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SERTAR26').AsDate:=DateTimePicker2.Date;
If edit3.text<>'' Then query1.ParamByName('SILCEKD').AsFloat:=StrToFloat(Edit3.Text);
// end;
Query1.Active:=true;
Label7.Caption:=IntToStr(Query1.RecordCount);
end;
end;
ozcank yazdı:Kod: Tümünü seç
Query1.Sql.Add('Select * From SISTEMFOR'); Query1.Sql.Add('Where SISTAR Between :SERTAR25 AND :SERTAR26 AND SISKOD2=:SKOD2 AND SISGRUPKD=:SGRUPKD AND SISILCEKD=:SILCEKD'); ... Query1.ParamByName('SILCEKD').AsFloat:=StrToFloat(Edit3.Text);
ulu coder yazdı:Kod: Tümünü seç
Query1.Sql.Add('Select * From SISTEMFOR'); Query1.SQL.Add(sorgu); ... If edit3.text<>'' Then query1.ParamByName('SILCEKD').AsFloat:=StrToFloat(Edit3.Text);

Kolay gelsin.
Bir tavsiye;
Begin End aralarında satır başlarında 2 boşluk bırakarak yazarsan daha okunur olacak.
En son ulu coder tarafından 22 Nis 2006 10:56 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Abi ben bu işi beceremedim tekrar bir bakarmısın?
Kod: Tümünü seç
if RadioButton13.Checked then
If Edit1.Text='' Then
Begin
Query1.Active:=False;
ShowMessage('Lütfen Kod 1 Boş Geçmeyiniz !!! ');
Edit1.Setfocus;
Exit;
end
else
begin
ZorSorgu:='Where SISTAR Between :SERTAR25 AND :SERTAR26 AND SISKOD2=:SKOD2 AND SISGRUPKD=:SGRUPKD';
If edit3.text<>'' then ZorSorgu:=ZorSorgu+' AND SISILCEKD=:SILCEKD';
Query1.Sql.Clear;
Query1.Sql.Add('Select * From SISTEMFOR');
Query1.SQL.Add(ZorSorgu);
Query1.Sql.Add('Where SISTAR Between :SERTAR25 AND :SERTAR26 AND SISKOD2=:SKOD2 AND SISGRUPKD=:SGRUPKD AND SISILCEKD=:SILCEKD');
Query1.ParamByName('SKOD2').AsString:=Edit1.Text;
Query1.ParamByName('SGRUPKD').AsString:=Edit2.Text;
//Query1.ParamByName('SILCEKD').AsFloat:=StrToFloat(Edit3.Text);
Query1.ParamByName('SERTAR25').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SERTAR26').AsDate:=DateTimePicker2.Date;
If edit3.text<>'' Then query1.ParamByName('SILCEKD').AsFloat:=StrToFloat(Edit3.Text);
// end;
Query1.Active:=true;
Label7.Caption:=IntToStr(Query1.RecordCount);
end;
END;
Son SQL.Add'i silmen yeterli. Yaniozcank yazdı:Kod: Tümünü seç
Query1.Sql.Clear; Query1.Sql.Add('Select * From SISTEMFOR'); Query1.SQL.Add(ZorSorgu); Query1.Sql.Add('Where SISTAR Between :SERTAR25 AND :SERTAR26 AND SISKOD2=:SKOD2 AND SISGRUPKD=:SGRUPKD AND SISILCEKD=:SILCEKD');
Kod: Tümünü seç
Query1.Sql.Clear;
Query1.Sql.Add('Select * From SISTEMFOR');
Query1.SQL.Add(ZorSorgu);
Mantığını kavramaya çalış. Mantık şu;
SQL cümlesini eklemeden önce, cümleyi bir string içinde oluşturuyoruz.
Bu string'e önce mutlaka olacak olan şeyleri ekliyoruz.
Şarta bağlı parametrelerin şartı sağlandıysa, değişkene ' AND ...' diyerek ekleme yapıyoruz.
Sonra SQL.Add diyerek SQL cümlesini oluşturuyoruz.
Son olarak da Parametreye değer atarken, opsiyonel olanların şartlarını kontrol ediyoruz.
Kolay gelsin...
Bu şekilde sorgu çalışıyor yardımlarınız için çok teşekkür ediyorum.
Kod: Tümünü seç
if RadioButton13.Checked then
If Edit1.Text='' Then
Begin
Query1.Active:=False;
ShowMessage('Lütfen Kod 1 Boş Geçmeyiniz !!! ');
Edit1.Setfocus;
Exit;
end
else
begin
ZorSorgu:='Where SISTAR Between :SERTAR25 AND :SERTAR26';
If Edit1.Text<>'' then ZorSorgu:=ZorSorgu+' AND SISKOD2=:SKOD2';
If Edit2.Text<>'' then ZorSorgu:=ZorSorgu+' AND SISGRUPKD=:SGRUPKD';
If Edit3.Text<>'' then ZorSorgu:=ZorSorgu+' AND SISILCEKD=:SILCEKD';
Query1.Sql.Clear;
Query1.Sql.Add('Select * From SISTEMFOR');
Query1.SQL.Add(ZorSorgu);
Query1.ParamByName('SERTAR25').AsDate:=DateTimePicker1.date;
Query1.ParamByName('SERTAR26').AsDate:=DateTimePicker2.Date;
If Edit1.text<>'' Then Query1.ParamByName('SKOD2').AsString:=Edit1.Text;
If Edit2.text<>'' Then Query1.ParamByName('SGRUPKD').AsString:=Edit2.Text;
If Edit3.text<>'' Then Query1.ParamByName('SILCEKD').AsFloat:=StrToFloat(Edit3.Text);
Query1.Active:=true;
Label7.Caption:=IntToStr(Query1.RecordCount);
Zor sorgu...ozcank yazdı:Kod: Tümünü seç
ZorSorgu:='Where SISTAR Between :SERTAR25 AND :SERTAR26';

Faydamız olduysa ne mutlu bize.
Bu arada Edit1'e değer girilmediyse 'Lütfen Kod 1 Boş Geçmeyiniz !!! ' şeklinde uyarı veriyor. Fakat ileride bunu opsiyonel yapmışsın
