DBGrid1 Alanını Güncelleme !!!

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

DBGrid1 Alanını Güncelleme !!!

Mesaj gönderen ozcank »

Arkadaşlar Merhaba; Ben DBGrid1 alanında sildirme işlemi yapıyorum bir çok kayıt arasından bir tane iki tane silme işlemi yapıyorum ama silme işleminden sonra tabloyu güncellemek istiyorum sildiğim kayıtlar gözükmesin istiyorum şöyle kod yapım var ;

Kod: Tümünü seç

procedure TForm17.mKaytlarSil1Click(Sender: TObject);
Var
ESILCevap:Byte;
begin
ESILCevap:=Application.MessageBox('Bakiyesi Sıfır Olan Stok Silinecek Eminmisiniz ?','Emanet Sıfır Bakiye Silme', MB_YESNO or MB_ICONQUESTION);
  IF ESILCevap = MrYes Then  // cevap evetse
Begin
ESTOKSIL.SQL.Text:='DELETE FROM TBLEMANET WHERE ESTOK_KODU=:ESKOD';
ESTOKSIL.Parameters[0].Value:= DBGrid1.DataSource.DataSet.FieldByName('ESTOK_KODU').Asstring;
ESTOKSIL.ExecSQL();
ESTOKSIL.Refresh;
Exit;
END
Else IF ESILCevap = MrNo Then
Application.MessageBox('Stok Silinemedi !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION); // hayır seçilirse ( kaydedilmesin
Exit;
End;
Bu kod çalıştığında şu hatayı alıyorum;

Kod: Tümünü seç

---------------------------
Debugger Exception Notification
---------------------------
Project EMNTMENU.exe raised exception class EDatabaseError with message 'ESTOKSIL: Cannot perform this operation on a closed dataset'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------
ESTOKSIL.Refresh; yerine ESTOKSIL.Open; eklediğim zaman da şu hatayı alıyorum;

Kod: Tümünü seç

---------------------------
Debugger Exception Notification
---------------------------
Project EMNTMENU.exe raised exception class EDatabaseError with message 'ESTOKSIL: CommandText does not return a result set'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------


Bana yardımcı olabilir misiniz ? Nasıl güncelleme yapabilirim?
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: DBGrid1 Alanını Güncelleme !!!

Mesaj gönderen csunguray »

Hatayı

Kod: Tümünü seç

ESTOKSIL.Refresh;
satırı için alıyorsunuz. Bir Tablo/Query kapalıyken Refresh komutunu çalıştıramazsınız.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: DBGrid1 Alanını Güncelleme !!!

Mesaj gönderen ozcank »

Peki nasıl yapabilirim ?
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: DBGrid1 Alanını Güncelleme !!!

Mesaj gönderen csunguray »

Refresh, açık olan bir Query'e başkaları tarafından son yapılan değişikliklerin yansıması için kullanılar. Bunun için elinizde bir takım kayıtların döndüğü SQL cümlesi olan Query (veya Tablo) olması gerekir. İkinci olarak da bu Query veya Table ın açık olması gerekir. Aşağıda yazdığınız kodların bunlarla alakası yok.
1. DELETE FROM TBLEMANET WHERE ESTOK_KODU=:ESKOD SQL komutu kayıt geri döndüren (okuyan) bir komut değil. Kayıt silen bir komuttur. Bir Query içerisine bu komutu yazıyorsanız bu Query'i Open ile açamazsınız. Ancak ExecSQL ile komutu çalıştırırsınız; komut çalışır ve görev biter. Elimizde geriye sadece bazı kayıtların silindiği sonucu kalır, herhangi bir kaydı okumuş olmayız.

2. Eğer Queryi içerisindeki yukarıdaki SQL komutu varken Open ile açmaya kalkarsanız ESTOKSIL: CommandText does not return a result set (Komut bir sonuç seti döndermiyor) hatasını alırsınız. Open dediğinizde bu hatayı almak istemiyorsanız Query içerisinde "SELECT" ile başlayan bir SQL deyimi yazın. Ondan sonra da gelen kayıtları istediğiniz kadar Refresh yapın.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: DBGrid1 Alanını Güncelleme !!!

Mesaj gönderen ozcank »

Şunu yapabilirmiyim ?

ESTOKSIL.Refresh; Yerine ESTOKSIL Query sinde Properties de SQL de TString de String List Editor de SQL kodunu kullanabilir miyim ?

ESTOKSIL.Properties.SQL.StringListEditor.Refresh; gibi
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: DBGrid1 Alanını Güncelleme !!!

Mesaj gönderen csunguray »

Kafaya taktım, illa Refresh kullanacağım, kimse bana engel olamaz diyorsunuz? Yapmaya çalıştığınız nedir? Bundan bahsederseniz belki daha doğru bir yöntem önerebiliriz.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: DBGrid1 Alanını Güncelleme !!!

Mesaj gönderen ozcank »

Aslında hayır kafaya takmadım sadece program içerisinde kod kullanmadan çözebilir miyim diye uğraşıyorum. Ben şunu yapıyorum;

AdoQuery / Properties / SQL / String List Editör de Sıfır bakiyeleri bulan bir SQL cümlem var . Dedim ki bu cümle burda yazıyor sa ben bunu kullanayım program içerisinde bir daha select ile başlayan kod yazmayayım.:) ama başaramadım zaten sql cümlesini programda kullanınca sorun çözülüyor.
Cevapla