Merhaba;
Developer Expres'in CxGridini ayarlarını Databasede nasıl tatabilirim acaba (gridin özellikleri regedit veya inifile olarak tutulabiliyor peki ya databasede ?
Yapmak istediğim bu ayarların Databasede bir table vasıtasıyla tutabilmek.
Daha önce yapan arkadaşlar varmı veya nasıl yapılacağı hakkında fikri olan.
Not: Geçen haftalarda bu ayarlar yüzüne 2-3 günlük çok büyük bir sorun yaşadım kullanıcılar bu ayarları kurcalamışlar ve ilginçtirki databaseden sorgulama yapınca normalde saniyelerde verdiği sonucu dakikalarca bekleyip alabilyordum Bu bağlamda düüşnüyorum.
Saygılarımla
Teşekkürler.
Cx Grid Ayarlarını Databasede Tutmak ?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Cx Grid Ayarlarını Databasede Tutmak ?
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
_________________
stream olarak ayarları alıp database'e blob olarak kaydedebilirsiniz. ben ini olarak temp klasörüne kaydedip oradan blob olarak veri tabanına atıyordum.daha sonrada geri alıp yine temp dizinine kaydediyordum. işim bitince siliyordum. hiç bir sıkıntı olmadı. Ama kullanıcılar kullanmadı
(esneklik olsun diye yapmıştım)

@naile haklısın belki ama kullanıcılara artık güvenmiyorum. yani herşeyi beklerim artık.
Bu yüzden gizlemek sanırım geçici bir çözüm olabilİr yinede düşünmek lazım.
@mkysoft veri tabanına blob olarak kaydetme hakkında pek bilgim yok nasıl olduğunu yazarsan sanırım bu benim işiim fazlasıyla görecek.
Peki hız açısından ne gibi farklar oluşur yani blob olarak tutarak işlem yapmakmı yoksa ini dosyasımı?
Teşekkürler.
Bu yüzden gizlemek sanırım geçici bir çözüm olabilİr yinede düşünmek lazım.
@mkysoft veri tabanına blob olarak kaydetme hakkında pek bilgim yok nasıl olduğunu yazarsan sanırım bu benim işiim fazlasıyla görecek.
Peki hız açısından ne gibi farklar oluşur yani blob olarak tutarak işlem yapmakmı yoksa ini dosyasımı?
Teşekkürler.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
_________________
Quantum Gridi (cxGridi) store ve restore ederken ister stream ister file şeklinde olsun çok dikkatli olmak ve çok iyi düşünüp karar vermek gerekiyor.
En basitinden tabloya yeni bir alan ilave ettiğinizde veya varolan bir alanın Visible'ını değiştirdiğinizde veya cxGridDBBandedTableView kullanıp da band yapısını değiştirdiğinizde vs. daha belki bir çok konuda problemlerle karşılaşacaksınız.
Zira store edilmiş bir cxGrid restore edildiğinde ilave ve değişikliklerin çoğunu dikkate almayacak sanki hiç bunlar yapılmamış gibi davranacaktır.
Ben her ne şekilde olursa olsun bu özelliğini kullanıyorum. Bilgileri de veritabanında tutuyorum.
En basit ifadeyle restore işlemini şu şekilde yapıyorum: Önce store ediyorum (temp bir dosyaya, zira restore etmeye kalkıştıktan sonra ancak buradan başlangıç şekline dönebilirsiniz), sonra 10 defa aynı yerden restore etmeyi deniyorum. Bu 10 defalık deneme içinde her defasında tekrar başka bir temp dosyaya store edip asıl restore bilgileri ile aynı ise döngü dışına çıkıyorum. Bu döngüyü 1 saniyeden uzun sürme durumu olursa break ediyorum. Eğer tutmadıysa başta store ettiğim temp dosyadan restore ediyorum.
Bu işlemlerin sonunda da oluşan kolonların visible'larıyla dataset'in field'larının visible'larını, varsa band sayılarını, datasette olup kolonlarda olmayan field'ları vs. birçok şeyi kontrol ederek ve gereken düzeltmeleri yaparak cxGrid'i kullanıcıların karşısına çıkartıyorum.
Eğer basit sayılabilecek bir hata dahi yapsanız program çok rahatlıkla kilitlenebiliyor. Çoğu zaman try except bile bir işe yaramıyor.
İyi çalışmalar.
En basitinden tabloya yeni bir alan ilave ettiğinizde veya varolan bir alanın Visible'ını değiştirdiğinizde veya cxGridDBBandedTableView kullanıp da band yapısını değiştirdiğinizde vs. daha belki bir çok konuda problemlerle karşılaşacaksınız.
Zira store edilmiş bir cxGrid restore edildiğinde ilave ve değişikliklerin çoğunu dikkate almayacak sanki hiç bunlar yapılmamış gibi davranacaktır.
Ben her ne şekilde olursa olsun bu özelliğini kullanıyorum. Bilgileri de veritabanında tutuyorum.
En basit ifadeyle restore işlemini şu şekilde yapıyorum: Önce store ediyorum (temp bir dosyaya, zira restore etmeye kalkıştıktan sonra ancak buradan başlangıç şekline dönebilirsiniz), sonra 10 defa aynı yerden restore etmeyi deniyorum. Bu 10 defalık deneme içinde her defasında tekrar başka bir temp dosyaya store edip asıl restore bilgileri ile aynı ise döngü dışına çıkıyorum. Bu döngüyü 1 saniyeden uzun sürme durumu olursa break ediyorum. Eğer tutmadıysa başta store ettiğim temp dosyadan restore ediyorum.
Bu işlemlerin sonunda da oluşan kolonların visible'larıyla dataset'in field'larının visible'larını, varsa band sayılarını, datasette olup kolonlarda olmayan field'ları vs. birçok şeyi kontrol ederek ve gereken düzeltmeleri yaparak cxGrid'i kullanıcıların karşısına çıkartıyorum.
Eğer basit sayılabilecek bir hata dahi yapsanız program çok rahatlıkla kilitlenebiliyor. Çoğu zaman try except bile bir işe yaramıyor.
İyi çalışmalar.
Kod: Tümünü seç
procedure Tfr_gorunum.gorunum_kaydet(tablogorunum: TcxGridTableView);
var
blob,fs: TStream;
aciklm: string;
label cik;
begin
aciklm := inputbox('Görünüm İçin Açıklama Giriniz', 'Açıklama','');
if aciklm = '' then goto cik;
TcxGridTableView(tablogorunum).StoreToIniFile(extractfilepath(application.exename)+'\temp.ini',true,[gsoUseFilter, gsoUseSummary]);
tablo_gorunum.Insert;
blob := tablo_gorunum.CreateBlobStream(tablo_gorunum.FieldByName('gorunum'), bmWrite);
try
blob.Seek(0, soFromBeginning);
fs := TFileStream.Create(extractfilepath(application.exename)+'\temp.ini', fmOpenRead or fmShareDenyWrite);
try
blob.CopyFrom(fs, fs.Size)
finally
fs.Free;
deletefile(extractfilepath(application.exename)+'\temp.ini');
end;
finally
blob.Free
end;
tablo_gorunum.FieldByName('aciklama').Text := aciklm;
tablo_gorunum.Post;
cik:
close;
end;
Kod: Tümünü seç
procedure Tfr_gorunum.gorunum_yukle(tablogorunum: TcxGridTableView);
var
blob: TStream;
tabloyukle: TcxGridTableView;
begin
tabloyukle := tablogorunum;
blob := tablo_gorunum.CreateBlobStream(tablo_gorunum.FieldByName('gorunum'), bmRead);
try
blob.Seek(0, soFromBeginning);
with TFileStream.Create(extractfilepath(application.exename)+'\temp.ini', fmCreate) do
try
CopyFrom(blob, blob.Size)
finally
Free
end;
finally
blob.Free
end;
tabloyukle.RestoreFromIniFile(extractfilepath(application.exename)+'\temp.ini',true,true,[gsoUseFilter, gsoUseSummary]);
deletefile(extractfilepath(application.exename)+'\temp.ini');
tabloyukle.ViewData.Expand(true);
close;
end;
Merhaba;
@Hakan Can Hocam söylediklerinize aynen katılıyorum zaten bu ayarların önem arzettiği için vtye almayı düşündüm bende. Alan değiştirme ekleme yada çıkarma işlemlerini cxgridde çalışma sırasında yaptırıyorum ve formun çıkında ilgili ayarları tekrar yeniliyorum.
@mkysoft verdiğin değerli kod ve mantık için teşekkür ederim. Tam istediğim gibi.
Saygılarımla
Teşekkürler.
@Hakan Can Hocam söylediklerinize aynen katılıyorum zaten bu ayarların önem arzettiği için vtye almayı düşündüm bende. Alan değiştirme ekleme yada çıkarma işlemlerini cxgridde çalışma sırasında yaptırıyorum ve formun çıkında ilgili ayarları tekrar yeniliyorum.
@mkysoft verdiğin değerli kod ve mantık için teşekkür ederim. Tam istediğim gibi.

Saygılarımla
Teşekkürler.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
_________________