Avatar billede moso Nybegynder
13. juni 2003 - 19:26 Der er 42 kommentarer og
1 løsning

Jeg skal gemme en værdi med et komma og får fejl.

Nåt jeg skal opdater prisen på et produkt til feks. 3,75 kr får jeg denne fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e09'

[TCX][MyODBC]You have an error in your SQL syntax near '25,Dato = '13-06-2003',Producent = '',Billede = '3325.jpg ' at line 1

/admin/produkter/rediger_produkter.asp, line 111

Jeg arbejder i DreamWeaver og her ser SQLkoden således ud:

<%
' *** Update Record: set variables

If (CStr(Request("MM_update")) = "fHtmlEditor" And CStr(Request("MM_recordId")) <> "") Then

  MM_editConnection = MM_DetLilleHjem_STRING
  MM_editTable = "Produkter"
  MM_editColumn = "IDvare"
  MM_recordId = "" + Request.Form("MM_recordId") + ""
  MM_editRedirectUrl = "/admin/produkter/oversigt_produkter.asp"
  MM_fieldsStr  = "EditorValue|value|Varenummer|value|Varenavn|value|Kort_beskrivelse|value|Kommentarer|value|Alder_fra|value|Alder_til|value|Pris|value|Engros|value|Dato|value|Producent|value|Billede|value|PK1|value|PK2|value|PK3|value|PK4|value|PK5|value|PK6|value|PK7|value|PK8|value|Underkategori|value|Vaegt|value|Aktiv|value|Rotation|value|Forhandler|value"
  MM_columnsStr = "Lang_beskrivelse|',none,''|Varenummer|',none,''|Varenavn|',none,''|Kort_beskrivelse|',none,''|Kommentarer|',none,''|Alder_fra|none,none,NULL|Alder_til|none,none,NULL|Pris|none,none,NULL|Engros|none,none,NULL|Dato|',none,''|Producent|',none,''|Billede|',none,''|PK1|none,'Y','N'|PK2|none,'Y','N'|PK3|none,'Y','N'|PK4|none,'Y','N'|PK5|none,'Y','N'|PK6|none,'Y','N'|PK7|none,'Y','N'|PK8|none,'Y','N'|Underkategori|',none,''|Vaegt|none,none,NULL|Aktiv|none,'Y','N'|Rotation|none,'Y','N'|Forhandler|none,'Y','N'"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
 
  ' set the form values
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i)))
  Next

  ' append the query string to the redirect URL
  If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
    If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
      MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
    Else
      MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
    End If
  End If

End If
%>
<%
' *** Update Record: construct a sql update statement and execute it

If (CStr(Request("MM_update")) <> "" And CStr(Request("MM_recordId")) <> "") Then

  ' create the sql update statement
  MM_editQuery = "update " & MM_editTable & " set "
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
    MM_typeArray = Split(MM_columns(MM_i+1),",")
    MM_delim = MM_typeArray(0)
    If (MM_delim = "none") Then MM_delim = ""
    MM_altVal = MM_typeArray(1)
    If (MM_altVal = "none") Then MM_altVal = ""
    MM_emptyVal = MM_typeArray(2)
    If (MM_emptyVal = "none") Then MM_emptyVal = ""
    If (MM_formVal = "") Then
      MM_formVal = MM_emptyVal
    Else
      If (MM_altVal <> "") Then
        MM_formVal = MM_altVal
      ElseIf (MM_delim = "'") Then  ' escape quotes
        MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
      Else
        MM_formVal = MM_delim + MM_formVal + MM_delim
      End If
    End If
    If (MM_i <> LBound(MM_fields)) Then
      MM_editQuery = MM_editQuery & ","
    End If
    MM_editQuery = MM_editQuery & MM_columns(MM_i) & " = " & MM_formVal
  Next
  MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId

  If (Not MM_abortEdit) Then
    ' execute the update
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> "") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>

Jeg kan godt gemme med "." så det er helt klart kommaet der giver fejlen.
Er der en god ide derude???
Avatar billede disky Nybegynder
13. juni 2003 - 19:32 #1
Ja brug . i stedet.

I de fleste lande bortset fra danmark er . seperatoren imellem helttal og brøkdel. Og fordi databasen ikke er lavet kun til danmark skal du bruge . istedet.
Avatar billede disky Nybegynder
13. juni 2003 - 19:34 #2
den kolonne du vil indsætte i hvad type er den ?

hvis du har data som en Streng skal du bare lave den om til et tal før du smider den ned i databasen.
Avatar billede moso Nybegynder
13. juni 2003 - 19:35 #3
det giver mig bare et problem, for når jeg henter værdien ind i feltet, bliver det automatisk lavet om fra 3.25 til 3,75, og så skal man manuelt sidde og rette tilbage. Derfor duer det ikke..
Avatar billede disky Nybegynder
13. juni 2003 - 19:37 #4
Hvis din data er en streng gør du følgende:

1. lav streng til et tal (float)
2. gem værdi i databasen

3. hent float fra databasen
4. lav flot om til streng igen under hensyntagen til den lokale kommaseperator.

Denne metode ville nok være den korrekte at gøre det på.

Så tager du hensyn til om folk bruger . eller ,
Avatar billede moso Nybegynder
13. juni 2003 - 19:37 #5
Det er jeg ikke sikker på jeg forstår..
Avatar billede disky Nybegynder
13. juni 2003 - 19:39 #6
Okay lidt info.

Hvilken variabel type er det du ønsker at gemme ?
Hvilken kolonne type vil du gemme den variabel i ?

Du kan evt. også bare gemme dit tal som en streng i databasen, så slipper du helt for problemmet, men det er svært at localize programmet.
Avatar billede moso Nybegynder
13. juni 2003 - 19:41 #7
Jeg skal gemme det i en værdi som kan beregnes, derfor har jeg valgt double.
kolonne type?
Avatar billede disky Nybegynder
13. juni 2003 - 19:42 #8
fornuftigt.

hvordan har du værdien gemt i din ASP kode ?
Avatar billede moso Nybegynder
13. juni 2003 - 19:44 #9
? Numeric ?
Avatar billede disky Nybegynder
13. juni 2003 - 19:45 #10
hvis den er gemt numerisk kan du mig bekendt slet ikke havde det problem.

Hvordan ser dit komplette insert statement ud ?
Avatar billede moso Nybegynder
13. juni 2003 - 19:46 #11
Problemet ser lidt ud til at komme når jeg henter værdien ind i et felt. I db bliver den gemt som 3.25 men i feltet vises den som 3,25
Avatar billede moso Nybegynder
13. juni 2003 - 19:47 #12
Hvis jeg gemmer 3.75 er der ingen problemer, men den henter ikke 3.75, men 3,75.
Hvis bare man kan ændre det, så feltet indeholder . og ikke , så er alt ok.
Avatar billede disky Nybegynder
13. juni 2003 - 19:48 #13
nu er jeg forvirret, snakker vi om at gemme eller at hente fra basen.

Den værdi du gemmer i basen hvor kommer den fra ? er det fra et textfield i en form ? Hvis det er, så er den jo en Streng, hvis du gemmer den i en kolonne som er en double, skal der anvender . og ikke ,
Avatar billede moso Nybegynder
13. juni 2003 - 19:52 #14
Jeg henter værdien fra db. Viser den i et felt så brugeren kan opdatere den.
Den skal derefter opdateres i db.
Den henter en værdi feks 3.25 men viser 3,25 og det er her problemet med kommaet kommer ind.
Sorry hvis ikke jeg havde udtryk mig klart nok
Avatar billede disky Nybegynder
13. juni 2003 - 19:54 #15
okay i databasen er værdien gemt som 3.25 som er amerikansk standard, da du kører på et dansk system blvier den lavet om til 3,25.

Når brugeren så har rettet i feltet og det bliver post'et tilbage til webserveren, skal du så enten udskifte , med . eller lave strengen der indeholder tallet om til en tal variable.
Avatar billede moso Nybegynder
13. juni 2003 - 19:55 #16
ok, og hvordan gør man det
Avatar billede disky Nybegynder
13. juni 2003 - 19:58 #17
se nu har vi så et problem, jeg aner ikke hvordan man gør det i ASP.
Avatar billede moso Nybegynder
13. juni 2003 - 19:59 #18
shit.
Avatar billede cdc Novice
13. juni 2003 - 20:01 #19
er det en windows 2000 server eller en linux du har siden på ?
Avatar billede moso Nybegynder
13. juni 2003 - 20:02 #21
det er en windows- server
Avatar billede disky Nybegynder
13. juni 2003 - 20:08 #22
denne her er nok bedre, det du skal er at du skal havde parset din streng til en variable af double typen.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemInt16ClassParseTopic4.asp

Men det er nok bedre vi afsluttet asp delen af dit spørgsmål og du spørger om den lille ting i ASP gruppen.
Avatar billede cdc Novice
13. juni 2003 - 20:08 #23
vi brugte denne FormatNumber(SALGSPRISEUR,2)
Avatar billede moso Nybegynder
13. juni 2003 - 20:10 #24
FormatNumber(SALGSPRISEUR,2)??
Hvordan det?
Avatar billede disky Nybegynder
13. juni 2003 - 20:12 #26
prøv med:
Function FormatNumberDemo
  Dim MyAngle, MySecant, MyNumber
  MyAngle = 1.3  ' Define angle in radians.
  MySecant = 1 / Cos(MyAngle)  ' Calculate secant.
  FormatNumberDemo = FormatNumber(MySecant,4) ' Format MySecant to four decimal places.
End Function


taget fra første hit
Avatar billede moso Nybegynder
13. juni 2003 - 20:14 #27
Jeg synes ikke jeg kan overskue det. Hvordan skal koden se ud....
Avatar billede cdc Novice
13. juni 2003 - 20:16 #28
En af grundene til at det ikke virker kan også være at den ikke snakker så godt med en dansk iLCID, på vores server skulle de bruge den svenske iLCID for at virke.
Hvorfor ved jeg ikke, men det var grunden til at det ikke lige netop dette problem ikke virkede
Avatar billede moso Nybegynder
13. juni 2003 - 20:18 #29
jeg har helt tabt tråden niveauet kom lige lidt for højt op.
kan vi få det lidt ned igen.
jeg er med på at jeg "bare" skal konvertere , til . men jeg ved ikke hvordan det gøres. Jeg ved godt at det efterhånden hører hjemme i ASP, men nu er vi jo her;-)
Avatar billede disky Nybegynder
13. juni 2003 - 20:18 #30
Lol FormatNumber gør det fra et tal til en streng vi skal fra en streng til et tal :)
Avatar billede disky Nybegynder
13. juni 2003 - 20:20 #31
kig her:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdoubleclassparsetopic.asp

Der er den metode beskrevet som du skal bruge.

Men vi er langt udenfor området denne gruppe egentligt handler om, nemlig MySQL.
Luk venligst spørgsmålet og uddel point hvis du synes, og spørg specifikt om dit konverteringsproblem i ASP gruppen.
Avatar billede moso Nybegynder
13. juni 2003 - 20:22 #32
ok.
Avatar billede disky Nybegynder
13. juni 2003 - 20:23 #33
prøv med

VI siger din Streng variable hedder 'text'

text.replace(".",",");
Avatar billede moso Nybegynder
13. juni 2003 - 20:24 #34
Jeg er helt lost. Jeg ville ikke ane hvor det skal sættes ind.
Avatar billede disky Nybegynder
13. juni 2003 - 20:27 #35
moso:
Ikke for at være grov, men jeg tror den opgave du har gang i er lidt for avanceret på nuværende tidspunkt, jeg ville prøve at få erfaring med lettere opgaver først.
Avatar billede moso Nybegynder
13. juni 2003 - 20:28 #36
i know. men nu sidder jeg jo med det.
jeg må jo prøve at komme igennem.
Avatar billede moso Nybegynder
13. juni 2003 - 20:43 #37
http://www.eksperten.dk/spm/364567
Der er en hurtig løsning, men tak alligevel for hjælp (og kritik)
Avatar billede disky Nybegynder
13. juni 2003 - 20:46 #38
wow min asp kode var næsten korrekt, dog brugte jeg vb.net udgaven istedet for vbscript udgaven :-)

Held og lykke med projektet.
Avatar billede moso Nybegynder
13. juni 2003 - 20:47 #39
tak
Avatar billede disky Nybegynder
13. juni 2003 - 20:50 #40
p.s. Undskyld hvis min kommentar om 'for svært projekt' var lidt grov, det var ikke meningen.
Avatar billede moso Nybegynder
13. juni 2003 - 20:54 #41
næ, du har jo til dels ret. jeg kæmper mig frem, og derigennem lykkedes det en gang
Avatar billede moso Nybegynder
13. juni 2003 - 20:54 #42
imellem.
Avatar billede disky Nybegynder
13. juni 2003 - 21:00 #43
Kanon, man lærer en del ved svære opgaver, men det kan godt nok være langhåret.

Jeg har selv lige fået et nyt job hvor jeg skal lave avanceret VB.net programmering, og ovenstående VB.net kode er det første jeg nogensinde har skrevet, så det skal nok blive sjovt :-)))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester