Query ile istenen bilgilerin listelenmesi hakkında?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Query ile istenen bilgilerin listelenmesi hakkında?
arkadaşlar paradox tablo kullanıyorum. tablo adı Giren_Malzeme. bu tabloda Giren_Yer, Demirbas_No, Haricimalzeme_No adlı alanlar var.
tabloda Query1 ile sorgulama yapıyorum.
benim yaptığım işlem şu:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from Malzeme_Giris');
Query1.Sql.Add('Where Lower(Gelen_Yer) Like Lower("'+Edit1.Text+'%")');
Query1.Open;
bu şekilde sorguladığım zaman Gelen_Yer deki bütün kayıtlar listeleniyor.
ama ben örneğin; Sivil Savunma Genel Müdürlüğü nden gelen demirbaş malzemeleri
listelemek istiyorum. Haricimalzeme_No ları listelemek istemiyorum.
bir adet Edit1 var.buraya gelen yeri yazıyorum. iki adet ComboBox var.
Edit1 e Gelen yeri yazdığım zaman ComboBox1 e tıklayınca Demirbaş numaralı kayıtlar,
Combobox2 ye tıklayınca Haricimalzeme numaralı kayıtlar listelensin.
soru biraz uzun oldu ama kusura bakmayınız. sorunumu tam olarak anlatmak istedim.
herkese iyi çalışmalar diler saygılar sunarım.
tabloda Query1 ile sorgulama yapıyorum.
benim yaptığım işlem şu:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from Malzeme_Giris');
Query1.Sql.Add('Where Lower(Gelen_Yer) Like Lower("'+Edit1.Text+'%")');
Query1.Open;
bu şekilde sorguladığım zaman Gelen_Yer deki bütün kayıtlar listeleniyor.
ama ben örneğin; Sivil Savunma Genel Müdürlüğü nden gelen demirbaş malzemeleri
listelemek istiyorum. Haricimalzeme_No ları listelemek istemiyorum.
bir adet Edit1 var.buraya gelen yeri yazıyorum. iki adet ComboBox var.
Edit1 e Gelen yeri yazdığım zaman ComboBox1 e tıklayınca Demirbaş numaralı kayıtlar,
Combobox2 ye tıklayınca Haricimalzeme numaralı kayıtlar listelensin.
soru biraz uzun oldu ama kusura bakmayınız. sorunumu tam olarak anlatmak istedim.
herkese iyi çalışmalar diler saygılar sunarım.
Eğer yanlış anlamadıysam ComboBox'ların OnChange olayına kod yazarak Query1 içindeki SQL'i isediğin şekilde düzeltip tekrar aç. Mesela combobox1'i seçince harici no'ya göre birşey istiyorsan
Query1.Close;
Query1.SQL.Clear;
.... // senin yazdığın sql
Query1.SQL.Add('and harici_no='''+combobox1.text+'''');
Query1.Open;
gibi her seferinde isteğine göre manuel oluştur.
Kolay gelsin.
Query1.Close;
Query1.SQL.Clear;
.... // senin yazdığın sql
Query1.SQL.Add('and harici_no='''+combobox1.text+'''');
Query1.Open;
gibi her seferinde isteğine göre manuel oluştur.
Kolay gelsin.
merhaba mustafa bey.
comboboxların OnChange olayını kullanmayacağım.
şöyle anlatayım. Edit1 e kurum ismini yazacağım.
combobox1.caption, demirbaş malzemeler
combobox2.caption, harici malzemeler
örneğin B kurumundan bana malzeme gelmiş. gelen malzemelerde
hem demirbaş nolu, hemde haricimalzeme nolu malzemeler var.
edit1 e kurum ismini yazdım. combobox1 e tıklayınca edit1 de
yazan kurumdan gelen demirbaş nolu, combobox2 ye tıklayınca haricimalzeme nolu kayıtlar listelensin istiyorum. yani comboboxların OnClikc olayını kullanacağım. Query1 ile sorgu yapacağım. nasıl bir kod yazmalıyım.
iyi çalışmalar diler saygılar sunarım.
comboboxların OnChange olayını kullanmayacağım.
şöyle anlatayım. Edit1 e kurum ismini yazacağım.
combobox1.caption, demirbaş malzemeler
combobox2.caption, harici malzemeler
örneğin B kurumundan bana malzeme gelmiş. gelen malzemelerde
hem demirbaş nolu, hemde haricimalzeme nolu malzemeler var.
edit1 e kurum ismini yazdım. combobox1 e tıklayınca edit1 de
yazan kurumdan gelen demirbaş nolu, combobox2 ye tıklayınca haricimalzeme nolu kayıtlar listelensin istiyorum. yani comboboxların OnClikc olayını kullanacağım. Query1 ile sorgu yapacağım. nasıl bir kod yazmalıyım.
iyi çalışmalar diler saygılar sunarım.
Yapmanız gereken Combobox'larin OnDropDown eventlerini kullanmak. Bu event içinde Combobox'in Imtes ozelliğini once Clear ile temizleyip sonra da ilgili kurum'a ait demirbaşların listesini alacaginiz bir query calistirip query'de gelen kayitlarin tamamini bir dongu icinde Combobox'in items ozelligine eklemek.
Kod yaklaşık söyle bir kod olmalı....
İhtiyaciniz olacak mi bilmiyorum ama bu tür durumlarda onemli birsorun şudur. Eger Combobox'a doldurdugunuz demirbaşlardan biri seçildiğinde seçilenin mesela DEMIRBAŞ_NO 'sunu bilmek istiyorsanız o zaman işler biraz karışıyor. Bu durumda alternatif çözümler üretmek zorundasınız.
Çözüm 1:
Delphi5'deki combobox desteklemiyor o yüzden ben infopower'in Combobox'i ile bunu yapiyorum ama belki sizdeki versiyonda bu destek vardir veya benim bilmedigim bir karakter ile bu destekleniyor olabilir. Combobox'in items ozelligine ekleme yaparken demirbaş adini eklerken onun hemen yanina da bir Tab karakteri ekleyip (#9 şeklinde) onun yanina da demirbaş no alanini ekleyince items içinde her iki degeri de tutabilmenize rağmen #9 karakteri ve ondan sonraki no alani combobox 'ta gorunmemektedir. Siz gerekli secim yapildiginda basit bir string ayiklama kodu ile ister demirbaş adini isterseniz de demiraş nosunu alabilirsiniz.
Çözüm 2:
Bizim gibi bu tür durumlari (mesela rapor kriter ekranlarinda veri almalarda vs..) çok kullanan biri iseniz. O zaman belki combobox componenti baz alip ona Items gibi bir de Values isimli bir ozellik ekleyerek kendi combobox'inizi olusturabilirsiniz. Boylece demirbaş adlarını items'a demirbaş nolarini da values'a ekleyebilirsiniz...
Tabi ücretli bazi component setlerinde bu tür durumlari kolaylaştıran comboboxlarin oldugu da ayri bir çözüm olabilir.....
Kolay gelsin....
Kod yaklaşık söyle bir kod olmalı....
Kod: Tümünü seç
with TQuery.Create(Self) do
begin
DatabaseName:='DATABASE';
SQL.Add('Select DEMIRBAS_ADI, .......');
SQL.Add('From .......');
SQL.Add('Where .......');
Open;
Combobox1.Items.Clear;
while not Eof() do
begin
Combobox1.Items.Add(FieldByName('DEMIRBAS_ADI').AsString);
Next;
end;
Free;
end;
İhtiyaciniz olacak mi bilmiyorum ama bu tür durumlarda onemli birsorun şudur. Eger Combobox'a doldurdugunuz demirbaşlardan biri seçildiğinde seçilenin mesela DEMIRBAŞ_NO 'sunu bilmek istiyorsanız o zaman işler biraz karışıyor. Bu durumda alternatif çözümler üretmek zorundasınız.
Çözüm 1:
Delphi5'deki combobox desteklemiyor o yüzden ben infopower'in Combobox'i ile bunu yapiyorum ama belki sizdeki versiyonda bu destek vardir veya benim bilmedigim bir karakter ile bu destekleniyor olabilir. Combobox'in items ozelligine ekleme yaparken demirbaş adini eklerken onun hemen yanina da bir Tab karakteri ekleyip (#9 şeklinde) onun yanina da demirbaş no alanini ekleyince items içinde her iki degeri de tutabilmenize rağmen #9 karakteri ve ondan sonraki no alani combobox 'ta gorunmemektedir. Siz gerekli secim yapildiginda basit bir string ayiklama kodu ile ister demirbaş adini isterseniz de demiraş nosunu alabilirsiniz.
Çözüm 2:
Bizim gibi bu tür durumlari (mesela rapor kriter ekranlarinda veri almalarda vs..) çok kullanan biri iseniz. O zaman belki combobox componenti baz alip ona Items gibi bir de Values isimli bir ozellik ekleyerek kendi combobox'inizi olusturabilirsiniz. Boylece demirbaş adlarını items'a demirbaş nolarini da values'a ekleyebilirsiniz...
Tabi ücretli bazi component setlerinde bu tür durumlari kolaylaştıran comboboxlarin oldugu da ayri bir çözüm olabilir.....
Kolay gelsin....
Merhaba,
Konunun devamı niteliğinde olduğu için ayrı bir başlık açmak istemedim.Verdiğniz örneği programımıda aynn uyguladım.exe hatası almadan çaıştı.Yalnız combobox aşağı indiği zaman
Project project1.exe raised expection class EAccessVioalation with message 'Access violation at adress 004b802C module 'Project1.exe'. adında hata mesajı alıyorum.Veritabanım access ado kullanıyorum.
Sevgi ve Saygılarımla...
Konunun devamı niteliğinde olduğu için ayrı bir başlık açmak istemedim.Verdiğniz örneği programımıda aynn uyguladım.exe hatası almadan çaıştı.Yalnız combobox aşağı indiği zaman
Project project1.exe raised expection class EAccessVioalation with message 'Access violation at adress 004b802C module 'Project1.exe'. adında hata mesajı alıyorum.Veritabanım access ado kullanıyorum.
Kod: Tümünü seç
procedure TForm1.DBComboBox3DropDown(Sender: TObject);
begin
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('select distinct GELDIGIYER from gelen');
Open;
DBComboBox3.Items.Clear;
while not ADOQuery1.Eof do
begin
DBComboBox3.Items.Add(FieldByName('GELDIGIYER').AsString);
Next;
end;
Free;
end;
end;
Çok teşekkür ederim.free satırı yazdıgınız gibi fazladan eklenmiş.
Saygılar ve Sevgiler...
Saygılar ve Sevgiler...
Kod: Tümünü seç
procedure TForm1.DBComboBox3DropDown(Sender: TObject);
begin
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('select distinct GELDIGIYER from gelen');
Open;
DBComboBox3.Items.Clear;
while not ADOQuery1.Eof do
begin
DBComboBox3.Items.Add(FieldByName('GELDIGIYER').AsString);
Next;
end;
end;
end;