Avatar billede pelskee Nybegynder
03. november 2005 - 11:51 Der er 21 kommentarer og
1 løsning

Komma sammenligning i SQL statement fejler

jeg har denne sql som forsøger at sammenligne 7,44 med 7,44 men det vil den ikke. er der nogen måde jeg kan konvertere tallene så jeg kan sammeligne dem:

"SELECT * FROM tblCurrency WHERE Rate = " & (rsShipsInsuranceValue.Fields.Item("Currency").Value) & ""

FEJL:
SELECT * FROM tblCurrency WHERE Rate = 7,44
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near ','.

/hull/include/ships_insurancevalue.asp, line 419
Avatar billede koldstar Nybegynder
03. november 2005 - 11:52 #1
hvis rate er gemt som en streng:

"SELECT * FROM tblCurrency WHERE Rate = '" & (rsShipsInsuranceValue.Fields.Item("Currency").Value) & "'"
Avatar billede koldstar Nybegynder
03. november 2005 - 11:52 #2
ellers kan du prøve:

"SELECT * FROM tblCurrency WHERE Rate = '" & replace((rsShipsInsuranceValue.Fields.Item("Currency").Value),",",".") & "'"
Avatar billede koldstar Nybegynder
03. november 2005 - 11:53 #3
hov, selvfølgelig uden '

SELECT * FROM tblCurrency WHERE Rate = " & replace((rsShipsInsuranceValue.Fields.Item("Currency").Value),",",".")
Avatar billede arne_v Ekspert
03. november 2005 - 12:13 #4
det sidste

SQL bruger punktum til decimal
Avatar billede pelskee Nybegynder
03. november 2005 - 12:18 #5
værdien i Rate er 7,44
og værdien i (rsShipsInsuranceValue.Fields.Item("Currency").Value) er 7,44

så replace((rsShipsInsuranceValue.Fields.Item("Currency").Value),",",".") virker ift at udskifte komma med punktum men når værdien i Rate er 7,44 aner jeg ikke hvad man så kan gøre
Avatar billede pelskee Nybegynder
03. november 2005 - 12:21 #6
Rate er data type decimal length 9 scale 4
Avatar billede pelskee Nybegynder
04. november 2005 - 08:03 #7
kan det ikke lade sig gøre eller ?
Avatar billede pelskee Nybegynder
05. november 2005 - 08:13 #8
jeg prøver og lave et udtræk men den melder fejl.

1. Værdien i feltet Rate er 7,44
2. Værdien i feltet (rsShipsInsuranceValue.Fields.Item("Currency").Value) er 7,44

men når jeg laver følgende SQL melder den fejl:
"SELECT * FROM tblCurrency WHERE Rate = " & (rsShipsInsuranceValue.Fields.Item("Currency").Value) & ""

Fejl med SQL udskrift:
SELECT * FROM tblCurrency WHERE Rate = 7,44
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near ','.
/hull/include/ships_insurancevalue.asp, line 419
Avatar billede arne_v Ekspert
05. november 2005 - 09:35 #9
hvis rate er et nummerisk felt:

"SELECT * FROM tblCurrency WHERE Rate = " & Replace(rsShipsInsuranceValue.Fields.Item("Currency").Value,",",".")

hvis rate er et tekst felt:

"SELECT * FROM tblCurrency WHERE Rate = '" & (rsShipsInsuranceValue.Fields.Item("Currency").Value) & "'"
Avatar billede pelskee Nybegynder
07. november 2005 - 09:30 #10
denne burde være rigtig:SELECT * FROM tblCurrency WHERE Rate = 7,44
fordi Rate i databasen er decimal datatype og værdien i feltet Rate er 7,44 med komma
er der nogen måde kan man formattere Rate på fra databasen ala:

SELECT * FROM tblCurrency WHERE replace(Rate,",",".") = " & replace((rsShipsInsuranceValue.Fields.Item("Currency").Value),".",",")
Avatar billede arne_v Ekspert
07. november 2005 - 09:43 #11
tal i SQL sætninger er altid med punktum og ikke med komma
Avatar billede pelskee Nybegynder
07. november 2005 - 09:47 #12
også selvom værdien i databasen er med komma ?
Avatar billede arne_v Ekspert
07. november 2005 - 09:49 #13
DECIMAL data typem gemmes i et binært format uden komma i databasen

i SQL skal den altid angives med punktum

ved udtræk kan output sikkert være både punktum og komma afhængig af
sprog opsætning og hvordan man henter ud
Avatar billede pelskee Nybegynder
07. november 2005 - 09:52 #14
jeg har prøvet og udskrive Rate

SELECT * FROM tblCurrency WHERE Rate = 7.44
Rate udskrives: 7,44


SQL:
<%
Session.LCID=1030
If (rsShipsInsuranceValue.Fields.Item("Currency").Value)<>"" Then
Dim rsCurrencyShow
Dim rsCurrencyShow_numRows

Set rsCurrencyShow = Server.CreateObject("ADODB.Recordset")
rsCurrencyShow.ActiveConnection = MM_claims_conn_STRING
rsCurrencyShow.Source = "SELECT * FROM tblCurrency WHERE Rate = " & replace((rsShipsInsuranceValue.Fields.Item("Currency").Value),",",".") & ""
response.Write("SELECT * FROM tblCurrency WHERE Rate = " & replace((rsShipsInsuranceValue.Fields.Item("Currency").Value),",","."))
rsCurrencyShow.CursorType = 0
rsCurrencyShow.CursorLocation = 2
rsCurrencyShow.LockType = 1
rsCurrencyShow.Open()
response.Write("<br>Rate udskrives: " & (rsCurrencyShow.Fields.Item("Rate").Value))

rsCurrencyShow_numRows = 0
If NOT rsCurrencyShow.EOF AND NOT rsCurrencyShow.BOF Then
showcurrency = (rsCurrencyShow.Fields.Item("ISO").Value)
Else
showcurrency = "None found"
End if
showcurrency = "None found"
End if
%>
Avatar billede pelskee Nybegynder
07. november 2005 - 09:52 #15
kan jeg ændre sprog eller lign for at udtrækket bliver korrekt
Avatar billede arne_v Ekspert
07. november 2005 - 09:54 #16
ja

. i SQL

, eller . i outout
Avatar billede arne_v Ekspert
07. november 2005 - 09:54 #17
måske - men mine ASP/VBS kundskaber rækker ikke til det
Avatar billede pelskee Nybegynder
07. november 2005 - 09:54 #18
okay det er så afgjort. jeg er en idiot = Session.LCID=1030
nu spiller det.
undskyld ulejligheden...:)

point til dig
Avatar billede arne_v Ekspert
07. november 2005 - 09:56 #19
så ligger jeg et svar
Avatar billede arne_v Ekspert
07. november 2005 - 09:57 #20
så Session.LCID=1030 switcher til dansk
Avatar billede pelskee Nybegynder
07. november 2005 - 10:59 #21
yes sir :)
Avatar billede pelskee Nybegynder
07. november 2005 - 10:59 #22
tak for hjælpen
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