Avatar billede fanker Nybegynder
26. februar 2012 - 11:28 Der er 12 kommentarer og
1 løsning

Convert text to numeric

Hvordan summerer man på et felt med datatype Tekst?

Tabel2
Kunde,Beløb
10, 200.00
10, 250.00
10, 300.00

Feltet "Beløb" har datatypen Text og også "." i stedet for "," som separator
Avatar billede Slettet bruger
26. februar 2012 - 12:20 #1
workaround'et for det med kommaet er:

replace(<tekststreng>,".",",")

Man kan explicit typekaste med
cdec eller cdbl, men det er hverken nødvendigt i Aggregate funktioner som sum eller i udtryk hvori aritmetiske tegn indgår.

Hvis et felt i en query skal ændes til numerisk står valget demed mellem:

0+<feltnavn>

eller

c???(<feltnavn>)

hvor ??? er en af dec,dbl,int,cur,sng
Avatar billede neoman Novice
26. februar 2012 - 13:46 #2
Du kan bruge funktionen Val

MitTal=Val(MinStreng)

Den forudsætter at decimaltal anført i strengen bruger "." som decimal separator.

Den inverse funktion er Str, således at hvis du fx har 1,5 (med det danske "," som decimal separator) og skal bruge tallet som input i en SQL-streng, så kan du bruge Str(MitTal), som outputter 1.5
Avatar billede neoman Novice
26. februar 2012 - 13:50 #3
Og typecasting vha Cxxx vil fejle i dit tilfælde, da disse er afhængige af locale (og hvis dit locale er indstillet til dansk), memindre du laver den ombytning mellem "." og ",".
Avatar billede fanker Nybegynder
27. februar 2012 - 09:23 #4
Val(MinStregn) ser ud til at virke, det gør det i hvert i en lille test database jeg har.

Nu opstår der et andet issue. Tabellen der skal summeres på er på 18.941.223 linier og Access kan ikke håndtere denne sql:

SELECT Kunde, Kontrakt, SUM(Val(AMOUNT)) AS SumKontrakt, (SELECT SUM(Val(AMOUNT)) FROM Tabel1 K WHERE K.Kunde = Tabel1.Kunde) AS SumKunde
FROM Tabel1
GROUP BY Kunde, Kontrakt;

Nogen forslag til hvad man så kan gøre?
Avatar billede neoman Novice
27. februar 2012 - 09:33 #5
Hvad betyder "kan ikke håndtere"?
Sæt index på feltet Kunde
Avatar billede fanker Nybegynder
27. februar 2012 - 10:04 #6
Sorry. Ikke håndtere betyder at Access går i mode "svarer ikke". Der kommer ikke en fejlmeddelelse.

Hvordan sætter man index på et felt?
Avatar billede neoman Novice
27. februar 2012 - 10:28 #7
google create index on access table field
Avatar billede fanker Nybegynder
27. februar 2012 - 10:46 #8
Det er desværre ikke en mulighed da der er en sammenkædning til eksterne data, dvs feltegenskaber ikke kan ændres
Avatar billede neoman Novice
27. februar 2012 - 10:56 #9
Så træk de data ind i en ny tabel og efterfølgende sæt index på (altså ikke mens du hiver data ind). Uden index vil Access aldrig blive færdig.
Avatar billede fanker Nybegynder
27. februar 2012 - 11:11 #10
Hmm heller ikke en mulighed da tabellen bliver opdateret hver nat. Tror jeg må erkende Access ikke kan håndtere så store tabeller. Nogen der kender et rigtig godt alternativ til Access om også kan arbejde sammen med Microsofts Excel?
Avatar billede neoman Novice
27. februar 2012 - 12:37 #11
Der er ingen applikation der kan behandle den tabel med 18 millioner poster som du ønsker men uden indeks - det tør jeg garantere.

Hvad er problemet med at rydde tabellen og udtrække nye data til den hver nat/dag?
Avatar billede fanker Nybegynder
27. februar 2012 - 14:30 #12
Det vil være alt for tidskrævende, da jeg har mange tabeller.
Avatar billede fanker Nybegynder
17. juli 2012 - 16:50 #13
Jeg lukker denne
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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