veritabanı access ve float alanlar

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ayseonat
Üye
Mesajlar: 58
Kayıt: 17 Ara 2004 12:18
Konum: Konya

veritabanı access ve float alanlar

Mesaj gönderen ayseonat »

Merhaba arkadaşlar
delphide yapmış olduğum projemde veritabanı olarak access kullanıyorum. veritabanımda float olan bir alan var.
Bu alandaki değerler 0-100 değişiyor.
dışardan girdiğim bi değerle bu alandaki değeri karşılaştıracağım. ve bana getirirken dışardan girdiğim sayının 3
eksiğinden 100 e kadar getirmesi gerekiyor. Mesela dışardan 6 girdiğim zaman 3 le 100 arasındaki değeleri getiriyor.
Ama ben 6,5 girdiğim zaman 3,5 la 100 arasını getirmesi gerekirken 0,0 dan başlayıp 100 e kadar getiriyor.
yani 3,5 sayısını algılamıyor. hiç girilmemiş gibi davranıp 0 dan itibaren listeleme yapıyor.
veritabanımda sayısal, sözel, eşit ağırlık, yabancı dil alanlarım var. Hangi alandaki editten sayı girersem gireyim
ona göre filtreleme yapacak. yani hem sayısal dan hem sözelden girdiysem ikisini bi değişkende toplayıp ona göre
filtreleme yapmam lazım. dediğim gibi ondalıksız sayılarda aşağıdaki kodu çalıştırıyor. ama ondalıklı sayı girince
çalıştırmıyor.
forumdaki daha önce sorulan soruları inceledim+denedim. ama olmadı. bu konuda yardımcı olabilirmisiniz?

yazdığım kodu gönderiyorum: burdaki;
goruntule => sorgum
goruntuleAlan => veritabanımdaki float alanım
soz08.text, say08.text => dışardan girilecek olan değer
goruntuleypuanturu => veritabanımda sayısal, sözel, eşit ağırlık, yabancı dil alanlar


Kod: Tümünü seç


p:='';
r:='';
veri.goruntule.First;
 while not veri.goruntule.Eof do
 begin
 sayi08:=(veri.goruntuleAlan.AsFloat);
   if adim2.soz08.Text<>'0' then
   begin
     if veri.goruntuleypuanturu.AsString='sözel' then
     begin
       soz08alt:=(strtofloat(adim2.soz08.Text)-3);
       soz08ust:=100;
       if ((sayi08)>(soz08alt)) and ((sayi08)<(soz08ust)) then
       begin
       if akil1=0 then
         begin
           if p='' then r:='' else r:=' or ';
            p:=p + r +' (((Alan>'+ floattostr(soz08alt)+') and (Alan<'+floattostr(soz08ust)+')) and (ypuanturu='+'''söz'''+'))';
            akil1:=1;
         end;
       end;
    end;
   end;

  if adim2.say08.Text<>'0' then
   begin
     if veri.goruntuleypuanturu.AsString='say' then
     begin
       say08alt:=(strtofloat(adim2.say08.Text)-3);
       say08ust:=100;
       if ((sayi08)>(say08alt)) and ((sayi08)<(say08ust)) then
       begin
       if akil2=0 then
         begin
           if p='' then r:='' else r:=' or ';
           p:=p + r +' ((Alan>'+ floattostr(say08alt)+' and Alan<'+floattostr(say08ust)+') and (ypuanturu='+'''say'''+'))';
           akil2:=1;
         end;
       end;
    end;
   end;
end;

veri.goruntule.Filter:=p;
veri.goruntule.Filtered:=true;
herkese ii çalışmalar
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Regional setting'lere dikkat edin bir de öyle kontrol edin.


. (nokta) , (virgül) ondalıktaki olayları yani.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

katılıyorum

Mesaj gönderen pro_imaj »

kesin olarak ',' '.' olaylarıyla alakalı

bunları kontrol edersen düzelmesi muhtemel

Kolay gelsin
En son pro_imaj tarafından 23 Nis 2018 08:41 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
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]
_________________
ayseonat
Üye
Mesajlar: 58
Kayıt: 17 Ara 2004 12:18
Konum: Konya

Mesaj gönderen ayseonat »

merhaba arkadaşlar

. ve , lü olarak denedim. ' . ' da hata verdi. ',' de hiç hata vermiyo. ama çalıştırmıyorda :( o yüzden ne yapacağımı bilemedim..

ii çalışmalar
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Bölgesel ayarlardan, Ondalık ayıraç . (nokta) binlik ayıracı , (virgül) yapmanız lazım.
ayseonat
Üye
Mesajlar: 58
Kayıt: 17 Ara 2004 12:18
Konum: Konya

Mesaj gönderen ayseonat »

merhaba

ordaki ayarlar zaten o şekilde. ama nedense progamda düzelmiyor.

ii çalışmalar
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
begin
    ThousandSeparator := ',';
    DecimalSeparator  := '.';

    ShortDateFormat   := 'dd/mm/yyyy';
    DateSeparator     := '-';
    LongTimeFormat    := 'HH:mm:ss';
    TimeSeparator     := ':';
end;
programın creatine şunu(ları) atıp bi deneseniz. ben böyle yapıyorum, sistem ayarlarını kurcalamanıza gerk kalmıyor
.-.-.-.-.-.-.-. ^_^
ayseonat
Üye
Mesajlar: 58
Kayıt: 17 Ara 2004 12:18
Konum: Konya

Mesaj gönderen ayseonat »

günaydın arkadaşlar

mege beyin gönderdiği kodları deneyince sorunum çözüldü :D :D :D :D

yardımcı olmaya çalışan herkese çok teşekkür ederim
herkese ii çalışmalar :D :D :D
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

Merhaba

öncelikle teşekkürler ama galiba ben beceremedim. bu kodu kullanıncada Bölge ve Dil Seçeneklerinde Görebiliyormuyuz.

birde Bölge ve Dil Seçenekleri adında başlık açtım bulması kolay cevapları buraya yazabilirsek aramak isteyen kolay bulur.... :D
ayseonat
Üye
Mesajlar: 58
Kayıt: 17 Ara 2004 12:18
Konum: Konya

Mesaj gönderen ayseonat »

mrb ender bey

mege beyin gönderdiği kodları formun on create olayına yazıyosunuz. o zaman sorun kalmıyor.

ii çalışmalar
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

Teşekkürler

normalde komut işliyor bu sadece uygulama için var. Windowsta bölge seçeneklerinde gözükmüyor..

Saygılar,
Mute
Üye
Mesajlar: 2
Kayıt: 30 Haz 2014 12:15

Re: veritabanı access ve float alanlar

Mesaj gönderen Mute »

mege tşk kaç gündür uğraşıyordum.
Cevapla