Avatar billede pelskee Nybegynder
03. februar 2004 - 09:27 Der er 18 kommentarer og
1 løsning

Konvertering af priser

jeg kan ikke få lov til at skrive prisen 50,95 til databasen. den vil kun acceptere 50.95. hvordan kan jeg omskrive det ?

NB: jeg bruger Dreamweaver så det er vigtigt at koden kan tilpasses det gejl som DW laver. Eksempel på min opret produkt kode:

<%
' *** Edit Operations: declare variables

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
  MM_editAction = MM_editAction & "?" & Request.QueryString
End If

' boolean to abort record edit
MM_abortEdit = false

' query string to execute
MM_editQuery = ""
%>
<%
' *** Insert Record: set variables

If (CStr(Request("MM_insert")) = "fHtmlEditor") Then

  MM_editConnection = MM_scandlines_STRING
  MM_editTable = "Vin"
  MM_editRedirectUrl = "oversigt_vin.asp"
  MM_fieldsStr  = "EditorValue|value|Land|value|Distrikt|value|Producent|value|Aargang|value|Drue|value|DrueProcent|value|Smagstype|value|Type|value|Stoerrelse|value|Alkoholprocent|value|Salgstype|value|Pris_DKK|value|Pris_DKK_v6|value|Aktiv_Dansk|value|Aktiv_Svensk|value|Overskrift|value|Broedtekst|value|Rating|value|Billede|value"
  MM_columnsStr = "Beskrivelse|',none,''|Land|',none,''|Distrikt|',none,''|Producent|',none,''|Aargang|',none,''|Druen|',none,''|DrueProcent|',none,''|Smagstype|',none,''|Type|',none,''|Stoerrelse|',none,''|Alkoholprocent|none,none,NULL|Salgstype|',none,''|Pris_DKK|',none,''|Pris_DKK_v6|',none,''|Aktiv_Dansk|none,'Y','N'|Aktiv_Svensk|none,'Y','N'|Overskrift|',none,''|Broedtekst|',none,''|Rating|',none,''|Billede|',none,''"

  ' 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
%>
<%
' *** Insert Record: construct a sql insert statement and execute it

Dim MM_tableValues
Dim MM_dbValues

If (CStr(Request("MM_insert")) <> "") Then

  ' create the sql insert statement
  MM_tableValues = ""
  MM_dbValues = ""
  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_tableValues = MM_tableValues & ","
      MM_dbValues = MM_dbValues & ","
    End If
    MM_tableValues = MM_tableValues & MM_columns(MM_i)
    MM_dbValues = MM_dbValues & MM_formVal
  Next
  MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

  If (Not MM_abortEdit) Then
    ' execute the insert
    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
%>
Avatar billede nute Nybegynder
03. februar 2004 - 09:36 #1
du skal bruge Replace() funktionen:

str = "50,50"
str = Replace( str, ",",".")

/nute
Avatar billede pelskee Nybegynder
03. februar 2004 - 09:44 #2
hej igen nute :)

jeg kan bare ikke se hvor i koden det skal implementeres. det plejer at være problemet med Dreamweaver at det er svært at lave en replace.

Felterne hedder:
Pris_DKK
Pris_DKK_v6

det er dem der skal kunne angives med 50,95 men når de skrives til databasen skal det være 50.95
Avatar billede nute Nybegynder
03. februar 2004 - 09:54 #3
det er en af grundene til at jeg ikke bruger editorer som fx DreamWeaver ... den fucker fuldstendig op alt der hedder fornuft ;-) Man har ikke kontrol på "en skid" ...

anyway ... du kan jo prøve at gøre følgende:

For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    if( MM_fields(MM_i+1) = "Pris" Or MM_fields(MM_i+1) = "Pris_DKK_v6" ) then
        MM_formVal = Replace( MM_fields(MM_i+1), ",","." )
    else
        MM_formVal = MM_fields(MM_i+1)
    end if
Avatar billede pelskee Nybegynder
03. februar 2004 - 10:00 #4
hehe i know ... eller dvs det fortæller de gode kodere mig :)

inden jeg sætter det ind.. erstatter den kode du skrev disse 2 linier:

For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
Avatar billede pelskee Nybegynder
03. februar 2004 - 10:04 #5
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[TCX][MyODBC]Column count doesn't match value count at row 1
/admin/vin/opret_vin.asp, line 140

Linie 140:    MM_editCmd.Execute
Avatar billede pelskee Nybegynder
03. februar 2004 - 10:04 #6
roder lige med det - vender tilbage senere i dag :)
Avatar billede nute Nybegynder
03. februar 2004 - 10:09 #7
hmm ... prøv:

For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    tmpField = MM_fields(MM_i+1)
    if( tmpField = "Pris" Or tmpField = "Pris_DKK_v6" ) then
        MM_formVal = Replace( tmpField, ",","." )
    else
        MM_formVal = tmpField
    end if

pointet er bare at du skal finde de 'MM_fields' der hedder "Pris" og "Pris_DKK_v6" og replace disse ...

/nute
Avatar billede pelskee Nybegynder
03. februar 2004 - 10:50 #8
nu kører den igennem uden fejl men den tager ikke det med efter komma
59,95 bliver til 59
Avatar billede nute Nybegynder
03. februar 2004 - 11:02 #9
hmm ... det giver da ingen mening. der er ingenting i din kode der gør at den skal runde af.

men for at tjekke at din SQL er korrekt, prøv at skrive den ud:

MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"
Request.write( "SQL: " & MM_editQuery )

og fjern din Response.Redirect (så du har mulighed for at se din SQL).

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

Ser din SQL ok ud ? ser dit beløb ud som det skal ?

/nute
Avatar billede pelskee Nybegynder
03. februar 2004 - 11:08 #10
SQL: insert into Vin (Beskrivelse,Land,Distrikt,Producent,Aargang,Druen,DrueProcent,Smagstype,Type,Stoerrelse,Alkoholprocent,Salgstype,Pris_DKK,Pris_DKK_v6,Aktiv_Dansk,Aktiv_Svensk,Overskrift,Broedtekst,Rating,Billede) values ('','Argentina','Mendoza','','','','','','','',NULL,'Best Buy','59,95','60','Y','N','dasadaw','','','intet billede') Informationer
Avatar billede pelskee Nybegynder
03. februar 2004 - 11:13 #11
mærkeligt det ser rigtigt ud - men når jeg slår den record op i databasen står der:
59.00 60.00 Best Buy dasadaw
Avatar billede nute Nybegynder
03. februar 2004 - 11:13 #12
oki ... du har ikke fået fanget prisen ... du kan godt se at prisen her stadig er '59,95'.

Men efter at have kigget lidt mere på din kode, kan det se ud som om du skal gøre:

For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    if( MM_fields(MM_i) = "Pris" Or MM_fields(MM_i) = "Pris_DKK_v6" ) then
        MM_formVal = Replace( MM_fields(MM_i+1), ",","." )
    else
        MM_formVal = MM_fields(MM_i+1)
    end if

/nute
Avatar billede pelskee Nybegynder
03. februar 2004 - 11:15 #13
er det meningen at det i SQL skal stå som: 59.95 med punktum ?
Avatar billede nute Nybegynder
03. februar 2004 - 11:20 #14
yup ...
Avatar billede pelskee Nybegynder
03. februar 2004 - 11:22 #15
hey - det virker - yippieeeeeeeeeeeeeeeeeeeeee
im am sooooo happy

tak nute :)
Avatar billede pelskee Nybegynder
03. februar 2004 - 11:23 #16
har du noget imod at forklare hvad det er koden gør linie for linie ... ellers kommer jeg jo aldrig fra dreamweaver til håndkode :)
Avatar billede nute Nybegynder
03. februar 2004 - 11:27 #17
det var da godt at høre :-) har aldrig helt klaret at gennemskue kode fra dreamWeaver tidligere. hver eneste gang jeg ser kode fra DW, så rykker jeg 3 meter bagud ... det er noget værre skod :-|

Men jeg tror det er nemmere for dig at lære *uden* at kigge på koden fra DW. DW laver så meget unødig kode som ikke er normalt at bruge, så jeg ville hellere råde dig til at læse en tutorial om ASP. læs denne ... den er meget nem at tilgå, og efter at du har læst denne igennem, så vil du nok være dygtig nok til at forstå meget af den kode som DW genererer:

http://html.dk/tutorials/asp/

held og lykke med det :o]
Avatar billede pelskee Nybegynder
03. februar 2004 - 11:42 #18
ok - tak nute
Avatar billede nute Nybegynder
03. februar 2004 - 11:48 #19
selv tak :-)
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
Kurser inden for grundlæggende programmering

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