/ 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
Update problemer MySql
Fra : Lars Aagaard


Dato : 02-06-04 21:27

Hej

Jeg har et underligt problem med et felt af typen "float" i MySql (4.0.18)

Hvis jeg indsætter en ny post med et kommatal f.eks. 7,75
med nedenstående, kommer værdien korrekt i databasen, og alt er ok.

rs.AddNew
rs("vaegt1") = CDbl (strvaegt1)
rs.Update

Hvis jeg nu vil redigere posten, og opdaterer den med nedenstående,
Bliver 7,75 lige pludselig til 7 i databasen

strSQL="UPDATE tabel SET vaegt1='"& CDbl(Request("vaegt1"))&"' WHERE id = "& Request("id")
Conn.Execute( strSQL )

Nogle ideér ?

--
Med venlig hilsen
Lars Aagaard

Lystfisker Forum - Danmarks mest aktive forum for lystfiskere
http://www.123nu.dk/

Fangster.dk - Din personlige fangstjournal på nettet.
http://www.fangster.dk/



 
 
///JJ (02-06-2004)
Kommentar
Fra : ///JJ


Dato : 02-06-04 21:51

"Lars Aagaard" <lars@123nu.dk> wrote in message
news:c9ld7a$30i9$1@news.cybercity.dk...
> Jeg har et underligt problem med et felt af typen "float" i MySql (4.0.18)
> Hvis jeg indsætter en ny post med et kommatal f.eks. 7,75
> med nedenstående, kommer værdien korrekt i databasen, og alt er ok.

> Bliver 7,75 lige pludselig til 7 i databasen
> strSQL="UPDATE tabel SET vaegt1="& CDbl(Request("vaegt1"))&"' WHERE id =
"& Request("id")

Jeg har to forslag:
A) komma/punktum problematikken ang. decimal-tegnet.
B) Brugen af apostroffer omkring: CDbl(Request("vaegt1")

Der er også en parantes for meget i ovenstående sql-linie men det er nok en
trykfejl...

Evt. giv os strSQL nøjagtig som den ser ud når du updater...
--


Mvh
///JJ



Lars Aagaard (02-06-2004)
Kommentar
Fra : Lars Aagaard


Dato : 02-06-04 23:23

Hej JJ,


Min strSQL ekstrem lang... men det vigtige følger herunder:

strVaegt1 = Request("vaegt1")
strSQL="UPDATE table SET vaegt1='"& CDbl(strVaegt1)&"' WHERE id = "& Request("id")
Conn.Execute( strSQL )

Jeg har prøvet nedenstående men her bliver 7,75 til 775...
strVaegt1 = Cdbl(Replace(strVaegt1, ",", "."))

--
Med venlig hilsen
Lars Aagaard

Lystfisker Forum - Danmarks mest aktive forum for lystfiskere
http://www.123nu.dk/

Fangster.dk - Din personlige fangstjournal på nettet.
http://www.fangster.dk/
"///JJ" <nospam@tdcadsl.dk> skrev i en meddelelse news:40be3daa$0$161$edfadb0f@dtext01.news.tele.dk...
> "Lars Aagaard" <lars@123nu.dk> wrote in message
> news:c9ld7a$30i9$1@news.cybercity.dk...
> > Jeg har et underligt problem med et felt af typen "float" i MySql (4.0.18)
> > Hvis jeg indsætter en ny post med et kommatal f.eks. 7,75
> > med nedenstående, kommer værdien korrekt i databasen, og alt er ok.
>
> > Bliver 7,75 lige pludselig til 7 i databasen
> > strSQL="UPDATE tabel SET vaegt1="& CDbl(Request("vaegt1"))&"' WHERE id =
> "& Request("id")
>
> Jeg har to forslag:
> A) komma/punktum problematikken ang. decimal-tegnet.
> B) Brugen af apostroffer omkring: CDbl(Request("vaegt1")
>
> Der er også en parantes for meget i ovenstående sql-linie men det er nok en
> trykfejl...
>
> Evt. giv os strSQL nøjagtig som den ser ud når du updater...
> --
>
>
> Mvh
> ///JJ
>
>



///JJ (03-06-2004)
Kommentar
Fra : ///JJ


Dato : 03-06-04 02:15

Lars Aagaard wrote:
> Min strSQL ekstrem lang... men det vigtige følger herunder:
>
> strVaegt1 = Request("vaegt1")
> strSQL="UPDATE table SET vaegt1='"& CDbl(strVaegt1)&"' WHERE id = "&
> Request("id")
> Conn.Execute( strSQL )

Spændende!
Her kommer en række løsningsforsøg. I det følgende antages at du koder i ASP
Du bliver nok nødt til at:
A) Sikre din værdi i strVaegt1 virkelig er 7,75 - altså lav en
response.write strVaegt1 efter fulgt af en response.end
B) Sikre at din update ikke ved en fejl bliver kørt med samme ID to gange,
hvor sidste gang er med værdien 7 i vaegt1
C) Evt. afprøve at fjerne apostrofferne som først foreslået.
D) Prøve at fjerne type-castningen med cdbl()
E) Fortælle os hvilken datatype vaegt1 i din tabel er
F) Er strSQL korrekt, men efter udførsel er data i DB forkerte?

> Jeg har prøvet nedenstående men her bliver 7,75 til 775...
> strVaegt1 = Cdbl(Replace(strVaegt1, ",", "."))

Ja, det gør jeg også i VB6. Værdien skal være med komma som
decimal-adskiller hvis det er en streng. Men defineret som en double skal
det være med punktum. Jeg har prøvet en del kombinationer, men kan ikke få
den til at afrunde til 7! Mit bud er pt. B) ovenfor....?

Dim x As Variant
Dim y As Double
Dim z As String

x = "7,75"
y = 7.75
z = "7,75"
Debug.Print CDbl(x) ' 7,75
Debug.Print CDbl(y) ' 7,75
Debug.Print CDbl(z) ' 7,75


--


Mvh
///JJ



Lars Aagaard (03-06-2004)
Kommentar
Fra : Lars Aagaard


Dato : 03-06-04 16:52

Hej JJ,

Du får mange tak for hjælpen

Problemet er løst ved at lave replace i Sql'en:

strVaegt1 = Request("vaegt1")
strSQL="UPDATE table SET vaegt1=" & Replace(strVaegt1, ",", ".") &" WHERE id = "&
Conn.Execute( strSQL )

Med venlig hilsen
Lars Aagaard

Lystfisker Forum - Danmarks mest aktive forum for lystfiskere
http://www.123nu.dk/
Fangster.dk - Din personlige fangstjournal på nettet.
http://www.fangster.dk/

"///JJ" <nospam@tdcadsl.dk> skrev i en meddelelse news:40be7b7f$0$185$edfadb0f@dtext01.news.tele.dk...
> Lars Aagaard wrote:
> > Min strSQL ekstrem lang... men det vigtige følger herunder:
> >
> > strVaegt1 = Request("vaegt1")
> > strSQL="UPDATE table SET vaegt1='"& CDbl(strVaegt1)&"' WHERE id = "&
> > Request("id")
> > Conn.Execute( strSQL )
>
> Spændende!
> Her kommer en række løsningsforsøg. I det følgende antages at du koder i ASP
> Du bliver nok nødt til at:
> A) Sikre din værdi i strVaegt1 virkelig er 7,75 - altså lav en
> response.write strVaegt1 efter fulgt af en response.end
> B) Sikre at din update ikke ved en fejl bliver kørt med samme ID to gange,
> hvor sidste gang er med værdien 7 i vaegt1
> C) Evt. afprøve at fjerne apostrofferne som først foreslået.
> D) Prøve at fjerne type-castningen med cdbl()
> E) Fortælle os hvilken datatype vaegt1 i din tabel er
> F) Er strSQL korrekt, men efter udførsel er data i DB forkerte?
>
> > Jeg har prøvet nedenstående men her bliver 7,75 til 775...
> > strVaegt1 = Cdbl(Replace(strVaegt1, ",", "."))
>
> Ja, det gør jeg også i VB6. Værdien skal være med komma som
> decimal-adskiller hvis det er en streng. Men defineret som en double skal
> det være med punktum. Jeg har prøvet en del kombinationer, men kan ikke få
> den til at afrunde til 7! Mit bud er pt. B) ovenfor....?
>
> Dim x As Variant
> Dim y As Double
> Dim z As String
>
> x = "7,75"
> y = 7.75
> z = "7,75"
> Debug.Print CDbl(x) ' 7,75
> Debug.Print CDbl(y) ' 7,75
> Debug.Print CDbl(z) ' 7,75
>
>
> --
>
>
> Mvh
> ///JJ
>
>



Søg
Reklame
Statistik
Spørgsmål : 177493
Tips : 31966
Nyheder : 719565
Indlæg : 6408479
Brugere : 218886

Månedens bedste
Årets bedste
Sidste års bedste