Kayıt değişir değişmez uyarı vermeliyim ama nasıl?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Kayıt değişir değişmez uyarı vermeliyim ama nasıl?
s.a
delphi 7 + firebird kullanıyorum.
bi dataset var. dataset'e selectsqlinde lazım olan kayıtları aldırıyorum.
bi dbgrid var bu dataset'e bağlı olan.
dataset'in cachedupdate özelliği false olarak kullanıyorum çünkü dbgridde yapılan anlık değişimlerin hemen database'e yansıması gerekiyor.
bi field var(varchar). eğer o fieldin değeri silinirse program anında uyarı versin ve onay alsın istiyorum. mesela field'de "TAHSİL EDİLDİ" yazıyor.
şahış "TAHSİL EDİLDİ" yazısını onay almadan (messagedlg) silemesin istiyorum. nasıl yapabilirım sizce? i
delphi 7 + firebird kullanıyorum.
bi dataset var. dataset'e selectsqlinde lazım olan kayıtları aldırıyorum.
bi dbgrid var bu dataset'e bağlı olan.
dataset'in cachedupdate özelliği false olarak kullanıyorum çünkü dbgridde yapılan anlık değişimlerin hemen database'e yansıması gerekiyor.
bi field var(varchar). eğer o fieldin değeri silinirse program anında uyarı versin ve onay alsın istiyorum. mesela field'de "TAHSİL EDİLDİ" yazıyor.
şahış "TAHSİL EDİLDİ" yazısını onay almadan (messagedlg) silemesin istiyorum. nasıl yapabilirım sizce? i
fieldin onchange olayına bişeyler yazdım.
ama şöyle bir sorun var. PEKİ işlemi silmek istemezse eski değeri ben nerden bulucam? yani ??? olan yere nasıl bi kod yazıcam.?
Kod: Tümünü seç
if anaform.crhr_datasetHR2.text='' then
begin
if messagedlg('İşlemi silmek istediğinizden eminmisiniz?',mtwarning,[mbyes,mbno],0)=Mrno then
begin
??????
end;
end;
kardeş yapmışsın zaten.bitmiş sen sadece şunu yapacan
..kolay gelsin istersen sana silem için bi sql gonderebilirim gerçi sen yaparsın...
Kod: Tümünü seç
if anaform.crhr_datasetHR2.text='' then
begin
if messagedlg('İşlemi silmek istediğinizden eminmisiniz?',mtwarning,[mbyes,mbno],0)=Mryes then
begin
buraya bi query ile o değeri silecen eğer evet ise demişiz dikkat et.eğer hayır seçerse bi işlem yapılmayacak zaten..
end;
end;
Selamlar,
Burada dikkat çekici bir nokta var.
TEdit'ler de herhangi bir şeyi yazarken eğer kullanıcı Escape tuşuna basarsa eski değerini yerine koyar edit. Eğer Kullanıcı Edit'i terkederse (yani edit Focus kaybederse) yeni girilen bilgi Text'in asıl alanına yazılır, yani yeni bilgi artık çıkarkenki bilgi olur.
Şimdi adam edite girdi ve sildi. Hiçbir şey yapmadan Edit'ten de çıkmadan Escape'e basarsa problem yok, eski bilgi duruyor demektir.
Bu durumda sizin isediğinizi ben anlamadım. Tam olarak işlemi anlatır mısınız? Yani neyi hedefliyorsunuz? Belki de yanlış bir yol üzerinde hareket ediyor olabilirsiniz.
Kolay Gelsin
Burada dikkat çekici bir nokta var.
TEdit'ler de herhangi bir şeyi yazarken eğer kullanıcı Escape tuşuna basarsa eski değerini yerine koyar edit. Eğer Kullanıcı Edit'i terkederse (yani edit Focus kaybederse) yeni girilen bilgi Text'in asıl alanına yazılır, yani yeni bilgi artık çıkarkenki bilgi olur.
Şimdi adam edite girdi ve sildi. Hiçbir şey yapmadan Edit'ten de çıkmadan Escape'e basarsa problem yok, eski bilgi duruyor demektir.
Bu durumda sizin isediğinizi ben anlamadım. Tam olarak işlemi anlatır mısınız? Yani neyi hedefliyorsunuz? Belki de yanlış bir yol üzerinde hareket ediyor olabilirsiniz.
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
sayın Kuri_YJ olayı şöyle anlatayım. bir DBGRİDde bi field var. orda '02.02.2006 TAHSİL EDİLDİ' yazıyor. diyelim ki eleman bu field'e gelip backspace ile '02.02.2006 TAHSİL EDİLDİ' yazısını sildi ve o hücreyi terk etti. işte tam bu anda ben bi onay almak istiyorum eğer onaydan hayır cevabı gelirse field tekrar '02.02.2006 TAHSİL EDİLDİ' olsun istiyorum
Merhaba;
Aşağıdaki gibi denediniz mi?
Kolay gelsin.
Aşağıdaki gibi denediniz mi?
Kod: Tümünü seç
procedure TForm1.IBDataSet1GIRISLERChange(Sender: TField);
begin
if messagedlg('İşlemi silmek istediğinizden eminmisiniz?',mtwarning,[mbyes,mbno],0)=Mrno then
begin
ibdataset1.Cancel;
end;
end;
Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Logo Go özel eğitim, web tasarım, teknik servis
selam kayıt değişirse nasıl olur bilmem ama kayıt silinirse şöyle yapabilirsin kendine bir mesajformu oluşturursun.Üzerinde evet hayır butonları ve Bu kaydı silmek istediğiniz eminmisiniz gibisinden bir label koyarsın..daha sonra datasetin fields editöründe ilgili fieldsin
OnChange olayına
yazarsın.Mesaj formdaki evet butonuna
hayır butonuna ise
yazarsın.sanırım iş çözülür bu şekilde..
OnChange olayına
Kod: Tümünü seç
if IBDataset1ALAN_ADI.text='' then
mymesajform.showmodal;
Kod: Tümünü seç
close;
Kod: Tümünü seç
IBDataset1.cancelupdates;
close;
yardımlarınız için hepinize çok teşekkürler arkadaşlar.
aşagıdaki iki kod da aynı işi gördü ve sorun çözüldü.
ama kafama takılan bir soru var? bu iki kod da aynı işi gördüyse (veya görüyosa) neden 2 farklı kod? yani bunlar arasında illa ki bi fark vardır ama yaptığım bütün testlerde aynı sonuçları verdiler. 
aşagıdaki iki kod da aynı işi gördü ve sorun çözüldü.
Kod: Tümünü seç
dataset.cancel;
dataset.cancelupdates;

Merhaba,
Cancel kullanıldıktan sonra dataset dsbrowse durumuna alınıyor.
Ayrıca helpte ,cancelupdate te tek kayıt için uygulanacaksa revertrecord u çağırmayı uygun görüyor.
Sanırım datasetlerde cached update in true ve false oluşuna göre cancelupdate etkili oluyor.
Kolay gelsin.
Cancel içinnitrokonat yazdı:ama kafama takılan bir soru var? bu iki kod da aynı işi gördüyse (veya görüyosa) neden 2 farklı kod? yani bunlar arasında illa ki bi fark vardır ama yaptığım bütün testlerde aynı sonuçları verdiler.
cancelupdate;Delphi Help yazdı: Cancels modifications to the current record if those changes are not yet posted.
İngilizcem o kadar iyi değil ama cancel update cache bufferda bulunan bilgileri silip aktif kayıttaki bilgilerin ilk değerini getiriyor.Delphi Help yazdı: Clears all pending cached updates from the cache and restores the dataset its prior state.
Cancel kullanıldıktan sonra dataset dsbrowse durumuna alınıyor.
Ayrıca helpte ,cancelupdate te tek kayıt için uygulanacaksa revertrecord u çağırmayı uygun görüyor.
Sanırım datasetlerde cached update in true ve false oluşuna göre cancelupdate etkili oluyor.
Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Logo Go özel eğitim, web tasarım, teknik servis