Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?
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.
Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?
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.
Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?
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.
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.
Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?
evet kurmanız gerekiyor, Uniconnection için dll yüklemesi yapmanız gerekiyor olabilir.
Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?
UniDac server Mode Component
Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?
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.
Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?
Ş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).
Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?
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;
-
- Üye
- Mesajlar: 18
- Kayıt: 21 Şub 2017 04:27
Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?
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
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
-
- Üye
- Mesajlar: 18
- Kayıt: 21 Şub 2017 04:27
Re: Devexpress cxGrid Server Mod konusunda tecrübesi olan var mı?
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..
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.
//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
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;
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;
//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