Hocam malesef Çözemedim. Hem fonksiyonla çevirme yaptım hemde elle yazdım ama yapamadım. Şimdi hocam bu şekilde yazdığımsa ( 99.15 ) sorun oluyor. virgülle yazsam yine sorun oluyor. Aşağıda denediğim hali var. Acaba sorun ifade şeklindenmi ? sizin yazdığınız yapı biraz daha farklı.
Querybos.SQL.TExt:=' insert into YAPILMIS_DOLUMLAR(SNO,FIRMA_NO,FIRMA_ADI,TARIH,KILO,STOK_KODU,STOK_ADI) Values('+
' ' + FloatTOStr(sno) + ','+
'' + FLoatTOStr(QDOLUMFIRMA['FIRMA_KODU']) + ','+
'''' + QDOLUMFIRMA['FIRMA_ADI'] + ''','+
'''' + DateToStr(DAte) + ''','+
'' + FloatTOStr(99.15) + ','+
// '' + FloatTOStr(IBQuery2['KILOSU'])+ ','+
'' + FloatTOStr(QDOLACAKTUPLER['STOK_KODU']) + ','+
'''' + QDOLACAKTUPLER['STOK_ADI'] + ''')';
Querybos.ExecSQL;
nokta virgül sorunu
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
malesef hala anlamamıssınız ne demek istedigimi
'' + FloatTOStr(99.15) + ','+
bu satırda 99.15 desenizde 99,15 desenizde delphi bunu sayısal bir deger olarak ele alacak FloatToStr ile Bolgeselayarlarınız esligindestringe donusturulecek, cevabıda haliyle
99,15 olacak ve firebird bunu 9915,00 olarak degerlendirecek
bu satır yerine
'' + QuotedStr('99.15') + ','+ dediginiz takdirde aradaki farkı goreceksiniz,
zira 99.15 bir string olarak sorguya eklenecek ve firebirde 99.15 olarak gidecek
eger bundan sonra da anlasılmazsa bu kafayı kestirecegim

'' + FloatTOStr(99.15) + ','+
bu satırda 99.15 desenizde 99,15 desenizde delphi bunu sayısal bir deger olarak ele alacak FloatToStr ile Bolgeselayarlarınız esligindestringe donusturulecek, cevabıda haliyle
99,15 olacak ve firebird bunu 9915,00 olarak degerlendirecek
bu satır yerine
'' + QuotedStr('99.15') + ','+ dediginiz takdirde aradaki farkı goreceksiniz,
zira 99.15 bir string olarak sorguya eklenecek ve firebirde 99.15 olarak gidecek
eger bundan sonra da anlasılmazsa bu kafayı kestirecegim


ÜŞENME,ERTELEME,VAZGEÇME
merhaba aynı sorun bendede varda
aynı sorun bendede var
15,35 olması gereken değer veritabanında ve oradan tekrar geri yansıdığında 1535 oluyor buda beni gerçekten üzüyor buradaki uygulamayı denemeye çalıştım ama nedense yapamadım.
QuotedStr yi kullanadam aslında durmadan hata beriyor özellikle sql sorgusu içinde bunun kullanılabilmesi için uses kısmına birşeymi eklemem gerekiyor? acaba kodum şu şekilde.
bu kod normalade kayıt yapıyor ve çalışıyor ama dediğim gibi t2,t3 ve t4 deki (bunlar edit nesneleridir.) değerleri ondalıksız veritabanına yansıtıyorlar.
veritabanı firebird 1.5
15,35 olması gereken değer veritabanında ve oradan tekrar geri yansıdığında 1535 oluyor buda beni gerçekten üzüyor buradaki uygulamayı denemeye çalıştım ama nedense yapamadım.
QuotedStr yi kullanadam aslında durmadan hata beriyor özellikle sql sorgusu içinde bunun kullanılabilmesi için uses kısmına birşeymi eklemem gerekiyor? acaba kodum şu şekilde.
Kod: Tümünü seç
sorgu1.SQL.Add('update stokutup set skal='''+t2.Text+''',karorani='''+t3.Text+''',sksat='''+t4.text+''',fiyattarih='''+datetostr(date)+''' where skbn='''+sorgu.FieldValues['skbn']+'''');
sorgu1.ExecSQL;
veritabanı firebird 1.5
NASIL ÖLECEĞİNİ BİLEN NASIL YAŞANILACAĞINI BİLİYOR DEMEKTİR.
Merhaba,
Ben farklı bir yaklaşım düşünüyorum.
Bölgesel ayarlara girerek virgül kısmını nokta yapın sorununuz çözülmüş olacaktır.
örn:=TL işlemini ben YTL olarak burdan yapıyorum.
Saygılarımla kolay gelsin.
Ben farklı bir yaklaşım düşünüyorum.
Bölgesel ayarlara girerek virgül kısmını nokta yapın sorununuz çözülmüş olacaktır.
örn:=TL işlemini ben YTL olarak burdan yapıyorum.
Saygılarımla kolay gelsin.
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]
_________________
_________________
benim yazdığım bir function. insert yada update yapmadan Sql e ekleyeceğiniz parasal değer alanının verisini bu fonksiyondan donen değer ile değiştiriniz. sistem ayarlarıyla oynamanıza gerek yoktur. Olay budur.
//*****************************
function GetSQLParaDegeri( ParasalDeger:Double ):String;
var
TutarStr:String;
begin
{* Para değerlerinde virgül yerine nokta olmalı *}
TutarStr:= FLoatToStr(ParasalDeger);
While Pos(',',TutarStr)>0 do
TutarStr[Pos(',', TutarStr)] := '.';
Result:= TutarStr;
end;
//*****************************
Kullanımı ;
Qry.Close;
Qry.Sql.Clear;
Qry.Sql.Add( 'Insert TabloAdi(ParaAlani) values(' );
Qry.Sql.Add( GetSQLParaDegeri(ParaDegeri) +')' );
Qry.Execute;
***Interbase, Ms-Sql vs. her yerde kullanabilirsiniz.
//*****************************
function GetSQLParaDegeri( ParasalDeger:Double ):String;
var
TutarStr:String;
begin
{* Para değerlerinde virgül yerine nokta olmalı *}
TutarStr:= FLoatToStr(ParasalDeger);
While Pos(',',TutarStr)>0 do
TutarStr[Pos(',', TutarStr)] := '.';
Result:= TutarStr;
end;
//*****************************
Kullanımı ;
Qry.Close;
Qry.Sql.Clear;
Qry.Sql.Add( 'Insert TabloAdi(ParaAlani) values(' );
Qry.Sql.Add( GetSQLParaDegeri(ParaDegeri) +')' );
Qry.Execute;
***Interbase, Ms-Sql vs. her yerde kullanabilirsiniz.