1 (edited by amilas08 2020-01-22 17:45:35)

Topic: help

I have problem calclulated feild
diffèrent  table gild

2 (edited by amilas08 2020-01-22 17:42:04)

Re: help

projet

Post's attachments

Attachment icon ereur calcul.JPG 60.08 kb, 149 downloads since 2020-01-22 

Re: help

Hello amilas08, hello Derek

Wait for a moment, I guess Derek is coming to your aid !
He certainly has the solution
JB

Re: help

Please attach your project.

Dmitry.

Re: help

Hello Amilas, Jean,
Try doing your calculated field like this (please see attached).
Derek.

Post's attachments

Attachment icon amilas.zip 337.73 kb, 312 downloads since 2020-01-22 

Re: help

thanks you

Re: help

if you can help me for convert   number to ltexte  word   in langue  french
for exemple ; 1000.00 €  to Mille euro
thank  you for information

Re: help

Hello amilas

I'm alseo French but I wrote this answer in english for all MVD users.

Two ways to proceed :

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
     if ValidFloat(Form1.Edit1.Text) then
         Form1.Edit2.Text:=ToWords(Form1.Edit1.Value);
end;

or

if you want work with a function you can call again in your project :

function NumberToWords(Number: real): string;
var
    Billion: real;
    Million: real;
    Thousand: real;
    Hundred: real;
    Tens : Array[2..9] of string = ['','','Twenty','Thirty','Forty','Fifty','Sixty','Seventy','Eighty','Ninety'];
    Units: array[1..9] of string = ['','One','Two','Three','Four','Five','Six','Seven','Eight','Nine'];
    Teens: array[10..19] of string = ['Ten','Eleven','Twelve','Thirteen','Fourteen','Fifteen','Sixteen','Seventeen','Eighteen','Nineteen'];
begin
    Billion := 1000000000;
    Million := 1000000;
    Thousand := 1000;
    Hundred := 100;
    if (Number < 0) then Result := 'minus ' else Result := '';
    Number := Abs(Number);
    if (Number >= Billion) then
    begin
        Result := Result + NumberToWords(Number div Billion) + ' billion, ';
        Number := Number mod Billion;
    end;
    if (Number >= Million) then
    begin
        Result:= Result + NumberToWords(Number div Million) + ' million, ';
        Number:= Number mod Million;
    end;
    if (Number >= Thousand) then
    begin
        Result:= Result + NumberToWords(Number div Thousand) + ' thousand, ';
        Number:= Number mod Thousand;
    end;
    if (Number >= Hundred) then
    begin
        Result:= Result + NumberToWords(Number div Hundred) + ' hundred, ';
        Number:= Number mod Hundred;
    end;
    if (Number > 0) and (Result <> '') then
    begin
        Result := Trim(Result);
        if(Result[Length(Result)] = ',') then Delete(Result, Length(Result), 1);
        Result := Result + ' and ';
    end;
    if (Number >= 20) then
    begin
        Result := Result + Tens[StrToInt(FloatToStr(Number)) div 10] + ' ';
        Number := Number mod 10;
    end;
    if(Number >= 10) then
    begin
        Result :=Result + Teens[StrToInt(FloatToStr(Number))];
        Number := 0;
    end;
    if (Number >= 1) then Result := Result + Units[StrToInt(FloatToStr(Number))];
    Result := Trim(Result);
    if (Result = '') then Result := 'zero'
    else
    if (Result[Length(Result)] = ',') then Delete(Result, Length(Result), 1);
end;

procedure btnMoneyToWord(Sender: string; var Cancel: boolean);
var
    s: string;
    begin
        s:=NumberToWords(Form1.edAmount.Value);
        ShowMessage(s);
    end;

begin
end.

JB

Re: help

There is a problem with the numbers containing the numbers from 10 to 19.