Arkadaşlar yeniden merhaba. Yeniden başka bir sorunla karşınızdayım.
Bu seferki sorunum tablomun içindeki tekrar kayıtları yaptıramamam. Kodlarımdaki mantık düzgün gibi gözüküyo ama geriye hiç bişey döndürmüyo. Kodlarım:
while not adotable3.Eof do
begin
if adotable3.Locate('STOK_KODU',dbedit4.Text,[]) then
begin
showmessage('Girilmesi istenen stok zaten mevcut.');
adotable3.Delete;
adotable3.append;
dbedit4.SetFocus;
end
else
adotable3.Append;
end;
mkysoft yazdı:bunu kodlarla yapmak yerine veri tabanından yapmalısın. Stok_kodu alanını uniq olarak işaretlersen kaydedilmez.
Dediğiniz mantıklı ama veritabanı ingilizce olduğu zaman verdiği uyarı kullanıcıyı rahatsız edebilir. O yüzden amacım kontrol altına almak ve ona göre kodlar işletmek. Eğer kodlarımda hata varsa belirtin lütfen.
s.a.
eğer adotable3 de son kayıt seçili değilse bu kod sonsuz döngüye girer gibime geliyor.
döngüyü kaldır ona gerek yok.
locate den önce tablodaki ilk kayıda konumlan.
kaydı bulduğun zaman niye siliyorsun?
table daki kayıtlar çoğaldıkça bu işlem pek işe yaramaz ve çok yavaşlar işlemler. Bunun yerine kayıdı tuttuğunuz stok_kodu ile
select count(*) kayit_say kodu from adotable where stok_kodu=:stok_kodu
if kayit_say>0 then
işemler
...
....
derseniz formdan giriş yapılan alanıda(:stok_kodu) sorguya parametre geçirirseniz işlemleriniz daha hızlı olacaktır.
bu code ise kaydet düğmesinin key_pressed düğmesine yazarsınız.
mkysoft yazdı:bunu kodlarla yapmak yerine veri tabanından yapmalısın. Stok_kodu alanını uniq olarak işaretlersen kaydedilmez.
Dediğiniz mantıklı ama veritabanı ingilizce olduğu zaman verdiği uyarı kullanıcıyı rahatsız edebilir. O yüzden amacım kontrol altına almak ve ona göre kodlar işletmek. Eğer kodlarımda hata varsa belirtin lütfen.
İlginiz için teşekkürler.
O halde kayıt kodunu try-except bloğu içinde yaparak olayı kontrol altına alabilirsiniz. Başka bir yol da AppEvents bileşeninin onException olayında mesajı kontrol altına almak olabilir. Kolay gelsin.
Şaban Şahin AKMAN
_________________ Derin olan kuyu değil kısa olan iptir. - .