dbgrid üzerinde arama yapmak???

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ozlemsaltan
Üye
Mesajlar: 38
Kayıt: 01 Nis 2014 05:57

dbgrid üzerinde arama yapmak???

Mesaj gönderen ozlemsaltan »

Arkadaşlar şöyle bir sorum var.firma diye bir tablom var.içinde ad soyad tel vs gibi alanlarım var. gridimin içinde veritabanımda olmayan bir alanı sql ile oluşturup urunler diye bir sütunda tutuyorum. Comcobox ile aramak istediğim bir firmayı aramak istediğimde şu kodu kullanıyorum
procedure TFrm_Firma.COB_FirmaClick(Sender: TObject);
begin
ZQ_Firma.Close;
ZQ_Firma.Sql.Clear;

ZQ_Firma.Sql.Add('SELECT * FROM firma WHERE UNVAN LIKE "%' + COB_Firma.Text + '%"');
//ZQ_Firma.Sql.Add('SELECT * FROM firma WHERE UNVAN LIKE " '+' %' +COB_Firma.Text + '%"');

ZQ_Firma.Open;
end;

firmayı buluyor sorun yok fakat ürünlerimi tuttuğum sütunu boş getiriyor. Bunu nasıl çözebilirim arkadaşlar???
Gridin içinde arama nasıl yapabilirim bir de?? Teşekkürler
Çaylak yazılımcı:)
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: dbgrid üzerinde arama yapmak???

Mesaj gönderen greenegitim »

ürünleri tutuğunuz yer bir tablomu
firmalardan ayrı bir tablo ise ilişkilendirmiş iseniz
firmalar tablosundaki primary key alanınızı bir dbedite bağlayın ve onchange olayında ürünler tablosunu listelerin.
Mücadele güzelleştirir!
Kullanıcı avatarı
ozlemsaltan
Üye
Mesajlar: 38
Kayıt: 01 Nis 2014 05:57

Re: dbgrid üzerinde arama yapmak???

Mesaj gönderen ozlemsaltan »

ürünleri tuttuğum ayrı bir tablo var. firmanın içinde değil sql ile ürünleri ordan çekiyorum yani firma tablomda ürünlerin tutulduğu bir alan yok. Bu arada sizin ne demek istediğini anlayamadım biraz açar mısınız
Çaylak yazılımcı:)
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: dbgrid üzerinde arama yapmak???

Mesaj gönderen tayipk »

kodumuzu şu şekilde düzenleyip bir deneyelim sonuca göre devam ederiz

eski kodunuz

Kod: Tümünü seç

procedure TFrm_Firma.COB_FirmaClick(Sender: TObject);
begin
ZQ_Firma.Close;
ZQ_Firma.Sql.Clear;

ZQ_Firma.Sql.Add('SELECT * FROM firma WHERE UNVAN LIKE "%' + COB_Firma.Text + '%"');
//ZQ_Firma.Sql.Add('SELECT * FROM firma WHERE UNVAN LIKE " '+' %' +COB_Firma.Text + '%"');

ZQ_Firma.Open;
end;
düzenlenmiş kod

Kod: Tümünü seç

procedure TFrm_Firma.COB_FirmaClick(Sender: TObject);
begin
ZQ_Firma.Close;
ZQ_Firma.Sql.Clear;

ZQ_Firma.Sql.Add('SELECT * FROM urunler  WHERE Firma_UNVAN LIKE "%' + COB_Firma.Text + '%"');
//ZQ_Firma.Sql.Add('SELECT * FROM firma WHERE UNVAN LIKE " '+' %' +COB_Firma.Text + '%"');

ZQ_Firma.Open;
end;
düzenlenmiş kodu çalıştırabilmek için urunler tablosuna firma tablosundan ortak bir alan açmış olmanız gerekmektedir. yani örneğin urunler tablonuza Firma_unvai diyede açabilirsiniz ama bununda handikapı şu aynı isimde birden fazla firma olursa o zaman yanlış sonuç döner bunun için ben her zaman firma tablomda ki o firmaya ait olan id lerle işlemlerimi yaparım yani ürün tabloma firma_id isminde bir alan açıp firma_id sini oraya aktarırım bu şekilde raporlama aldığımda hata payım sıfıra düşer sizde bu şekilde yaparsanız daha sağlıklı sonuçlar alırsınız başarılar kolay gelsin.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
Kullanıcı avatarı
ozlemsaltan
Üye
Mesajlar: 38
Kayıt: 01 Nis 2014 05:57

Re: dbgrid üzerinde arama yapmak???

Mesaj gönderen ozlemsaltan »

benim şöyle bir tablom var zaten. firmaid ve ürün id tutuyor. zaten bu tabloyu kullanarak sql çekiyorum urunleri atıyorum gride. ürünler tablomda firma id tutumuyorumda profirma adı tablomda firmaid ve ürünid tutuyorum-
Çaylak yazılımcı:)
Kullanıcı avatarı
ozlemsaltan
Üye
Mesajlar: 38
Kayıt: 01 Nis 2014 05:57

Re: dbgrid üzerinde arama yapmak???

Mesaj gönderen ozlemsaltan »

Arkadaşlar yardımcı olacak biri yok mu??
Çaylak yazılımcı:)
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Re: dbgrid üzerinde arama yapmak???

Mesaj gönderen gaus »

kolay gelsin Devexpress yükleyin orada filerrow özelliği var istediğiniz alanda istediğiniz şekilde aratabilirsiniz
Cevapla