veritabanımda numeric alanlarım var. editlerden girdiğim değerle daha önceden veritababanımda kayıtlı olan numeric alanları güncelliyeceğim. fakat bana hata veriyor. yani editleri direk atınca olmuyor. strtofloat(edit1.text) die çevirincede hata veriyor. bunu nasıl yapmam gerekiyor? yardımcı olabilirmisiniz.
kodum aşağıdaki gibi
with veri.sorgutaksit do
begin
close;
sql.clear;
sql.text:='update STKTAKSIT set AY1='+suiedit2.text+' where ID='+QuotedStr(mmenu.kod.Text);
execsql;
end;
hocam orda quotedstr den değilde AY1 alanımı güncelliyorum ya. orda hata veriyor. tek sorun AY1 alanınım numeric olması ve editteki değerle güncellemek istemem.
QuotedStr alanımla ilgili bi sorun yok. zaten ID alanı veritabanında string olarak özel bi kodlama şeklinde tutuluyor. string+nümeric karışımı. o yüzden orda bi sorun yok.
ii çalışmalar
kolay gelsin
procedure ......
var
Y_DecimalSeparator: Char;
begin
Y_DecimalSeparator := DecimalSeparator;
DecimalSeparator := '.';
with veri.sorgutaksit do
begin
close;
sql.clear;
sql.text:='update STKTAKSIT set AY1='+suiedit2.text+' where ID='+QuotedStr(mmenu.kod.Text);
execsql;
end;
DecimalSeparator := Y_DecimalSeparator;
end;
ylmz hocam program ilk açılırken bölgesel ayarları yaptırıyorum zaten. mesela burda suiedit2.text'in içindeki sayıyı özellikle virgüllü girmiyorum denemek için. ama o halde bile olmuyo. bana göre
hocam yukardıda da belirttiğim gibi alanlarım numeric. o alanlar double olarak işliyor. eğer ben dediğiniz gibi strtofloat(edit1.text) die yaparsam o zaman tip uyuşmazlığı dior. string to double hatası veriyor. ve exeyi hiç çalıştırmıyor:(
hocam execsql den önce savetofile ile bi dosyaya yazdır bakalım sql ini
o zaman daha rahat anlarsın hatanın nerede olduğunu.Birde hatanın kendisini yazmamıssın.Kolay gelsin.
var s:string;
begin
s:=Format('update STKTAKSIT set AY1=%d where ID=%s',[strtoint(suiedit2.text),QuotedStr(mmenu.kod.Text)]);
with veri.sorgutaksit do
begin
close;
sql.clear;
sql.text:=s;
execsql;
end;
end;
hocam bu kod senin field isimlerinde bir sorun yoksa ve AY1 de interger se çalışır.
kolay gelsin.
hocam tşk ederim. dediğiniz gibi yazınca çalıştı kodum. fakat bi sorum daha olcak. az önce patron geldi de. taksitlendirmeyi hesaplattığım kısımda da virgüllü olarak gelsin editler dedi. bende öyle olunca orayada husoedit koydum. fakat onun değeri float sanırım. float şeklinde sölemek için %d yi ne olarak değiştiriyoruz?
s:=Format('update STKTAKSIT set AY1=%d where ID=%s',[(HusoEdit1.Value(HusoEdit1.Text)),QuotedStr(edit1.Text)]);
with veri.sorgutaksit do
begin
close;
sql.clear;
sql.text:=s;
execsql;
end;
%f diyince alanları yuvarlayarak yazdı. mesela 54.54 dediysem veritabanına 55 olarak kaydetti. %f yada %d yerine ne yazarsam virgüllü olarak görünür?
var s:string;
begin
s:=Format('update dene set numara=%18.2f where id=%d',[(HusoEdit1.Value(HusoEdit1.Text)),strtoint(edit2.text)]);
with sorgu do
begin
close;
sql.clear;
sql.text:=s;
execsql;
end;
end;
yardımcı olmaya çalışan herkese çok tşk ederim
kolay gelsin
ii çalışmalar