nokta virgül sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
bilbeyi
Üye
Mesajlar: 104
Kayıt: 24 Kas 2004 10:48
Konum: ist

Mesaj gönderen bilbeyi »

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;
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

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 :shock: :roll:
ÜŞENME,ERTELEME,VAZGEÇME
bilbeyi
Üye
Mesajlar: 104
Kayıt: 24 Kas 2004 10:48
Konum: ist

Mesaj gönderen bilbeyi »

hocam size çok zahmet verdim cevaplar için teşekkür ederim.
sorunu şimdi çözdüm.
sürekli denemeler yapıyordum o arada QuotedStr gibi yerlerde atlamalar yapmışım.

vakit ayırdğınız için tekrar teşekkürler.

Saygılarımla ...
Kullanıcı avatarı
fatih1841
Üye
Mesajlar: 3
Kayıt: 15 Eki 2005 10:58

merhaba aynı sorun bendede varda

Mesaj gönderen fatih1841 »

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.

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;
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
NASIL ÖLECEĞİNİ BİLEN NASIL YAŞANILACAĞINI BİLİYOR DEMEKTİR.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

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.
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]
_________________
Kullanıcı avatarı
fatih1841
Üye
Mesajlar: 3
Kayıt: 15 Eki 2005 10:58

Mesaj gönderen fatih1841 »

iyide o zaman bu programı başka birinin bilgisayaranı kuramak istediğimde onunda ayarlarını değiştirmem gerek. ben en az değişiklikle en çok işi yapmalıyım çünkü aynı mantıkla başka bir program bu ayarı değiştirirse. benim program çöker.
NASIL ÖLECEĞİNİ BİLEN NASIL YAŞANILACAĞINI BİLİYOR DEMEKTİR.
dkiraz
Üye
Mesajlar: 7
Kayıt: 08 Ara 2004 01:54
İletişim:

Mesaj gönderen dkiraz »

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.
Cevapla