Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
tuna
Üye
Mesajlar: 287
Kayıt: 07 Tem 2008 03:39
Konum: İstanbul

Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?

Mesaj gönderen tuna » 10 Ağu 2017 03:52

Sqlde yaptığınız select top(1000) mantığı şeklinde yapıyor. Başka teknik detaylarıda var ama kabaca bu şekilde sayfalara bölerek kullanıcın karşısına getiriyor.

Kullanıcı avatarı
tuna
Üye
Mesajlar: 287
Kayıt: 07 Tem 2008 03:39
Konum: İstanbul

Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?

Mesaj gönderen tuna » 21 Ağu 2017 08:54

dxServerModeADOQueryDataSource1 Bu nesneyi kullanarak tablonuza bağlanıyorsunuz. Bunu da cxgrid nesnenize bağlamanız yeterli. (cx gridde yeni view ekleyip bunuda server mode table olarak seçmeniz gerekiyor.) Geri kalanında herhangi bir ayarlama yapmanıza gerek yok. Nasıl kullanıldığına dair örnekleri Devexpress'in sayfalarında bulabilirsiniz.

Kullanıcı avatarı
tuna
Üye
Mesajlar: 287
Kayıt: 07 Tem 2008 03:39
Konum: İstanbul

Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?

Mesaj gönderen tuna » 21 Ağu 2017 09:03

Desteklediği veritabanları
MS SQL
Firebird
Interbase
MS Acces
My Sql
Oracle
Postgre Sql
Sql Lite

Uniconnection bağlanamaz önceki mesajımda belirttiğim gibi veritabanlarının sayfalama mantığını kullanıyor. Hangi veritabanı ile çalışcağaını önceden seçmek zorundasın.

mkysoft
Kıdemli Üye
Mesajlar: 2861
Kayıt: 25 Ağu 2003 11:35
Konum: İstanbul
İletişim:

Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?

Mesaj gönderen mkysoft » 22 Ağu 2017 08:04

evet kurmanız gerekiyor, Uniconnection için dll yüklemesi yapmanız gerekiyor olabilir.

skalkan
Üye
Mesajlar: 20
Kayıt: 28 Haz 2003 07:05

Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?

Mesaj gönderen skalkan » 20 Oca 2018 09:02

UniDac server Mode Component
DevExpressUnidacServer.rar
(21.06 KiB) 15 kere indirildi

skalkan
Üye
Mesajlar: 20
Kayıt: 28 Haz 2003 07:05

Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?

Mesaj gönderen skalkan » 20 Oca 2018 09:09

Yada bu şekilde bağlanabilirsiniz.

Kod: Tümünü seç

unit uMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  dxServerModeUniDACDataSource, dxServerModeSQLAdapters, DBAccess, cxGraphics, cxControls,
  cxLookAndFeels, cxLookAndFeelPainters, cxStyles, cxCustomData, cxFilter, cxData,
  cxDataStorage, cxEdit, cxNavigator, DB, StdCtrls, cxGridLevel, cxClasses, cxGridCustomView,
  cxGridCustomTableView, cxGridTableView, cxGridServerModeTableView, cxGrid,
  Uni, UniProvider, SQLServerUniProvider;

type
  TForm2 = class(TForm)
    btCreateUniDACDataSource: TButton;
    cxGrid: TcxGrid;
    cxGridLevel: TcxGridLevel;
    cxGridServerModeTableView: TcxGridServerModeTableView;
    UniConnection: TUniConnection;
    procedure btCreateUniDACDataSourceClick(Sender: TObject);
  private
    FDataSource: TdxServerModeUniDACDataSource;
  public
    property DataSource: TdxServerModeUniDACDataSource read FDataSource;
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.btCreateUniDACDataSourceClick(Sender: TObject);
begin
  btCreateUniDACDataSource.Enabled := False;

  FDataSource := TdxServerModeUniDACDataSource.Create(Self);
  DataSource.Connection := UniConnection;
  DataSource.SQLAdapterClass := TdxServerModeMSSQLAdapter;
  DataSource.TableName := 'ServerModeGridTableDemo';
  DataSource.Active := True;

  cxGridServerModeTableView.DataController.DataSource := DataSource;
  cxGridServerModeTableView.DataController.CreateAllItems;
end;

end.
dxServerModeUniDACDataSource.rar
(696 Byte) 10 kere indirildi

skalkan
Üye
Mesajlar: 20
Kayıt: 28 Haz 2003 07:05

Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?

Mesaj gönderen skalkan » 20 Oca 2018 11:39

Şu an projelerimde kullanıyorum. Sql sorgusu ne kadar basit ise hız 100.000 kayıt da mili saniye diyebilirim(Server yoğunluğu ve hızı önemli).

skalkan
Üye
Mesajlar: 20
Kayıt: 28 Haz 2003 07:05

Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?

Mesaj gönderen skalkan » 20 Oca 2018 11:51

DataSet olarak veri alamaz iseniz, bu işlem ile bilgileri alabilirsiniz.

Kod: Tümünü seç

procedure Tmain_frm.<View>CellClick(
  Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo;
  AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
  var
  IdValue:Variant;
begin

  if assigned(ACellViewInfo) and assigned(ACellViewInfo.GridRecord) then
  begin
    IdValue:= ACellViewInfo.GridRecord.Values[<View><Field>.Index];

     if not VarIsNull(IdValue) then
     begin
       <numEdit>.IntValue := IdValue;
	   // Sql sorgu  where id=<numEdit>
     end;
    end;
end;

malitutuncu
Üye
Mesajlar: 18
Kayıt: 21 Şub 2017 03:27

Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?

Mesaj gönderen malitutuncu » 22 Oca 2018 04:17

Hocam, cxGrid de grid modu açık kullanıyorum ben,
bir sayfa geliyor ,
asağı indikçe kullanıcı açılıp gidiyor. böylede çok hızlı
bu yöntem daha çok raporlamada mı kullanılıyor

malitutuncu
Üye
Mesajlar: 18
Kayıt: 21 Şub 2017 03:27

Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?

Mesaj gönderen malitutuncu » 23 Oca 2018 09:44

Eğer benim anladığım bildiğimiz server-client ise .. DB yi bir servere kurup bütün müşterilerimizin oradan
veri alıp vermesini istiyorsak , bunun içinde verileri hızlı çekmek aynı zamanda sıralama yapabilmesini, arama, filtreleme yapabilmesini istiyorsak..
Gridi biraz modifiye edmeniz gerekiyor.

mesela kullanıcıya gösterilen 100 kişi ama bir şey arayacak filtreden,
arama yaptığında tamamından yapması gerekiyor.
Bunun için örn gridin eventinde Filter OnbeforeChanged ' yaptıgı filtremeyi alıp , dinamik sorguya katmalısınız....
yada
Tarihlerde problem yaşanıyorsa Onformatfilter eventinde Sizin sorgunuza ulaşmadan önce tarih sorgulamasını değiştirmelisiniz..
Mesela bu eventte kullandıgınız veritabanına göre ayarlayınca bütün tarih sorgulamaları çalışır..

Kod: Tümünü seç

var
  vt: TVarType;
begin
  vt := VarType(AValue);
  if (varDate = vt) then
  ADisplayValue := 'CONVERT(DATE,'''+ DateToStr(AValue) +''', 104)';
end;
Yada
Gridin içerisinde lazım olan bir alan eklediğinizde başka bir tablodan, tabloları joinle birleştirip gridin sorgusunda kullandığınızda gridin onShortingChanged olayında joinlerle birleştirdiğiniz tablo kısaltmalarını bu eventte ayarlamalısınız..

Yani arama yapınca, sıralama yapınca yada grid üstünde her hangi bir işlem yapınca sizin dinamik sorgunuz çalışacak.

Kod: Tümünü seç

DinamikSorgu()
begin
   if qDeneme.Active Then qDeneme.Close;
      qDeneme.SQL.Clear;
      qDeneme.SQL.Add('KÖK SORGU');
		  
      if (GridWhr <> '') then qKart.SQL.Text := 'SELECT * FROM ('+ qKart.SQL.Text +') AG WHERE '+ GridWhr;

      if SQLOrderSt <> '' then qKart.SQL.Add(' '+SQLOrderSt)
      else qKart.SQL.Add('ORDER BY AG.ID DESC');

      qKart.Open;	  
	  
end;
//GridWhr -> GridWhr = AFilterText (OnbeforeChange olayında GridWhr ye Filtreyi aldım. Mesela buradada FilterRow açıp delayed geçikmeli yazdıktan sonra 1 snye geçince aramasını istediğiniz de stringleri like le istediğiniz gibi gelior..)

//SQLOrderSt -> onShortingChanged e değişmesini istediğiniz Alan adlarını ayarlıyorsunuz gibi ayarlıyorum mesela. Örn:
if TcxGridDBColumn(TV.SortedItems).DataBinding.FieldName = 'ID' then
SQLOrderSt := 'AG.ID'

Sadece birer satırlarını mantık olarak koydum.
Tam olarak ne demek istediğinizi anlamadığım için bildiklerimden kısaca bahsettim

Cevapla