sorgulamayı sonlandırmak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
sorgulamayı sonlandırmak
merhaba
bir sorgulama işlemi çok uzun sürerse kullanıcıya bu işlemden vazgeçmesi için bir buton ile seenek sunmak istiyorum, fakat sorgu çalıştığı için butona basamiyor ve sorgu sona ermiyor?
tavsiyeniz nedir arkadaşlar
bir sorgulama işlemi çok uzun sürerse kullanıcıya bu işlemden vazgeçmesi için bir buton ile seenek sunmak istiyorum, fakat sorgu çalıştığı için butona basamiyor ve sorgu sona ermiyor?
tavsiyeniz nedir arkadaşlar
Bence şöyle bir deneyin.Sorgulamaya başlamadan önceki datasetin içerdiği sql cümleciğini bir stringe atayın mesela MevcutSQL adında.Vazgeç butonuna tıklayınca şu aşağıdaki kod çalışsın.
var mevcutSQL:String;//Bunu formun başında tanımla genel olsun.
Sorgulama yordamına şöyle
Begin
MevcutSQL:=Datasetim.Sql;
//sonrada sql sorgunu yaz.
..........................
....................
end;
Vazgeç butonuna da
Datasetim.close;
Datasetim.sql.clear;
Datasetim.sql.add(MevcutSQL);
Datasetim.open;
Seni yanlış anladıysamda kusura bakma.
Sanırım böyle çalışır.Olmazsa tekrar başka bir şeyler düşünürüz.
var mevcutSQL:String;//Bunu formun başında tanımla genel olsun.
Sorgulama yordamına şöyle
Begin
MevcutSQL:=Datasetim.Sql;
//sonrada sql sorgunu yaz.
..........................
....................
end;
Vazgeç butonuna da
Datasetim.close;
Datasetim.sql.clear;
Datasetim.sql.add(MevcutSQL);
Datasetim.open;
Seni yanlış anladıysamda kusura bakma.
Sanırım böyle çalışır.Olmazsa tekrar başka bir şeyler düşünürüz.
evet yarıda kesmek istiyorum,
soyle yapiyorum sorgulama baslamadan bir ufak bir formda animation oynatiyorum, sorgulama bitince de form ve animationu kapatiyorum
ama bazen adamin arama kriterinden dolayı takılıp kalmış gibi bir izlenim oluyor bu nedenle kullanıcıya vazgeçmesi için o formda bir buton koyup sorgulamayı kesmek istiyorum, fakat form aktif sorgu arkada iken o butona basamiyorum ve kaliyor oyle, hem butona tıklayabileyi hemde sorguyu sonlandirabilmeliyim
fikir yuruten arkadaslara tesekkurler
soyle yapiyorum sorgulama baslamadan bir ufak bir formda animation oynatiyorum, sorgulama bitince de form ve animationu kapatiyorum
ama bazen adamin arama kriterinden dolayı takılıp kalmış gibi bir izlenim oluyor bu nedenle kullanıcıya vazgeçmesi için o formda bir buton koyup sorgulamayı kesmek istiyorum, fakat form aktif sorgu arkada iken o butona basamiyorum ve kaliyor oyle, hem butona tıklayabileyi hemde sorguyu sonlandirabilmeliyim
fikir yuruten arkadaslara tesekkurler
bence bu çok zor
bu tür bişe işlemde diğer düğmelerle işlem yapmakta baya zor. işlem bitene kadar düğme basılı gözüküyor. (ben de böyle bişey yapmak istiyordu ama olmamıştı)
bu tür bişe işlemde diğer düğmelerle işlem yapmakta baya zor. işlem bitene kadar düğme basılı gözüküyor. (ben de böyle bişey yapmak istiyordu ama olmamıştı)
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]
_________________
_________________
Arkadaşlar şu an derleyicim yanımda yok.Tam yazamıyorum.Ama bu tip durumlar için delphinin bir fonksiyonu var.Programda bir kod çalışırken diğer işlemleri yapmaya yarayan bir kod.Bir terim.Aklıma gelirse hemen yazarım.O kod sayesinde vazgeç butonuna veya istediğiniz her butona basabilirsiniz.Kod arka planda çalışıyor ama kontrolü windowsa bırakıyor.
Kolay gelsin
Kolay gelsin
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
merhaba bu tür işlemlerde application.processmessages; demen yeterli bu özellik istenildiği anda işlemi başka bir olaya aktarabilir. özellikle for ile kurulan döngülerde ben bu özelliği kullanıyorum. bu windowsun bir özelliği aslında. çalışan uygulamalar arası geçiş için işlemci kullanımını ayarlıyor. bir arkadaşım tablo taraması yapıyordu ve işlem çok uzun oluyordu. işlem bitmeden de başka işlemlere geçemiyordu sadece yukarıdaki kodu ekledim döngü sonuna işini halletti. artık tarama bitmeden başka işlemlere geçebildiğini gördü. veya işlemi sonlandırabiliyordu. tabi senin istediğin olay bu ise yanlış anlamadıysam .kolay gelsin.
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
arkadaşlar dan biri sorguyu close yaparak kapat demiş bir diğeri çok zor demiş. burda mesele o anda hiçbirşey yapamamak zaten dediğin gibi close olabilir ancak close koduna gelmeden sorgunun bitmesi gerekiyor. sorgu bitmeden de close komutuna geçmez. olay dediğim gibi sorgudan çıkmak yada sonlandırmak yada başka bir uygulamaya geçmek ise yukarıda yazdığım kod bu işlemi sağlıyor. yani işlemci ve hafıza kullanımlarını ayarlıyor. kolay gelsin
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
konuya ilgi için teşekkürler arkadaşlar ama cok can sıkan bir olay bu o nedenle halletmeliyim
application.processmessages;
satırını hem sorguyu.Open dedigim yerde hemde actigim bekletme formunun onshow kismina yazdim fakat bu formdaki butona tıklayamiyorum ve formu kapatip devam edemiyorum halen, takılı kalıyor yine,
ekstra başka birşey yapmam gerekiyormu?
application.processmessages;
satırını hem sorguyu.Open dedigim yerde hemde actigim bekletme formunun onshow kismina yazdim fakat bu formdaki butona tıklayamiyorum ve formu kapatip devam edemiyorum halen, takılı kalıyor yine,
ekstra başka birşey yapmam gerekiyormu?
Bu kodu incele işine yarayacağından eminim.
Saygılarımla.
Kod: Tümünü seç
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Caption := 'Ignore Messages';
Button2.Caption := 'Process Messages';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
I, J, X, Y: Word;
begin
I := 0;
J := 0;
while I < 64000 do
begin
Randomize;
while J < 64000 do
begin
Y := Random(J);
Inc(J);
end;
X := Random(I);
Inc(I);
end;
Canvas.TextOut(10, 10, 'The Button1Click handler is finished');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
I, J, X, Y: Word;
begin
I := 0;
J := 0;
while I < 64000 do
begin
Randomize;
while J < 64000 do
begin
Y := Random(J);
Inc(J);
Application.ProcessMessages;
end;
X := Random(I);
Inc(I);
end;
Canvas.TextOut(10, 10, 'The Button2Click handler is finished');
end;
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]
_________________
_________________
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
terslik kod da değilde senin kurguladığın olayda olabilir. ana konu belli ancak yine de nasıl yaptığınında önemi var. bu işlem sırasında başka bir form mu açılıyor yoksa bu işlem tamamen başka form açılıp o unit üzerinde mi oluyor anlayamadım. bu kod la ben çok döngüden kolayca kurtuldum. yani bizzat kullandım. benim bildiğim başkaca yöntemde yok. onshow veya oncreate gibi form oluşumu veya gösterilmesi gibi olaylara yanlış kod yazmak stack yapabilir. bu nedenlede program kilitlenebilir. bence sen ne yapmak istediğini de açık yazarsan yani olaylar tek unittemi yoksa başkaca unit bu işin içine dahilmi?
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
şuan deneyemicem ama sorguyu bi thread içinde çalıştırıp, butona bağlı bi eventla kesmeyi deneyin;progressmessage işe yaramaz.
.-.-.-.-.-.-.-. ^_^
soyle oluyor anlatayim
ana formumdan arama yapiyorum, sorguyu calistirmadan hemen once baska bir form uniti de farkli show ediyorum, sorgu bitince de zaten close oluyor o form, yani yeni acilan formda sadece hareketli bir animation ve bir button var.
butona tikladiginda formun kapanmasini ve sorgunun da durmasini istiyorum
ana formumdan arama yapiyorum, sorguyu calistirmadan hemen once baska bir form uniti de farkli show ediyorum, sorgu bitince de zaten close oluyor o form, yani yeni acilan formda sadece hareketli bir animation ve bir button var.
butona tikladiginda formun kapanmasini ve sorgunun da durmasini istiyorum