För det första är det en hemsk lustig SQL-sats som sätts ihop, men en SELECT mitt i INSERT:en. Det funkar, eftersom SELECT:en returnerar ett "låtsasresultat", men det är osmidigt och inte SQL-standard.
Det borde i stället vara:
strSQL = "INSERT INTO Gig(Datum, Ort, Hak, Band, Url, Av, Inform)"
strSQL = strSQL & " VALUES("
strSQL = strSQL & "'" & request("Datum") & "','"
strSQL = strSQL & "'" & request("Ort") & "','"
strSQL = strSQL & "'" & request("Hak") & "','"
strSQL = strSQL & "'" & request("Band") & "','"
strSQL = strSQL & "'" & request("Url") & "','"
strSQL = strSQL & "'" & request("Av") & "','"
strSQL = strSQL & "'" & request("Inform") & "')"
Vad gäller '.tecknen är det som bRimba säger. Eftersom strängar avgränsas av '-tecken, blir det syntax-fel om ett sådant tecken kommer mitt i strängen. SQL-parsern tror att strängen är slut, och då ska den följas av satsslut eller ett komma, men i stället kommer något annat...
Sedan kan mna ju inte byta ut ' mot vad som helst. Att byta ut ' mot '' (två enkelfnuttar) kallas double-quoting, och det är en generell tillämpning. SQL-parsern märker att det kommer en enkelfnutt efter den första, och inser då att man faktiskt villa ha med en fnutt i strängen. Vill man ha två fnuttar in strängen får man alltså skriva '''' (fyra stycken).
Jag kan tänka mig att det gåra att lösa mer generellt, men det kräver att man flyttar över indatasträngarna (från request) till variabler, eftersom man inte kan modifiera dessa.
Gör en liten funktion som t.ex. heter strfix, så blir det lättare.
function strfix(strIn)
strfix=replace(strIn,"'","''")
end function
sedan är det bara att använda den...
strSQL = "INSERT INTO Gig(Datum, Ort, Hak, Band, Url, Av, Inform)"
strSQL = strSQL & " VALUES("
strSQL = strSQL & "'" & strfix(request("Datum")) & "','"
strSQL = strSQL & "'" & strfix(request("Ort")) & "','"
strSQL = strSQL & "'" & strfix(request("Hak")) & "','"
strSQL = strSQL & "'" & strfix(request("Band")) & "','"
strSQL = strSQL & "'" & strfix(request("Url")) & "','"
strSQL = strSQL & "'" & strfix(request("Av")) & "','"
strSQL = strSQL & "'" & strfix(request("Inform")) & "')"