parasal alan kaydı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Ahmet ALTUNTAŞ
Üye
Mesajlar: 94
Kayıt: 10 Tem 2010 08:05
Konum: TEKİRDAĞ

parasal alan kaydı

Mesaj gönderen Ahmet ALTUNTAŞ »

merhaba
edit içerisinde 279,57 gibi bir sayı var.
database sql ve field money olarak tanımlı.
edit içerisindeki rakamı field a kaydettiğimde 27957,00 olarak gözüküyor.
Neden anlayamadım hala yardımcı olabılırmısınız.
Ahmet ALTUNTAŞ
MCP - MCTS
MCSA+S - MCSE+S

Başarı Bir Yolculuktur, Varış Noktası Değil...!
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: parasal alan kaydı

Mesaj gönderen csunguray »

Ne kullanarak kaydediyorsunuz? Doğudan SQL kullanarak mı? 279,57 yerine 279.57 denediniz mi?
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/)
Kullanıcı avatarı
Ahmet ALTUNTAŞ
Üye
Mesajlar: 94
Kayıt: 10 Tem 2010 08:05
Konum: TEKİRDAĞ

Re: parasal alan kaydı

Mesaj gönderen Ahmet ALTUNTAŞ »

merhaba o şekilde denemedim virgülü zaten kendiisi atıyor.
sql sorgu ile kayıt yapıyorum.
Ahmet ALTUNTAŞ
MCP - MCTS
MCSA+S - MCSE+S

Başarı Bir Yolculuktur, Varış Noktası Değil...!
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: parasal alan kaydı

Mesaj gönderen csunguray »

Kod: Tümünü seç

sql sorgu ile kayıt yapıyorum.
Bu cümleden ne anlamam gerktiğini çözemedim. Kayıt yaparken kullandığınız kod falan yok mu?
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/)
Kullanıcı avatarı
Ahmet ALTUNTAŞ
Üye
Mesajlar: 94
Kayıt: 10 Tem 2010 08:05
Konum: TEKİRDAĞ

Re: parasal alan kaydı

Mesaj gönderen Ahmet ALTUNTAŞ »

pardon:)

QryPost.SQL.Text:='insert into Tbl_Odemeler (KartNo,Adi,Soyadi,Departman,BasTarih,BitTarih,Odeme) Values ('
+ #39 + edit4.Text +#39 +','+ #39 + edit5.Text +#39 +','+ #39 + edit6.Text +#39 +','+ #39 + edit7.Text +#39 +
','+ #39 + edit8.Text +#39 +','+ #39 + edit9.Text +#39 +
','+ #39 + edit2.text +#39 +')';

edit2 içerisindeki rakamı Odeme alanına kaydediyorum.
edit2 icerisindeki rakamlar 279,57 yada buna benzer rakamlar oluyor ama field type money iken 27957,000 bu şekilde oluyor alan tipini char yada varchar yaprsam isedigim şekilde kayıt oluyor fakat bu seferde alan toplaması yapmak istedigimde sum kullanırken sıkıntıoluyor.Yada cxgrid kullanmak istedşgşmde alan toplamasında yine hata veriyor.
Ahmet ALTUNTAŞ
MCP - MCTS
MCSA+S - MCSE+S

Başarı Bir Yolculuktur, Varış Noktası Değil...!
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: parasal alan kaydı

Mesaj gönderen aslangeri »

s.a.
programlar varsayılan olarak bilgisayardaki ayarlara göre çalışırlar.bilgisayarın bölgesel ayarlarını kontorl edin bakalım ondalık simgesi "," mi yoksa "." mi.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
Ahmet ALTUNTAŞ
Üye
Mesajlar: 94
Kayıt: 10 Tem 2010 08:05
Konum: TEKİRDAĞ

Re: parasal alan kaydı

Mesaj gönderen Ahmet ALTUNTAŞ »

sayın hocam cok teşekkür ederim ondalık kısmı "." olarak ayarlayınca duzeldi.
Ahmet ALTUNTAŞ
MCP - MCTS
MCSA+S - MCSE+S

Başarı Bir Yolculuktur, Varış Noktası Değil...!
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: parasal alan kaydı

Mesaj gönderen csunguray »

Böyle program yaparsanız program bir çalışır bir hata verir, sonra verem olursunuz. Çünkü prensip olarak kullanıcıyı windowsun bölgesel ayarlarını belirli bir ayara getirmeye zorlamamalısınız.

Seni verem olmaktan kurtarayım.

Kod: Tümünü seç

DecimalSeparator := ',';

QryPost.SQL.Text:='insert into Tbl_Odemeler (KartNo,Adi,Soyadi,Departman,BasTarih,BitTarih,Odeme) Values ('
+ #39 + edit4.Text +#39 +','+ #39 + edit5.Text +#39 +','+ #39 + edit6.Text +#39 +','+ #39 + edit7.Text +#39 +
','+ #39 + edit8.Text +#39 +','+ #39 + edit9.Text +#39 +
','+ #39 + edit2.text +#39 +')';

QueryPost.ExecSQL;

DecimalSeparator := '.';
Aslında bu kod da güvenli değil. Böyle bir işlemde sorgu parametreleri kullanmalısınız.

Örneği kısa yazıyorum:

Kod: Tümünü seç


QryPost.SQL.Text:='insert into Tbl_Odemeler (KartNo, Adi, Soyadi, Odeme) Values (:KARTNO, :ADI, :SOYADI, :ODEME)';
QryPost.Parameters.ParamByName('KARTNO').Value := Edit4.Text;
QryPost.Parameters.ParamByName('ADI').Value := Edit4.Text;
QryPost.Parameters.ParamByName('SOYADI').Value := Edit5.Text;
QryPost.Parameters.ParamByName('ODEME').Value := StrToFloat(Edit2.Text);

QueryPost.ExecSQL;

Bu daha güvenli bir yöntem. Ama ben şahsen okunması ve bakımı daha kolay olduğu için aşağıdaki yöntemi tercih ederim.

Kod: Tümünü seç

QryPost.SQL.Text:= ' select * from Tbl_Odemeler where KartNo = ' + QuotedStr('XYZ');
QueryPost.Open;
QueryPost.Insert;
QryPost.FieldByName('KARTNO').AsString := Edit4.Text;
QryPost.FieldByName('ADI').AsString := Edit4.Text;
QryPost.FieldByName('SOYADI').AsString := Edit5.Text;
QryPost.FieldByName('ODEME').AsFloat := StrToFloat(Edit2.Text);
QueryPost.Post;
QueryPost.Close;

Bu arada bir ifadeyi tırnak arasına almak için 39 + Edit1.Text + 39 yerine QuotedStr(Edit1.Text) kullanın. Çünkü eğer Edit1.Text içerisinde tek tırnak işareti varsa sizin ilk yazdığınız kod hata verecektir. Üstelik bunu bilen biri bilerek Edit1.text içerisinde bilerek tırnak işareti kullanarak programın hata vermesini sağlayabilir. Hatta Edit1.Text içerisine uygun şekilde istediği SQL komutlarını yazıp veritabanınıza zarar verebilir. Buna SQL injection saldırısı denir. Halbuki 2. ve 3. kullanımda bu tehlike yoktur. Yoruldum.
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/)
Kullanıcı avatarı
Ahmet ALTUNTAŞ
Üye
Mesajlar: 94
Kayıt: 10 Tem 2010 08:05
Konum: TEKİRDAĞ

Re: parasal alan kaydı

Mesaj gönderen Ahmet ALTUNTAŞ »

değerli bilgiler için çok teşekkür ederim.
Yazdıklarının hepsini kesinlikle uygulayacagım.
Ahmet ALTUNTAŞ
MCP - MCTS
MCSA+S - MCSE+S

Başarı Bir Yolculuktur, Varış Noktası Değil...!
Cevapla