insert into ile float alanı kaydetme..

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

insert into ile float alanı kaydetme..

Mesaj gönderen serkan »

BDS2006 ile bir web uygulaması hazırlıyorum.Kayıtları insert into ile kaydediyorum..

Kod: Tümünü seç

BdpDataAdapter1.SelectCommand.CommandText :='INSERT INTO netsiparis (BARKODNO,MIKTAR) VALUES ('+#39+TEXTBOX1.Text+#39+','+#39+TEXTBOX3.Text+#39+')';
bu kodda textbox3 deki veri 12,56 gibi bir değer girildiğinde veritabına 1256 olarak kaydediyor..küsüratsız değerlerde problem yok zaten.Bu sorunu nasıl aşarım.strtofloat gibi bir şey olabilirmi tabi .net de böyle birşey varsa.
kolay gelsin.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: insert into ile float alanı kaydetme..

Mesaj gönderen sabanakman »

Ondalık ayracı olarak nokta karakteri kullanarak dene bir de.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Re: insert into ile float alanı kaydetme..

Mesaj gönderen serkan »

nokta koyunca oldu hocam sağol,peki virgül ile olması için ne yapmak lazım..Çok önemli değil ama ilerde belki lazım olur :)
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: insert into ile float alanı kaydetme..

Mesaj gönderen sabanakman »

Olmaz :) . SQL sorgulamada dil kuralı olarak virgül, öğeleri birbirinden ayırmaya yarar. Bunun mantığı ise ondalıklı sayıyı ekranda göstermek gibi değildir kuraldır :wink: .
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Re: insert into ile float alanı kaydetme..

Mesaj gönderen serkan »

napalım, sql'in kestiği parmak acımazmış.. :)
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Re: insert into ile float alanı kaydetme..

Mesaj gönderen undefined »

string birleştirme ile sql oluşturmak hiç şık ve pratik bir yol değil. Params özelliği yokmu kullandığın bileşende ? Params ile veritipleri ve quote işaretiyle uğraşmazsın. Params yoksa Format fonksiyonu ile stringi düzenlemek daha kolay.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: insert into ile float alanı kaydetme..

Mesaj gönderen sabanakman »

Ne tuhaf? Ben de variantlardan her zaman kaçmaya çalışırım :) .

Kod: Tümünü seç

BdpDataAdapter1.SelectCommand.CommandText :=Format('INSERT INTO netsiparis (BARKODNO,MIKTAR) VALUES (''%s'',''%s'')',[TextBox1.Text,TextBox2.Text]);
şeklinde kullanırım :) .
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: insert into ile float alanı kaydetme..

Mesaj gönderen Battosai »

MySQL de de böyle nokta ile ondalık ayraç yapılıyor.Bende Validate edit içindeki değerin virgüllerini nokta, noktalarını da virgül yaparak meseleyi bir fonksiyon ile halletmiştim...
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Re: insert into ile float alanı kaydetme..

Mesaj gönderen undefined »

sabanakman yazdı:Ne tuhaf? Ben de variantlardan her zaman kaçmaya çalışırım :) .

Kod: Tümünü seç

BdpDataAdapter1.SelectCommand.CommandText :=Format('INSERT INTO netsiparis (BARKODNO,MIKTAR) VALUES (''%s'',''%s'')',[TextBox1.Text,TextBox2.Text]);
şeklinde kullanırım :) .
Tarih, ondalıklı tipler gibi şeyler format fonksiyonu ile işletim sisteminin bölgesel ayarlarına göre biçimlendiriliyor. Firebird mesela biçimlendirmeleri bölgesel ayarlara göre değil kendi standardında istiyorki bence de en iyisi bu. Bölgesel ayarların değişebilirliği yazılımı çalışmaz kılabilir. Bileşen/lib yazarları DB için neyin lazım olduğunu daha iyi bildikleri için onların varianttan dönüşüm yapma fonksiyonlarına güvenmek en iyisi olacaktır. Variant burda sadece veriyi tutuyor, önemli olan dönüşümü. Ayrıca parametre kullanıldığında bunlar muhtemelen stringe dönüşmüyor, db'nin istediği binary formata dönüşüyor. Ayrıca parametreli Sql çalışmadan önce prepare olabiliyor.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: insert into ile float alanı kaydetme..

Mesaj gönderen sabanakman »

Kesinlikle haklısınız. Tarih sorgulamalardaki veritabanı ayarları sorun çıkarabilmektedir ve bu da veritabanı connection bileşeninin AfterConnect olayında (SQL Server için) set dateformat dmy gibi bir kodla tüm sorgular gün.ay.yıl biçimine göre çalışmaktadır. FB içinde benzeri bir ayarlayıcı kod vardır diye tahmin ediyorum. Buna "yoğurt yeme stilleri faklı!" deniyor olsa gerek :wink: . Aslında parametreli SQL sorguların daha pratik olduğunu kabul ediyorum ama projelerimizdeki tasarımlara göre verilen where şartı yapısal değişiklik gösterdiğinden tüm sorgularımızda hep bu şekilde yapmaya alışmışız artık :D .
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Re: insert into ile float alanı kaydetme..

Mesaj gönderen serkan »

yani işin içinde win32 programlama olsaydı zaten bir şekilde hallolurdu..Tabi daha işin acamisiyiz ama sanırım webaplication olaylarında bu kadar takla attıramıyoz..Aslında performans kaygılarımda var yani kullanıcı virgül yazar kayıttan önce virgüller noktaya çevrilip fonksiyonla öyle kaydedilir ama sitenin performansı nolur bu fonksiyonları client mi işler yoksa servermı işler clientler zaten el terminali olacak o yüzden en az ve en standart kodlama biçimiyle yazmak lazım diye düşünüyorum.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Re: insert into ile float alanı kaydetme..

Mesaj gönderen aLonE CoDeR »

serkan yazdı:Aslında performans kaygılarımda var yani kullanıcı virgül yazar kayıttan önce virgüller noktaya çevrilip fonksiyonla öyle kaydedilir ama sitenin performansı nolur bu fonksiyonları client mi işler yoksa servermı işler
Performansa hissedilir düzeyde bir etkisi olmaz (bence hiç etkisi olmaz). Server çalışır elbette, başka istisna var mı bilmiyorum ama java script kodları haricinde diğer komutlar server tarafında işler.
Cevapla