Matematiksel işlem
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Matematiksel işlem
Merhaba arkadaşlar;
Matematiksel işlemlerle ilgili bir problemim var.
Access databasem var.
Boy,Kilo,ve sonuc alanlarım var db de.
Boy ve kilo alanları:sayı tipinde
sonuc ise sayı ama ondalıklı sayı tipinde.
yapmak istediğim olay
sonuc:kilo/boy^2 işlemini yaptırmak ve sonuc kısmında işlemin virgülden sonra sadece 1 veya 2 hanesini görmek istiyorum.(28,3) gibi.
konuyla ilgili yardımcı olursanız çok sevinirm.
Matematiksel işlemlerle ilgili bir problemim var.
Access databasem var.
Boy,Kilo,ve sonuc alanlarım var db de.
Boy ve kilo alanları:sayı tipinde
sonuc ise sayı ama ondalıklı sayı tipinde.
yapmak istediğim olay
sonuc:kilo/boy^2 işlemini yaptırmak ve sonuc kısmında işlemin virgülden sonra sadece 1 veya 2 hanesini görmek istiyorum.(28,3) gibi.
konuyla ilgili yardımcı olursanız çok sevinirm.
Acess deki karşılığı nedir bilmiyorum ama
MSSQL de bu şekildeki bir durumda ile çıkan sonucu yuvarlayarak yazarız.
Miktar ve fiyat çarpımı sonucu, Çıkan Tutarın yuvarlanması gibi.
MSSQL de bu şekildeki bir durumda
Kod: Tümünü seç
sonuc= round(kilo/boy^,2)
Miktar ve fiyat çarpımı sonucu, Çıkan Tutarın yuvarlanması gibi.
Bir kelimenin anlamını öğretsen bile yeter..



Matematiksel işlem
Arkadaşlar soruma ceap alamadım.Kendim uğraşıyorum fakat halledemedim.
Yardımlarınızı bekliyorum.
Yardımlarınızı bekliyorum.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Cevap yukarıda yazılmış. Yapamadığın sayının karesini almak ise kendisi ile çarpman sayının zaten karesini verecektir. Round(sayi,2) ise o sayının 2 ondalıklı halini verir. Tabi bu SQL kodlamayla olur. Round'u kullanmak gerekirsegibi bir sorgu sana istediğini verecektir. Yok eğer delphi kodu ile yapmak istiyorsan 2 ondalıklı sayı elde etmenin en pratik yollarından birisi sayıyı 100'e çarpıp bölmektir.gibi bir kod işine yarar. Aslında bu gibi dört işlemden ibaret çözümler çok zor olmasa gerek.
Kod: Tümünü seç
select Round((Boy*Boy)/(Kilo*Kilo),2) as Oran,* from TabloAdi
Kod: Tümünü seç
Sayi:=Boy/Kilo;
Oran:=Round(Sayi*100)/100;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Matematiksel işlem
Arkadaşlar Merhaba;
Yukarıdaki sorumiçin ben şöyle bir kod kullandım.
var
carp,sonuc2,sonuc:Extended;
sonuc1,kilo:Longint;
boy:Real;
a:integer;
begin
boy:=strtofloat(Eboy.Text);
kilo:=strtoint(Ekilo.Text);
a:=10;
carp:=(boy*boy);
sonuc:=(kilo/carp)*a;
Sonuc1:=Trunc(sonuc);
sonuc2:=sonuc1/a;
Ebmi.Text:=Floattostr(sonuc2);
bu kod ile database kayıt işlemi sırasında access database'i sıfırlayıp yeniden kayıt girince ilk kayıt işleminde sorun çıkartmadan kayıt ekliyor hesaplamarıda istediğim gibi yapıyor.
Fakat ikinci kez kayıt girmeye çalıştığım zaman
project1.exe raised exception class econverterror with message "' is not a valid floating point value hatasını alıyorum.
Formumda formülasyonu iptal edip normal manuel olarak dbedit alanlarıma kayıt girdiğimde ise herhangi bir hata vermiyor.
Text alanlarım db edittir.
Access Database de Eboy ve Ebmi db editim sayı ve ondalıklı sayı formatında
Ekilo ise uzuntamsayı formatında tanımlıdır.
Ebmi alanımı formül de hasaplatıp database kayıt ettiriyorum.
Ebmi alınına sadece virgülden sonra 1 basamak alacak şekilde yapıyorum.
örnek:28,3 gibi.
Takıldım kaldım.
Yardımlarınızı bekliyorum.
Herkese iyi çalışmalar.
Yukarıdaki sorumiçin ben şöyle bir kod kullandım.
var
carp,sonuc2,sonuc:Extended;
sonuc1,kilo:Longint;
boy:Real;
a:integer;
begin
boy:=strtofloat(Eboy.Text);
kilo:=strtoint(Ekilo.Text);
a:=10;
carp:=(boy*boy);
sonuc:=(kilo/carp)*a;
Sonuc1:=Trunc(sonuc);
sonuc2:=sonuc1/a;
Ebmi.Text:=Floattostr(sonuc2);
bu kod ile database kayıt işlemi sırasında access database'i sıfırlayıp yeniden kayıt girince ilk kayıt işleminde sorun çıkartmadan kayıt ekliyor hesaplamarıda istediğim gibi yapıyor.
Fakat ikinci kez kayıt girmeye çalıştığım zaman
project1.exe raised exception class econverterror with message "' is not a valid floating point value hatasını alıyorum.
Formumda formülasyonu iptal edip normal manuel olarak dbedit alanlarıma kayıt girdiğimde ise herhangi bir hata vermiyor.
Text alanlarım db edittir.
Access Database de Eboy ve Ebmi db editim sayı ve ondalıklı sayı formatında
Ekilo ise uzuntamsayı formatında tanımlıdır.
Ebmi alanımı formül de hasaplatıp database kayıt ettiriyorum.
Ebmi alınına sadece virgülden sonra 1 basamak alacak şekilde yapıyorum.
örnek:28,3 gibi.
Takıldım kaldım.
Yardımlarınızı bekliyorum.
Herkese iyi çalışmalar.
neden pos komutuyla veri içerisinden , karakterini aratıp kaçıncı sırada ise sonrasindaki iki karakteri almıyorsun Şöyleki
Gerekli dönüşümleri yaparsın artık..
Kod: Tümünü seç
var
a:integer;
B:string;
Begin
A:=Pos(',',Sayı_Degeri);
if A<>0 Then
Begin
B:=Copy(Sayi_Degeri,1,A+2);// virgülden sonra iki karakter
Showmessage(B);
End;
End;
Matematiksel işlem
cevap yazan herkese teşekkür ederim.
Problemi butonun click olayına aşağıdaki kodları yazzarak çözdüm.
İyi çalışmalar.
var
boy,carp,carps,carp1:extended;
kilo,a,carp2: integer;
kilos, boys,carp4,carp3 :String;
begin
a:=10;
boys:=Eboy.Text;
boy:=strtofloat(boys);
kilos:=Ekilo.Text;
kilo:=strtoint(kilos);
carp:=(kilo/(boy*boy));
carp1:=carp*a;
carp2:=trunc(carp1);
carps:=strtoint(inttostr(carp2));
carp3:=floattostr(carps/a);
carp4:=floattostr(strtofloat(carp3));
Ebmi.Text:=carp4;
Problemi butonun click olayına aşağıdaki kodları yazzarak çözdüm.
İyi çalışmalar.
var
boy,carp,carps,carp1:extended;
kilo,a,carp2: integer;
kilos, boys,carp4,carp3 :String;
begin
a:=10;
boys:=Eboy.Text;
boy:=strtofloat(boys);
kilos:=Ekilo.Text;
kilo:=strtoint(kilos);
carp:=(kilo/(boy*boy));
carp1:=carp*a;
carp2:=trunc(carp1);
carps:=strtoint(inttostr(carp2));
carp3:=floattostr(carps/a);
carp4:=floattostr(strtofloat(carp3));
Ebmi.Text:=carp4;