Veritabanındaki bilgilerden istenilenin çıktısını almak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Veritabanındaki bilgilerden istenilenin çıktısını almak
merhaba arkadaşlar benim yapmak istediğimiz veritabanındaki bilgilerden istediklerimin raporunu almak istiyorum yani. Veritabanındaki bütün verilerim gelecek ben bunların yanına birer checkbox koyacağım. Bu check boxlardan seçtiklerimin bilgilerini raporunu alacağım. Şöyleki 10 tane verim var ben bu verilerden 5 tanesini seçiyorsam quickreportda da bu 5 tanesinin bilgilerini alacağım. Bunu nasıl yapabilirmiyim.Dbgridde böyle bir seçim yapabilirmiyim.
Dbgridde yapamazsın. CheckDbgrid diye bi comp. var. Onunla yapabilirsin... Gayet de güzel ve mantıklı çalışıyor. Quickrep tarafındada bir query de işaretlenmişleri filtre edersin hallolur...
Sevgiler...
Sevgiler...
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
@sair hocam şöyle bi method olabilirmi? tıklanan gridlerin bi fieldında update yapıp (o update yapılmış alana göre) renk verme işlemi yapıp sonra raporda ona göre query alsak? olabilemazmı? 

.-.-.-.-.-.-.-. ^_^
checkbox larını forma koy ve sonra rapor tuşunun içerisinde raporlamada kullandığın query'i değiştir yani
gibi sorgunu hazırlarsan başka birşey yapmadan istediğine kavuşursun.
bu arada imla hataları olabilir.
Kod: Tümünü seç
query1.sql.add('select ');
if checkbox1.checked then
query1.sql.add('alan1');
if checkbox2.checked then
query1.sql.add('alan2');
query1.sql.add(' from tabloismi');
bu arada imla hataları olabilir.

Oldeye Software
http://www.oldeye.com
http://www.oldeye.com
yalnız kullacağım checkbox sayısı belli değil yani sql sonucu veritabanından kaç kayıt gelirse o kadar checkbox koymam gerekiyor.feinpus yazdı:checkbox larını forma koy ve sonra rapor tuşunun içerisinde raporlamada kullandığın query'i değiştir yani
gibi sorgunu hazırlarsan başka birşey yapmadan istediğine kavuşursun.Kod: Tümünü seç
query1.sql.add('select '); if checkbox1.checked then query1.sql.add('alan1'); if checkbox2.checked then query1.sql.add('alan2'); query1.sql.add(' from tabloismi');
bu arada imla hataları olabilir.
Kod: Tümünü seç
//tabloda tıklayınca ilgili alanı set edecek kod
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
quetable.Edit;
quetable.FieldByName('checkfield').asboolean :=
NOT quetable.FieldByName('checkfield').asboolean ;
quetable.Post;
end;
// bu tıklanan alanı kırmızı yapacak
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if gdSelected in State then exit;
if quetable.FieldByName('checkfield').asboolean then
dbgrid1.Canvas.Brush.Color := clRed
else
dbgrid1.Canvas.Brush.Color := clWhite;
dbgrid1.DefaultDrawDataCell(Rect, Field,State);
end;
// buda rapora göndereceğin query başka şartlar varsa and ile devam et.
procedure TForm1.Button1Click(Sender: TObject);
begin
SQLMEMQuery1.Close;
with SQLMEMQuery1 do
begin
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM WGHQUE');
SQL.Add('WHERE 1=1');
SQL.Add('AND WGHQUE.checkfield = TRUE')
end;
try
SQLMEMQuery1.Open;
except
// do nothing
end;
rvproject1.Execute; // ben rave reportta denedim sonuç iyi :)
end;

.-.-.-.-.-.-.-. ^_^
bahsettiğin komponenti kurmadım delphi 7 için yok. 5 için vardı. dosyalarına baktım. herhangibir boolean alanı true veya false yapıyor. beya string alan ise 'T' ve 'F' yapıyor.
yani üstteki koda gerek kalmıyor
.sadece eğer databasininboolean desteği varsa
veya vtde boolean yoksa string alanda
yani üstteki koda gerek kalmıyor

Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
SQLMEMQuery1.Close;
with SQLMEMQuery1 do
begin
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM WGHQUE');
SQL.Add('WHERE 1=1');
SQL.Add('AND WGHQUE.checkfield = TRUE')
end;
try
SQLMEMQuery1.Open;
except
// do nothing
end;
rvproject1.Execute; // ben rave reportta denedim sonuç iyi :)
end;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
SQLMEMQuery1.Close;
with SQLMEMQuery1 do
begin
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM WGHQUE');
SQL.Add('WHERE 1=1');
SQL.Add('AND WGHQUE.checkfield = ''T''')
end;
try
SQLMEMQuery1.Open;
except
// do nothing
end;
rvproject1.Execute; // ben rave reportta denedim sonuç iyi :)
end;
.-.-.-.-.-.-.-. ^_^
Merhaba
Benimde benzer bir sorunum olmuştu. Dbgridde işaretlenen alanlar raporlanıyordu. Çözümümü anlatayım uygun bulursan kullanırsın. Çözüm pardox için firebirde de kolaylıkla uyarlanır.
Veritabanında boolean bir alan tanımlanacak; benimki hesap . Table bileşeninde dinamik alan tanımlayacaksiniz ben aciklama olarak tanımladım( dbgridede işaretlenen alanlar true-false olarak görünmesin işaretlenen alanda ödenecek ibaresini yazmasını istedim) .
Form üzerine birde DBCheckBox ekle datafieldi databasedeki boolean alan olsun.
Dbgridin olayları
table' onCalcField olayına
raporlama esnasında hesap alanında true değerleri filitreyip yazdırıyorum.
bir sonraki raporlamada sorun yaratmaması içinde raporlamadan sonra hepsini false yapıyorum.
*** Kodlarınızı CODE tagı içine alın. mege
Benimde benzer bir sorunum olmuştu. Dbgridde işaretlenen alanlar raporlanıyordu. Çözümümü anlatayım uygun bulursan kullanırsın. Çözüm pardox için firebirde de kolaylıkla uyarlanır.
Veritabanında boolean bir alan tanımlanacak; benimki hesap . Table bileşeninde dinamik alan tanımlayacaksiniz ben aciklama olarak tanımladım( dbgridede işaretlenen alanlar true-false olarak görünmesin işaretlenen alanda ödenecek ibaresini yazmasını istedim) .
Form üzerine birde DBCheckBox ekle datafieldi databasedeki boolean alan olsun.
Dbgridin olayları
Kod: Tümünü seç
procedure TfrmOdemeAl.DBGrid1ColEnter(Sender: TObject);
begin
if DBGrid1.Columns[DBGrid1.SelectedIndex].FieldName='aciklama' THEN
DBCheckBox1.Visible:=true
else
DBCheckBox1.Visible:=false;
end;
Kod: Tümünü seç
procedure TfrmOdemeAl.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (gdfocused in state) and (column.FieldName='aciklama') then
begin
dbcheckbox1.SetBounds(rect.Left+dbgrid1.Left+1,
rect.Top+dbgrid1.Top+1,rect.Right-rect.Left+1,
rect.Bottom-rect.Top+1);
end;
end;
table' onCalcField olayına
Kod: Tümünü seç
procedure TfrmOdemeAl.Table1CalcFields(DataSet: TDataSet);
begin
if table1hesap.Value=true then table1aciklama.Value:='Ödenecek'
else table1aciklama.Value:='';
end;
bir sonraki raporlamada sorun yaratmaması içinde raporlamadan sonra hepsini false yapıyorum.
*** Kodlarınızı CODE tagı içine alın. mege
CheckDbGrid in üstüne sağ tıkla, Columns editore gir. New butonuna tıkla. Alan oluştur. O alanı objeckt inspectorden checkbox koyacağın fielda bağla. üstte seçimi var. (adını unuttum) Orayı da Checkbox olarak seç. Tamamdır. Ancak Checkbox koyacağın alan varchar veya char bir alan olmalı.. Çünkü T ve F harflerini kendisi otomatik kaydediyor. Numeric alan kabul etmiyor. Gridin ilginç özelliği de şu. Checkbox a tıklandığı anda veritabanına kayıt yapıyor. Yani ayrıca post göndermek gerekmiyor. işaretli olan kayda T harfini atıyor.. Daha sonra bir Query koy.. Ve Check için ayrılan fielddaki T harfi olanları seç.. Raporla..
Sevgiler..
Sevgiler..
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
dediklerinizi yaptım ama olmadı. formun üzerine bir checkbox koyacakmıyız. Ya size zahmet ama biraz daha ayrıntılı yazarmısın. teşekkür ederimsair yazdı:CheckDbGrid in üstüne sağ tıkla, Columns editore gir. New butonuna tıkla. Alan oluştur. O alanı objeckt inspectorden checkbox koyacağın fielda bağla. üstte seçimi var. (adını unuttum) Orayı da Checkbox olarak seç. Tamamdır. Ancak Checkbox koyacağın alan varchar veya char bir alan olmalı.. Çünkü T ve F harflerini kendisi otomatik kaydediyor. Numeric alan kabul etmiyor. Gridin ilginç özelliği de şu. Checkbox a tıklandığı anda veritabanına kayıt yapıyor. Yani ayrıca post göndermek gerekmiyor. işaretli olan kayda T harfini atıyor.. Daha sonra bir Query koy.. Ve Check için ayrılan fielddaki T harfi olanları seç.. Raporla..
Sevgiler..
checkbox falan koymayacaksın. yahu gridin columns editorun de var ya seçimli olarak.. columns editore girin alanı seçin. object inspectorde arayın.. bende kurulu değil hatırlamıyorum hangi özellik olduğunu..
Sevgiler...
Sevgiler...
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz