Avatar billede boox Nybegynder
09. maj 2004 - 00:37 Der er 9 kommentarer og
2 løsninger

access currency problem

jeg har et access dokument som Delpi7 henter og gemmer oplysninger i.. vil så gerne have i den ene kolonne kun tal. det tal skal man hente fra en Edit eller SpinEdit..
jeg trykker på en knap:

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOTable1.Insert;
ADOTable1.FieldByName('Varer').AsString := Edit2.text;
ADOTable1.FieldByName('Pris').AsCurrency := SpinEdit1.Value;
ADOTable1.Post;
end;

det virker også fint nok indtil jeg med SpinEdit indtaster et tal (her 709,34) og får en fejl med blandt andet dette:

...'709,34' is not a valid integer value... osv..

jeg har i access dokumentet sagt at den kolonne skal være currency!!

er newbie i database så ved ik rigtigt hva jeg gør forkert?! /0=
Avatar billede boox Nybegynder
09. maj 2004 - 00:38 #1
tilføjer lige at den kun laver fejl ved komma-tal!
Avatar billede dkn Nybegynder
09. maj 2004 - 01:12 #2
du kan køre en stringreplace inden

ADOTable1.FieldByName('Pris').AsCurrency := strtofloat(stringreplace(floattostr(SpinEdit1.Value), ',', '.', [rfreplaceAll]));

ikke testet, og der er sikkert også en smarter måde
Avatar billede boox Nybegynder
09. maj 2004 - 09:40 #3
hmm det virker ikke!
Avatar billede stoney Nybegynder
09. maj 2004 - 09:42 #4
Du kan kun bruge integer i spinedit.
Bruge en edit + spinbutton

Stoney
Avatar billede boox Nybegynder
09. maj 2004 - 09:54 #5
nu kan den godt finde ud af komma tal, men den kan stadig skrive alle bogstaver tegn osv. det skal kun være et komma og tal.. er det fordi jeg ik har connected den spinbutton rigtigt? har sat FocusControl til den Edit jeg bruger! ??
Avatar billede boox Nybegynder
09. maj 2004 - 10:21 #6
hmm kunne også bruge:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9',#08])then
Key := #0;
end;

men hvordan giver man kun lov til at indtaste MAX 1 komma?
Avatar billede dkn Nybegynder
09. maj 2004 - 12:59 #7
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9',#08, ',']) then
Key := #0;

if (key = ',') and (pos(',', edit1.Text) <> 0) then
  Key := #0;
end;

men du skal måske også tjeke inden du bruger resultatet, da man måske kan have kopiret og sat noget ind
Avatar billede boox Nybegynder
09. maj 2004 - 17:28 #8
oki.. virker!!

lige en anden ting.. hvorfor kan man kun se en kolonne af gangen når man ser en dbgrid ?? så skal man scrolle henad.. vil bare have 2 smalle!
Avatar billede dkn Nybegynder
09. maj 2004 - 20:34 #9
du kan vel ændre colums width i designtime, ellers

DBGrid1.Columns[0].Width := 20;

tak for point
Avatar billede boox Nybegynder
09. maj 2004 - 21:16 #10
virker(0= mange tak for hjælpen!!

sidste ting - hvordan gør jeg så der kun må være to decimaler ? altså kun 2 tal efter komma'et?
Avatar billede dkn Nybegynder
09. maj 2004 - 22:18 #11
if pos(',', edit2.Text) <> 0 then
  if length(copy(edit2.Text, pos(',', edit2.Text)+1, length(edit2.Text))) >2 then
showmessage('max 2 decimaler');


ikke testet
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester