query Cannot perform this operation on a closed dataset

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
FXERKAN
Üye
Mesajlar: 178
Kayıt: 26 Tem 2003 11:06
Konum: Sivas - Konya
İletişim:

query Cannot perform this operation on a closed dataset

Mesaj gönderen FXERKAN »

arkadaşlar başka bir projemde kullandğım sql kodu şimdi saçmalayama başladı. kod işte şöyle

procedure Tanaform.txaraChange(Sender: TObject);
var
sqlvalue : string;
begin

sqlvalue := ('select * from data where ' + 'BASLIK LIKE ''' + '%' + txara.Text + '%' + '''' +
' or ' + 'MEVZUAT LIKE ''' + '%' + txara.Text + '%' + ''' ');

if sqlvalue <> '' then
begin
anaform.qer.Close;
anaform.qer.SQL.Clear;
anaform.qer.SQL.Add(sqlvalue);
anaform.qer.Open;
qer.Active := true;
end;


end;


ya bu ko önceden en ufak bir hata vermiyorda ve halen önceki projede sorun vermiyor ancak bu projemde hata veriyor.

hata da başlıkta olduğu gibi query = cannot perform this operation on a closed dataset

oysaki query aktif hale getiriyorum yada açıyorum sorun nedir?
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

hocam bu hata kapalı datasette bu işlemi yapamazsın demek. En güzeli adım adım çalıştırıp bu hatanın hangi satırdan kaynaklandığını bulmak.

Burda tek sırıtan satır qer.Active := True; satırı. bunu bir kaldırıp dene. amacı nedir bu satırın burda bunuda anlamadım.

Sana bir daha yazmıştım dikkatini çektimi bilmiyorum ama

Query1.Open ile Query1.Active := True aynı şeyler. İkisinden sadece birini kullanan lazım :!:

Kolay gelsin.
Kullanıcı avatarı
FXERKAN
Üye
Mesajlar: 178
Kayıt: 26 Tem 2003 11:06
Konum: Sivas - Konya
İletişim:

Mesaj gönderen FXERKAN »

abi biliyorum aynı mesajı birdaha attığımı ve hatta aynı mesajı sizinde yazdığınızı ancak

open dediğim zaman çalılıyor fakat anlamadığım bir şekilde sorun çıkartıyor.

yine bu mesajı. sadece active dediğim zamanda aynı şeyi yaptı. bende ikisini kullansam ne olur dedim ve çalıştı.

ancak bu projede her ikisi içinde sorun çıkartıyor.

:-)
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

öcelikle sorgu yapcan table ı bi kontrol et istersen. table.active := true; olmalı,

query e gelince

query.active := False;
-----
-----
query.prepare;
query.active := true;
şeklinde bi dene istersen..

kolaygelsin
monet
Üye
Mesajlar: 68
Kayıt: 26 Şub 2004 02:12
Konum: İstanbul

Mesaj gönderen monet »

qer.open;
qer.active := true;

demi$siniz.. dogrusu

qer.active := true;
qer.open;

olacak eger iksiini birden kullancaksaniz.. active üstte olucak yani

kolay gelsin
MT
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

Merhaba

Kod: Tümünü seç

procedure Tanaform.txaraChange(Sender: TObject); 
var 
   sqlvalue : string; 
begin 
   sqlvalue := 'select * from data where baslik like '+'%'+txara.Text+'%'+' or mevzuat like '+'%'+txara.Text+'%'; 
   if sqlvalue <> '' then 
   begin 
        anaform.qer.Close; 
        anaform.qer.SQL.Clear; 
        anaform.qer.SQL.Add(sqlvalue); 
        anaform.qer.Open; 
   end; 
end; 

Parantez İsretlerini kullanmasından dolayı, o da belki, string değer almayabilir. Ve open dediğinde açma işleminde hata vermiyebilir....

Normalde closed dataset hatasını burada vermemesi lazımdı... Yukarıda şekilde sql cümlesini değiştirdim bir incele bakalım sonuç ne olacak...
Bir de başıma geldi bir ara ki bu önemli ... Anaformun create sırası önemli... Bağlantı bileşenlerinden önce create oluyorsa hata vermeden closed dataset mesajını almanız doğaldır... Kodu denemedim... Sonucu beklerim...

Kolay Gelsin... :wink:
Cevapla