CXGrid Sorgusuna ulaşmak..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

CXGrid Sorgusuna ulaşmak..

Mesaj gönderen TRSoft »

S.A.
Arkadaşlar uzun süredir yoğunluktan forumu ziyaret edemiyordum. Gelmişken bir soru sorayım bari dedim..

Cxgrid üzerinde yapılmış olan süzme işleminin oluşturduğu sorguya ulaşabilirmiyim.

Yapmak istediğim şeyi şöylece anlatayım..

Cxgrid üzerinde kayıtlarımı listeliyorum. Daha sonra kullanıcı bazı süzme işlemleri yapıyor veya sıralama yapıyor. Ben bunu böylece yazdırmak istiyorum. Raporlama aracıma aynı query bağlı ama cxgridin sorgularını tınlamıyor. Şimdi CxGridin PrintingSystemini kullan dediğinizi duyar gibiyim ama FastReport kullanmak zorundayım.. Bu oluşan sorguyu kendi queryme nasıl eşitleyebilirim ?
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Aşağıda runtime da xcgrid e filtre eklemek için kullandığım kod mevcut sanırım burdan birşeyler çıkartabilirsin. Senin istediğini bende bi ara düşünmüştüm ama vakit darlığından printingsystem ile geçiştirmiştim. Ozaman hep beraber bi el atalım abiler kardeşler :lol:

Kod: Tümünü seç

.........
......
var Item     : TcxFilterCriteriaItem;
    ItemList : TcxFilterCriteriaItemList;
    F : TcxDBDataFilterCriteria;
begin
   if Sender<>nil then Exit;
   InProgress := True;
   F := VIW_BakiyeRpr.DataController.Filter;

   if CHK_BakiyesiOlan.Checked then begin
    try
      ItemList := F.Root.AddItemList(fboOr);
      Item := F.FindItemByItemLink(VIW_BakiyeRprTXT_AlacakBakiye);
      if Item = nil then Item := ItemList.AddItem(VIW_BakiyeRprTXT_AlacakBakiye, foNotEqual, 0, '0');
      Item.OperatorKind := foNotEqual;
      Item.Value        := 0;
      Item := F.FindItemByItemLink(VIW_BakiyeRprTXT_BorcBakiye);
      if Item = nil then Item := ItemList.AddItem(VIW_BakiyeRprTXT_BorcBakiye, foNotEqual, 0, '0');
      Item.OperatorKind := foNotEqual;
      Item.Value        := 0;
     finally
     end;
   end else begin
     F.RemoveItemByItemLink(VIW_BakiyeRprTXT_AlacakBakiye);
     F.RemoveItemByItemLink(VIW_BakiyeRprTXT_BorcBakiye);
   end;

   VIW_BakiyeRpr.DataController.Filter.Active := F.Root.Count>0;
   InProgress := False;
............
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

@freeman35 abi teşekkür ederim.
Şu aralar yoğunluktan kodları inceleyemedim. Ama dener denemez buraya sonucunu yazarım.
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

Biraz geç oldu ama :oops: belki birilerine lazım olur..

Kod: Tümünü seç

cxGrid1DBTableView1.DataController.Filter.FilterText
şeklinde oluşan sorguya ulaşabiliyoruz..
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Geç olsunda, güç olmasın :) Bu tamda istenilenivermiyor, yani field isimleri ve değerleri tam geliyor ama eğer exlookup kullanıldıysa buraya string değeri yazıyor buda query ye direk eklenmeden önce bir işlemden geçirmekte fayda olucak.

Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Mesaj gönderen mudipasa »

TRSoft arkadaşım ellerine sağlık benimki çok geç oldu ama yeni mesajını gördüm ve kullanmam gerekti. cxGrid1DBTableView1.DataController.Filter.FilterText i belirledim ama bunu çalışma anında nasıl cxGrid e uygulayabilirim ?
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

mudipasa yazdı:cxGrid1DBTableView1.DataController.Filter.FilterText i belirledim ama bunu çalışma anında nasıl cxGrid e uygulayabilirim ?
Burada bir yanlış anlaşılma var sanırım. Biz bu yöntemi cxGride uygulanan süzme gibi işlemlerde oluşturduğu SQL cümlesine ulaşmak için kullanmıştık.

Siz nasıl cxGride uygularım diye sorunca benim anladığım yazmış olduğunuz Sql cümlesini bu yöntemle uygulamaya çalışmanızdır ki bunun için cxGride değil bağlı olduğu Datasete uygulamanız yeterlidir.
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Mesaj gönderen mudipasa »

TRSoft teşekkür ederim. Ben bu konuda sorunumu çözdüm. biraz forumdan birazda karıştırarak halloldu. Bilgi olsun diye makaleler kısmına yazdım. "cxGrid de iki tarih arası filtreleme (çalışma anında kodla)"
Herekese iyi çalışmalar

[url]viewtopic.php?t=20559[/url]
theSinan

Re: CXGrid Sorgusuna ulaşmak..

Mesaj gönderen theSinan »

Kod: Tümünü seç

cxGrid1DBTableView1.DataController.Filter.FilterText
göre işlem yapmak isterseniz

cxGrid1DBTableView1 DataController Altındaki Filterin OnChange
ine SQL Kodunuzla

Kod: Tümünü seç

cxGrid1DBTableView1->DataController->Filter->FilterText
birleştirip işlem yapacağınız fonksiyonu tetikleyebilirsiniz

örnek

Kod: Tümünü seç

void __fastcall TForm9::cxGrid1DBTableView1DataControllerFilterChanged(TObject *Sender)

{


 if(cxGrid1DBTableView1->DataController->Filter->FilterText.Length() > 0   )
	  sSQLSorgu +=" && "+cxGrid1DBTableView1->DataController->Filter->FilterText ;
 


  }
Islem_Yapacak_Fonksiyonum( sSQLSorgu);


bu kadar kolay mış :-)
Kullanıcı avatarı
cengaver
Üye
Mesajlar: 111
Kayıt: 01 Nis 2014 05:02
Konum: İstanbul

Re: CXGrid Sorgusuna ulaşmak..

Mesaj gönderen cengaver »

Merhaba,

Veri tipi tarih olan sütunlarla ilgili filtre eklenip yukarıdaki kod çalıştırıldığında tarih kültürel formatta geliyor, SQL formatında gelmiyor bu sorunu nasıl aşabiliriz arkadaşlar?

(
Kültürel formattan kastedilen örnek = '31.1.2015'
SQL formattan kastedilen örnek = '2015-01-31'
)
Kullanıcı avatarı
cengaver
Üye
Mesajlar: 111
Kayıt: 01 Nis 2014 05:02
Konum: İstanbul

Re: CXGrid Sorgusuna ulaşmak..

Mesaj gönderen cengaver »

Araştırırken keşfettim;

Kod: Tümünü seç

cxGrid1DBTableView1.DataController.Filter.DateTimeFormat := 'yyyy-mm-dd';
şeklinde bir düzenleme yaptıktan soran yukarıdaki örneklerde de belirtildiği gibi

Kod: Tümünü seç

cxGrid1DBTableView1.DataController.Filter.FilterText;
ile SQL cümlesi elde edilebiliyor arkadaşlar
Cevapla