Merhaba
TDataset ile filtreleme yapmak istiyorum LIKE ile çalışıyo, NOT LIKE ile çalışmıyo, nerde yanlış yapıyorum aceba.
procedure TDM.FilterATableNoMail(ATable: TDataSet);
var
MailHost: string;
begin
if ATable = TableHotmail then MailHost:='hotmail' else
if ATable = TableGMail then MailHost:='gmail' else
if ATable = TableLive then MailHost:='live' else
if ATable = TableMsn then MailHost:='msn' else
if ATable = TableMyNet then MailHost:='mynet' else
if ATable = TableOutlook then MailHost:='outlook' else
if ATable = TableYahoo then MailHost:='yahoo' else
if ATable = TableFacebook then MailHost:='facebook' else
if ATable = TableYMail then MailHost:='ymail' else
MailHost:='yandex';
ATable.Filtered:=False;
ATable.Filter:='EMail NOT LIKE '+ QuotedStr('%'+MailHost+'%');
ATable.Filtered:=True;
end;
TDataset Filter
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: TDataset Filter
Veritabanı olarak hangisini kullanıyorsunuz belirtmemişsiniz. Bazılarında oluyor bazılarında olmuyor...
Ancak bunları bir kenara bırakıp, filtre işini SQL Query ile halletmeniz daha sağlıklı ve performanslı olacaktır. Bu bir gerçek.
Ancak bunları bir kenara bırakıp, filtre işini SQL Query ile halletmeniz daha sağlıklı ve performanslı olacaktır. Bu bir gerçek.
Re: TDataset Filter
Arkadaşlar ben bu problemi hala çözemedim!
Hiçbir veri tabanı işlemi yapamıyorum(yeni kayıt, filtre, arama, son kayıta gitme...), hata veriyor.
SQLite veri tabanını değiştirdim access yaptım ama sonuç aynı. Internetten ve Sqlite sitesinden araştırdığım kadarıyla sorun şu:
veri tabanından hafızaya yüklenen veri hafıza boyutunu aşarsa(RAM daki boyut) "out of memory" hatası veriyor.
Programı çalıştırıp görev yöneticisine baktım yaklaşık 2GB gösteriyor. Bu sorunu nasıl aşarım bilgisi olan varmı?
Hiçbir veri tabanı işlemi yapamıyorum(yeni kayıt, filtre, arama, son kayıta gitme...), hata veriyor.
SQLite veri tabanını değiştirdim access yaptım ama sonuç aynı. Internetten ve Sqlite sitesinden araştırdığım kadarıyla sorun şu:
veri tabanından hafızaya yüklenen veri hafıza boyutunu aşarsa(RAM daki boyut) "out of memory" hatası veriyor.
Programı çalıştırıp görev yöneticisine baktım yaklaşık 2GB gösteriyor. Bu sorunu nasıl aşarım bilgisi olan varmı?
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: TDataset Filter
Table kullanmadan Query kullanmanız en ideal yöntem olacaktır. Hem ayrıca "NOT LIKE" şeklinde bir operatör yoktur LIKE operatörünü NOT ile terslemeniz gerekmektedir.mrmarman yazdı:...filtre işini SQL Query ile halletmeniz daha sağlıklı ve performanslı olacaktır. Bu bir gerçek.
Efe yazdı: ATable.Filtered:=False;
ATable.Filter:='NOT EMail LIKE '+ QuotedStr('%'+MailHost+'%');
ATable.Filtered:=True;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: TDataset Filter
Filter işlemini query ile hallettim
sorun
yeni kayıt ekliyemiyorum, son kayıta gidemiyorum bu işlemleri yaptığım zaman "out of memory" hatası oluşuyor. program boyutu 21mb veri tabanı boyutu 293mb ancak görev yöneticisinde program boyutu 2gb yakın görünüyor.
sorun
yeni kayıt ekliyemiyorum, son kayıta gidemiyorum bu işlemleri yaptığım zaman "out of memory" hatası oluşuyor. program boyutu 21mb veri tabanı boyutu 293mb ancak görev yöneticisinde program boyutu 2gb yakın görünüyor.
Re: TDataset Filter
Aynı QUERY ile aşağıdaki benzeri komut girerek kayıt ekleyebilirsin...
en sonunda da Query.OPEN veya Query.ACTIVE demeyeceksiniz. Onun yerine Query.EXECSQL diyeceksiniz.
Ondan sonra normal SELECT ile açıp sonucu görebilirsiniz.
Kod: Tümünü seç
INSERT INTO tabloadi ( adi, soyadi ) VALUES ( 'Muharrem', 'ARMAN' )
Ondan sonra normal SELECT ile açıp sonucu görebilirsiniz.