Decimal eller float.
I Access väljer du typen "Number" och ändrar fältlängden till "Double".
Flyttas från SQL.
14 svar · 774 visningar · startad av brw
Jag undrar vad jag ska använda för fälttyp i SQL-server för att spara vikt i kg med en decimal. Till exempel 97,1 så att jag till exempel kan räkna ut månadens snittvikt etc. Annars hade jag bara kunna använda ett vanligt textfält men eftersom jag måste kunna räkna med det så bör jag väl ha en annan fälttyp?..
Det finns en dom heter decimal är det den jag ska använda?
Undrar även vilken fälttyp som ska användas i Accessdatabas för att kunna göra ovanstående?
Decimal eller float.
I Access väljer du typen "Number" och ändrar fältlängden till "Double".
Flyttas från SQL.
På tal om detta har jag ett liknande problem.
Då jag använder SQL-server 2000.
När jag sparar mitt värde via asp-sidan låt oss säga att mitt värde är 0,007 när jag sedan uppdaterar så blir nya värdet 0 eller 7 beroende på vilken datatyp jag använder.
Jag har testat: Real, decimal och float .
Skriver jag däremot 0.007 sparas värdet som 0,007 när sidan laddas om.
om jag i detta läge väljer att uppdatera datat igen utan ändra något så ändras 0,007 till 0 ..
Vad kan vara fel?
Det beror lite på hur ASP-koden ser ut. När det handlar om decimaltal måste du alltid se till att det i SQL-frågan anges decimalpunkt, och inte komma. Använd alltså alltid replace() för att vara säker på det.
Vill du bara ha en decimal så passar det bättre med en heltalstyp (int) än float/double/decimal. Float-typerna är till för när du inte har exakta tal, men det har ju du. Du behöver ju bara lagra värdena i hekto i stället så får du ju heltal hela vägen vilket är mycket bättre. När du ska lagra dem tar du ju bara bort decimaltecknet och när du skriver ut på skärmen så sätter du dit det. Alla beräkningar och all lagring sker med heltal vilket tar mindre plats och är mycket snabbare, och dessutom exakt.
I och för sig lär det väl inte spela så stor roll i ditt fall, men heltal är ändå den bästa typen.
Decimal är en exakt datatyp.
Jag är ju programmerare, så för mig finns ju bara heltal, flyttal och strängar. Jag tog för givet att de tal som inte var heltal i databaser lagrades som flyttal. Men hur lagras Decimal?
Det får varje DBMS bestämma, det är inget som specificeras i standarden. Om man skall hantera decimal på ett korrekt sätt så går det inte att använda float som lagringsformat.
Problem igen.
jag kör replace på , så det blir .
allt fungerar i min testmiljö där collation name är/var latin någonting.
I produktionsmiljön var collation name: swe_fin. nu är jag tillbaka på ruta 1. Alla , försvinner och blir heltal. x(
Hur kan jag lösa detta problem?
Du ska alltid se till att ha samma collation i test- och produktionsmiljö.
Dessutom har jag aldrig varit med om decimalteckensproblem på det här sättet. Oberoende av collation skall du använda punkt som decimaltecken i dina SQL-frågor.
Kan du ge ett exempel på en SQL-fråga som fungerar i testmiljön, men som inte gör det i produktionsmiljön, samt bifoga felmeddelande?
Nu fungerar det inte i testmiljönheller då jag bytt collation till svensk finsk i den.
Inget felmeddelande. Den skriver bara över alla 1.0405 till 10405 när jag sparar.
Datatype är decimal. har även testat med float och real med samma resultat.
och alla , ersätts med . så inget kan bli fel där.
Om du i SQL-frågan anger punkt som decimaltecken så ska det fungera.
Så: skriv ut och posta färdig SQL-fråga som resulterar i felaktigt data i ditt fält.
ytterligare ett inlägg om decimaler. Jag har en .txt fil som ser ut följande:
200501STO463208 I00142 0000000000272,410000000000086,41100070
Detta är en rad..
200501STO347509 I01652 0000000001211,200000000000291,36101137
200501STO347509 I01652 0000000001211,200000000000291,36101141
200501STO460507 V00124 0000000000107,180000000000035,21104519
200501STO356030 V00009 0000000001840,280000000000091,52106717
datum: 200501
region: sto
dxc nr: 463208
int nr: I00142
summa 1: 0000000000272,41
summa 2: 410000000000086,41
art nr: 100070
Summa 1 och 2 vill jag göra till decimal eller annan data type som går att räkna med.. men detta går inte när jag kör ett DTS paket och gör sum1&2 till decimal "error converting char to numeric"
det borde väl gå att importera summor med , eller?
Vet dock inte om jag gör fel eller vad det kan vara.
Någon som har lösningen på detta?