04. september 2003 - 11:29Der er
20 kommentarer og 2 løsninger
Decimaltal og noget med Access
Jeg har problemmer med at gange med decimaltal.
procedure TKalender.Button5Click(Sender: TObject); var Tal1: Integer; Tal2: Integer; Tal3: Integer; Tal4: Integer; begin Tal1 := StrToInt(DBedit1.Text); Tal2 := StrToInt(DBedit2.Text); Tal3 := StrToInt(DBedit1.Text) * (95); Tal4 := StrToInt(DBedit2.Text) * (16); //her skal jeg kunne gange med 16,57. Hvordan gør jeg det????
Og i mine DBedit, kan jeg ikke skrive komma tal, når programmet kører, så får jeg denne fejl melding: Project X.com raised exception class EConvertError with "11,2' is not a valid integer value'.
I min DBedit8.text kommer der et tal som jeg gemmer i min database. Det tal skal kunne lægges sammen med andre tal der kommer til at stå i det felt. Eks. 200 + 250 + 900.
Dine variabler skal være af typen Real (eller Extended hvis det er meget store tal). Integer kan kun indeholde heltals værdier og ikke decimal værdier som du prøver at proppe ind i den.
x-masman: Det hjælper ikke meget at bruge StrToFloat/FloatToStr hvis man bruge Integer variabler ;)
Mht. hvor mange decimaler du vil have med ved en konvertering, så kan du evt. prøve at kigge lidt på FormatFloat funktionen som du kan se eksempler på i http://www.eksperten.dk/spm/343119
Jeg har sat Extended ind under Var Tal4: Extended men får stadig fejl: [Error] KalenderUnit.pas(91): ')' expected but ',' found som er den = Tal4 := StrToInt(DBedit2.Text) * (16,57); har også prøvet : Tal4 := StrToFloat(DBedit2.Text) * (16,57);
xax: Det er fordi Delphi bruger . og ikke , til deciaml tal - hvilket nok også er en ting du skal tage højde for når du gemmer dine værdier i Access, da den nemlig bruger , til decimaltal.
Ikke nødvendigvis. Hvis det kun er Tal4 der kommer til at indeholde decimal tal, så er det ikke nødvendigt at skifte alle de andre. Dog så kan det måske godt være en fordel at gøre det hvis du senere skal ligge Tal4 sammen med nogle af de andre variabler så de også er forberedt på at kunne indeholde decimal tal.
Er det meningen at du vil lægge sammen i selve databasen, for så får du nok et problem da det er text. Ellers må du lige hive det ind i excell og konveretere det til tal og sål gemme summen i databasen
Nej, ikke hvis man kan gøre det på en anden måde. Det jeg er ved at regne ud, er min dagsløn. Hvis man så laver et nyt felt databasen, som bare blive opdateret hver dag, med et nyt beløb, som er blevet regnet sammen med programmet. Giver det nogen mening, og kan det lade sige gøre
jamen så laver du vel bare en procedure, som henter de relevante felter for databasen ind. Nu kender jeg ikke dine fields i databasen. Men hvis du har en der hedder dato, kan du søge efter denne i databasen. Når du er noget frem til den record du skal bruge, kan du bruge FieldByName til foreksempel at hente antal timer. Når det er gjort kan du gange tallet sammen med timeløn og så gemme det i et field, der hedder dagsløn
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.