webForumDet fria alternativet

Problem med kommatecken

4 svar · 253 visningar · startad av SteveP

StevePMedlem sedan mars 2003772 inlägg
#1

Hej,

Jag har ett problem med ett extra kommatecken som dyker upp om ett av fälten som skall uppdateras lämnas tomt. Det är alltså ett <input type="file"> fält.

Om jag fyller i alla fälten och väljer en bild så fungerar det utmärkt!
SQL satsen ser då ut så här när den skrivs ut:

UPDATE tblhotel SET Country = '{39FDD7C7-0E2A-44A1-B83A-E3B36371236C}', Hotel = 'Bangkok Hilton',[HotelPicture]='fin.jpg' Where ID ='{572688F5-7AE2-4596-940F-ABA45AEE9338}'

Men om jag lämnar bildfältet tomt, alltså struntar i att välja någon bild eftersom jag vill ha kvar den bilden som redan finns så blir SQL satsen så här:

UPDATE tblhotel SET Country = '{39FDD7C7-0E2A-44A1-B83A-E3B36371236C}', Hotel = 'Bangkok Hilton', Where ID ='{572688F5-7AE2-4596-940F-ABA45AEE9338}'

Som ni ser så smyger det in ett kommatecken före "Where ID".

Här är min kod

For each file In mySmartUpload.Files
if len(file.filename)>0 then strSQL=strSQL & "[" & file.name & "]='" & file.filename & "',"
next
strSQL=left(strSQL,len(strSQL)-1)

SQL = "UPDATE tblhotel SET Country = '" & mySmartUpload.Form("SubCountry") & "', Hotel = '" & mySmartUpload.Form("txtHotel") & "'," & strSQL & " Where ID ='" & Request.QueryString("ID") & "'"

Conn.Execute(SQL)
J.N.Medlem sedan apr. 20031 660 inlägg
#2

HEJ!

Ja, så vill du ju ha det, det står ju ett kommatecken före din strSQL, [," & strSQL & "]. ;)

Lätt missa, enkelt lösa genom att flytta upp kommat där variabeln skapas!
strSQL=strSQL & ", [" & file.name & "]='" & file.filename & "',"

StevePMedlem sedan mars 2003772 inlägg
#3

Ja du har rätt! Men om jag flyttar upp kommatecknet på detta vis:

if len(file.filename)>0 then strSQL=strSQL & ",[" & file.name & "]='" & file.filename & "',"
next
strSQL=left(strSQL,len(strSQL)-1)

SQL = "UPDATE tblhotel SET Country = '" & mySmartUpload.Form("SubCountry") & "', Hotel = '" & mySmartUpload.Form("txtHotel") & "'" & strSQL & " Where ID ='" & Request.QueryString("ID") & "'"

Så blir SQL satsen helt korrekt i båda fallen men när jag lämnar bildfältet tomt så får jag följande felmeddelande: Invalid procedure call or argument: 'left'

J.N.Medlem sedan apr. 20031 660 inlägg
#4

Okej, vad koden gör, samlar du ihop en sql-sträng med olika filnamn i?
Och de existerar alltså inte alltid?

I vilket fall, kolla längden på strängen, om den är större än 0, kör left-koden.

http://www.devguru.com/Technologies/vbscript/quickref/len.html

StevePMedlem sedan mars 2003772 inlägg
#5

Bra idé!

Funkade utmärkt.

If Len(strSQL) > 1 then
strSQL=left(strSQL,len(strSQL)-1)
end if

Tack J.N!

137 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)