Just nu i M3-nätverket
Gå till innehåll

Decimaler??


Smulan_69

Rekommendera Poster

Jag blir inte klok på mitt problem.

Ska lägga in ett värde i databasen (sql7.0) från en asp sida.

Koden ser ut så här:

if rs("antal") = 10000 then pris = 0.418

strsql ="Update orderraderTbl Set pris = " & pris & " where orderraderId="&rad

 

Har testat med datatyperna float,decimal, money men får inte med nollan och decimaltecknet. Ändrade då till char och då kom det med men då får jag ett fel när jag ska hämta värdet och göra en ny uträkning. Exempelvis kan det se ut så här:

total.Open "SELECT sum(pris) as summa FROM totalPrice WHERE orderid="&orderid,myconn,1,2

totalsumma = total("summa")

vat = totalsumma * 0.25

 

Får då ett felmeddelande som lyder: "The sum or average aggregate operation cannot take a char data type as an argument."

 

Någon som kan hjälpa mig vore jag tacksam.

 

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Magnus Gladh

Om jag itne har fel för mig så vill ASP ha ett kommatecken som separator för decimaltal.

 

Dock så tycker inte SQLServern om att du lägger in kommatecken hur som helst i din stäng.

 

Testa följande och ha kolumnen pris till decimal i databasen

 

 
if rs("antal") = 10000 then pris = "0.418"
strsql ="Update orderraderTbl Set pris = " & pris & " where orderraderId="&rad

 

- Magnus

-----------------------------------------------------

Jag är inte kaxig, jag är bara så jävla bäst...

 

Länk till kommentar
Dela på andra webbplatser

Testade med punkt, men det blir samma felmeddelande.

Jag tror att select sum(pris) ställer till det. Den vill ha det som tal.

 

 

 

Länk till kommentar
Dela på andra webbplatser

Nu är jag inte med riktigt.

Det ska väl inte ha någon betydelse hur det är inställt. Eller?

 

 

Länk till kommentar
Dela på andra webbplatser

Det ska väl inte ha någon betydelse hur det är inställt. Eller?

 

Olika länder har olika inställningar, en del använder punkt som decimalavgränsare, andra använder en punkt. Sedan huruvida det påverkar servern vet jag inte, men det skulle förefalla logiskt. :)

 

EDIT: Stavning...

 

.dune.

----------------------------------------------

push@A,$_ for reverse q.e...q.n.;for(@A){$_=unpack(q|c|,$_);@a=split//; shift@a;shift@a if $a[$[]eq$[;$_=join q||,@a};print $_,$/for reverse @A

 

[inlägget ändrat 2003-04-02 11:41:04 av dune]

Länk till kommentar
Dela på andra webbplatser

Gjorde en replace istället som ser ut så här:

strsql ="UPDATE orderraderTbl SET pris = " & Replace(pris, ",", ".") & " WHERE orderraderId=" & rad

Då kom decimalerna med, men jag får fortfarande fel när jag ska hämta ut med select sum(pris). Ser ut så här: The sum or average aggregate operation cannot take a char data type as an argument.

 

Måste ju på något sätt göra om char till int, men hur?

 

Länk till kommentar
Dela på andra webbplatser

Magnus Gladh

För att SUM skall fungerar så måste din kolumn i databasen var av typen tal: int, decmial, bigint osv osv. Du kan alltså inte har Char som typ för kolumnen.

 

För att det skall fungerar att mata in ett decimaltal till databasen så får den inte ha komma i sig.

 

Alltså följande SQL sats fungerar inte.

 

UPDATE [tabel] SET [pris] = 0,234 

 

Efter som SET [pris] = 0 blir en operatione och 234 blir en annan.

 

för att det skall fungera så måste du mata in ditt decimaltal med . som separator istället.

 

UPDATE [tabel] SET [pris] = 0.234 

 

Så skall det fungerar, glöm dock inte bort att kolumnen MÅSTE vara decimal och inte char.

 

- Magnus

-----------------------------------------------------

Jag är inte kaxig, jag är bara så jävla bäst...

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...