PalleMedlem sedan apr. 20002 716 inlägg Jag blir tokig.. *slita håret* ..jag får inte detta till att fungera. :(
Har ett vanligt formulär, 1 textfält och 1 checkbox.
Detta skall uppdatera värden i en access-databas, hur databasen ser ut finns i bifogad bild.
Följande kod ger detta felmeddelande: För få parametrar angavs. 1 förväntades.
[RED]strName = dbSafe(Request.Form("txName"))
bolMailMe = cBool(Request.Form("txMailMe"))
Connect.Execute("UPDATE tblClients SET fldName='"& strName &"', fldMail="& bolMailMe &" WHERE ID="& trim(Request.Querystring("id")))[/RED]
sql-satsen ser ut så här om jag skriver ut den: UPDATE tblClients SET fldName='palleman', fldMail=Sant WHERE ID=14
Kopierar jag sql-satsen som jag skrev ut och exekverar den uppdateras posterna precis som det ska.. :q ..hur kan detta komma sig?
@ndersMedlem sedan juni 200026 914 inlägg Får du sant när du använder CBool()? Jag tror att du ska använda true/false i din SQL-fråga.
Mvh,
PalleMedlem sedan apr. 20002 716 inlägg Skriver jag så här:
[red]bolMailMe = cBool(Request.Form("txMailMe"))
Response.Write bolMailMe[/red]
..så får jag True/False.
Men när jag använder bolMailMe i sql-satsen så får jag Sant/Falskt
Hur kommer det sig? :OO
PalleMedlem sedan apr. 20002 716 inlägg [red]Response.Write VarType(bolMailMe)[/red]
..returnerar 11, så variabeln är ju vbBoolean.
..frågan är nu bara hur sjutton får jag den till engelskt-false i min sql-sats? ;)
PalleMedlem sedan apr. 20002 716 inlägg Testade lite med att gå runt cBool, tyvärr utan resultat. :(
[red]bolMailMe = trim(Request.Form("txMailMe"))
If Len(bolMailMe) > 0 Then bolMailMe = True Else bolMailMe = False
Connect.Execute("UPDATE tblClients SET fldName='"& strName &"', fldMail="& bolMailMe &" WHERE ID="& trim(Request.Querystring("id")))[/red]
..ger följande utskriven sql-sats: UPDATE tblClients SET fldName='jultomten', fldMail=Falskt WHERE ID=16
mrblondeMedlem sedan aug. 20011 386 inlägg gör en cint, så blir den en etta eller en nolla, det brukar databasen kunna acceptera.
PalleMedlem sedan apr. 20002 716 inlägg Aha, då har jag lärt mig något nytt idag. :bire
Fick göra så här:
[red]bolMailMe = cInt(cBool(Request.Form("txMailMe")))[/red]
..då ville den vara med och leka.
Skulle ändå vara intressant att veta varför jag får oanvändbara värden i min sql-sats när jag använder cBool. :l
Om någon har nått bra svar, please posta.
Tack mrblonde!
mrblondeMedlem sedan aug. 20011 386 inlägg jag gissar att du får sant/falskt för att du på servern har svenska installerat som språk på os:et? Eller att du kanske kör med LCID = 1053 (1053 = Svenska om jag inte missminner mig).
Svårt att komma runt på annat sätt än att antingen köra med engelskt os, eller alltid använda 1/0. Jag föredrar det sista för att slippa språkförbistring med kompilatorn :)
mikulMedlem sedan aug. 2001810 inlägg Tack mrBlonde, nu har även jag lärt mig nått nytt. ;)
/ Mikul
OveRRidEMedlem sedan feb. 20018 509 inlägg cBool() returnerar väl alltid True/False?
Svensk Access returnerar väl alltid Sant/Falskt?
Got'cha! mrBlonde, stark kandidat till denna trådens "förklarare".
I alla fall, kan det tänkas att det är nya artikelsystemet Palle gör, som kommer på nya ***********?
(fråga riktad till Palle)
PalleMedlem sedan apr. 20002 716 inlägg
OveRRidE skrev:
cBool() returnerar väl alltid True/False?
Svensk Access returnerar väl alltid Sant/Falskt?
Testa följande, det ger helt olika resultat beroende på hur/när man använder det:
[RED]<%
intTest = 0
bolTest = cBool(intTest)
%>
Test1: <%= bolTest %>
<br>
Test2: <%= "SELECT fld1 FROM tbl1 WHERE fld1 = "& bolTest &" ORDER BY ID DESC" %>
<br>
Test3: <%= ""& bolTest %>[/RED]
Palle skrev:
m_soderlund skrev:
I alla fall, kan det tänkas att det är nya artikelsystemet Palle gör, som kommer på nya ***********?
(fråga riktad till Palle)
Svar nej. :e
Oki doki. :)
Tyvärr är jag helt borta vad gäller ditt problem. Småskumt.
nikoMedlem sedan juni 20022 415 inlägg Det här är en bugg som har att göra med castning av boolean till string vid konkatenering.
Det är därför som:
response.write "" & bolTest
hos vissa inte ger samma resultat som:
response.write bolTest ' (ingen konkatening)
Jag känner själv igen den från VB: http://support.microsoft.com/?kbid=216379, har aldrig sett den i VBScript, dock. Jag får true/false i alla fallen även om jag kör svenskt LCID och svenska regional settings. Tricket som det står i länken är att köra CStr innan konkateneringen.
PalleMedlem sedan apr. 20002 716 inlägg Ok, intressant.
Tack för den informationen niko. :)