Just nu i M3-nätverket
Jump to content

Decimaler??


Smulan_69

Recommended Posts

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.

 

 

 

 

 

Link to comment
Share on other sites

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...

 

Link to comment
Share on other sites

Testade med punkt, men det blir samma felmeddelande.

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

 

 

 

Link to comment
Share on other sites

Nu är jag inte med riktigt.

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

 

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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?

 

Link to comment
Share on other sites

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...

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...