/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
komma punktum problem ved insert og update~
Fra : Jimmy


Dato : 02-07-03 14:29

Hej

Jeg er ved at være desperat nu...

Jeg har et problem, og det er næsten ligemeget hvad jeg gør så kan jeg ikke
finde ud af at løse det. I de gamle Access tider havde jeg følgende kode der
virkede:
SqlText = "Update Daglinier normal = '" & gem_normal & "' where..."
linkDB.Execute(SqlText)
gem_normal er en streng i ASP og feltet normal er af typen valuta i Access
med 2 decimaler

Ok, nu skal vi have dette her til at køre i MSSQL server. Alt kører fint når
jeg skriver tal som f.eks. 9, men det går helt galt når jeg skriver f.eks.
9,5. Altså ved kommatal. Jeg har researchet lidt og fundet ud af at SQL
Server skal have inputtet 9,5 som 9.5. Ok, men så laver jeg bare følgende
ændring:
SqlText = "Update Daglinier normal = '" & Replace(gem_normal, ",", ".") & "'
where..."
linkDB.Execute(SqlText)
Så skulle den være klaret. Nej, det er den ikke. Den kan ikke konvertere en
varchar til en float siger den.

Ok, så prøver vi følgende:
SqlText = "Update Daglinier normal = " & Replace(gem_normal, ",", ".") & "
where..."
linkDB.Execute(SqlText)
Det går heller ikke.

Så prøver vi at konvertere strengen med cdbl() (en ASP funktion).
Nope går heller ikke.
Convert(money, '" & gem_normal & "')
Cast('" & gem_normal & "' as money)
Ok. Enten fejler den eller også kan jeg få tallet til at blive 95 (bemærk
intet komma). Alt det her kan jeg et eller andet sted godt forstå, men jeg
kan simpelthen ikke regne ud hvordan jeg skal få gemt min værdi i databasen.

Hvordan kan jeg gemme værdien i databasen så den selv kan runde af på 2
decimaler.

Please help... Jeg er ved at blive skør...



--


Mvh Jimmy



 
 
Peter Lykkegaard (02-07-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 02-07-03 16:18


"Jimmy" <pleasereplyingroup@hotmail.com> wrote in message
news:3f02dcd7$0$5178$edfadb0f@dread11.news.tele.dk...

> SqlText = "Update Daglinier normal = " & Replace(gem_normal, ",", ".") & "
> where..."
> linkDB.Execute(SqlText)
> Det går heller ikke.
>
Hvad fejl får du her?

Skulle det ikke være
Update Daglinier Set normal = ...

mvh/Peter Lykkegaard



Jimmy (02-07-2003)
Kommentar
Fra : Jimmy


Dato : 02-07-03 17:02

"Peter Lykkegaard" <polonline@hot.mail.com> skrev i en meddelelse
news:WICMa.1235$WO2.1175@news.get2net.dk...

> > SqlText = "Update Daglinier normal = " & Replace(gem_normal, ",", ".") &
"
> > where..."
> > linkDB.Execute(SqlText)
> > Det går heller ikke.
> >
> Hvad fejl får du her?

Error converting data type varchar to float

> Skulle det ikke være
> Update Daglinier Set normal = ...

Ups, hehe... Jo! ;)

Ok, jeg prøvede lige igen at køre SQL'en og opdagede til min store
overraskelse at den rent faktisk fejler i en helt anden linie, efter at jeg
selvfølgelig først fik fejlen i ovenstående kodestump. Da jeg ændrede til
ovenstående fik jeg rent faktisk fejlen i en anden sql. Den har jeg også
prøvet at rette nu, og nu virker det som det skal.

Peter jeg må snart sende en øl eller et eller andet, da det lader til at det
åbenbart er mig der dummer mig hele tiden, hehe... ;)
Hvordan var det nu, man sidder stille i en time, og så skal man hvile
hjernen et kvarter ellerhur?

Nå, men en anden ting der virkelig undrer mig er forskellen på money og
float. I access kunne man ikke rigtigt få komma tallene gemt rigtigt med
mindre man brugte en type valuta. Jeg valgte så at sætte to decimaler på
denne. Jeg kan se at den faktisk kan gemme mere end 2 decimaler i Access
(Nå, men det er ikke det der er spørgsmålet). I SQL er der også valuta i
form af typen money, jeg kan se at det jeg prøver med min SQL virker uanset
om jeg bruger float eller money. Så hvad er forskellen i virkeligheden
bortset fra at money går fra -2^63 til 2^63 bruger 8 byte i størrelsen og at
decimalet er præcist ned til en 10000ende del og at float går fra -1,79E
+308 til 1,79E +308. Jeg mener hvad betyder det i virkeligheden for mig når
jeg skal gemme antal forbrugte timer, varer, kr.?

Og når nu jeg er ved det, hvorfor kan jeg ikke ligesågodt bruge decimal. Der
kan jeg endda sige at den kun skal arbejde med 2 decimaler?

Atter engang undskyld at jeg ikke selv opdagede fejlen, og så håber jeg at
du vil svare på de 2 nye spørgsmål i stedet ;)


Jimmy



Peter Lykkegaard (02-07-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 02-07-03 18:32


"Jimmy" <pleasereplyingroup@hotmail.com> wrote in message
news:3f0300d1$0$5180$edfadb0f@dread11.news.tele.dk...
> "Peter Lykkegaard" <polonline@hot.mail.com> skrev i en meddelelse
> news:WICMa.1235$WO2.1175@news.get2net.dk...
>
> > > SqlText = "Update Daglinier normal = " & Replace(gem_normal, ",", ".")
&
> "
> > > where..."
> > > linkDB.Execute(SqlText)
> > > Det går heller ikke.
> > >
> > Hvad fejl får du her?
>
> Error converting data type varchar to float
>
Hvis det er det driller, så kan du pakke den ind i noget ala
Update DagLinier Set Normal = " & _
Cast(" & Replace(gem_normal, ",", ".") & " As Float) " & _
"Where...

> Peter jeg må snart sende en øl eller et eller andet, da det lader til at
det
> åbenbart er mig der dummer mig hele tiden, hehe... ;)

Drikker af princip kun efter at jeg har være i haven
Det er jeg tit...

> Hvordan var det nu, man sidder stille i en time, og så skal man hvile
> hjernen et kvarter ellerhur?
>
Eller gå en tur med hunden...

[Snip - datatyper i MSSQL]

Nu er jeg ikke den rigtige at spørge da jeg altid bruger varchar af
vekslende længde i alle min tabeller - af forsk årsager
>
> Og når nu jeg er ved det, hvorfor kan jeg ikke ligesågodt bruge decimal.
Der
> kan jeg endda sige at den kun skal arbejde med 2 decimaler?

Du kan få afrundingsfejl...

> Atter engang undskyld at jeg ikke selv opdagede fejlen,

Du har ikke noget at undskylde - og jeg hygger mig

> og så håber jeg at
> du vil svare på de 2 nye spørgsmål i stedet ;)
>
Se ovenfor

mvh/Peter Lykkegaard



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste