webForumDet fria alternativet

vad stämmer inte i SQL-satsen?

12 svar · 372 visningar · startad av WebbisNet

WebbisNetMedlem sedan feb. 20032 027 inlägg
#1

Vad har jag gjort för fel?

jag får

Microsoft VBScript compilation error '800a0400' 

Expected statement 

/asp/Admin/main.asp, line 217 

"WHERE tblStart = " & txtStart & " , tblTopRight = " & txtTopRight & " , tblBottom = " & txtBottom & "'"

med

Dim conn, SQL

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connstr

tblStart = Request.Form("txtStart")
tblTopRight = Request.Form("txtTopRight")
tblBottom = Request.Form("txtBottom")

SQL = "UPDATE Mainsite SET tblStart=' " & tblStart & " ', tblTopRight=' " & tblTopRight & " ', tblBottom=' " & tblBottom & " ' "
"WHERE tblStart = " & txtStart & " , tblTopRight = " & txtTopRight & " , tblBottom = " & txtBottom & "'"
'conn.Execute(SQL)
response.write(SQL)
'response.redirect "main.asp"

@ndersMedlem sedan juni 200032 969 inlägg
#2

Du kan inte i asp bara dela på strängar hur som helst, utan du måste se till att konkatenera ordentligt.

SQL = "UPDATE Mainsite SET tblStart=' " & tblStart & " ', tblTopRight=' " & tblTopRight & " ', tblBottom=' " & tblBottom & " ' " & _
" WHERE tblStart = " & txtStart & " AND tblTopRight = " & txtTopRight & " AND tblBottom = " & txtBottom & "'"

eller

SQL = "UPDATE Mainsite SET tblStart=' " & tblStart & " ', tblTopRight=' " & tblTopRight & " ', tblBottom=' " & tblBottom & " ' "
SQL = SQL & " WHERE tblStart = " & txtStart & " AND tblTopRight = " & txtTopRight & " AND tblBottom = " & txtBottom & "'"

Ska du verkligen ha mellanslag runt alla värden :q

MogMedlem sedan nov. 2003266 inlägg
#3

Kanske :OO

WHERE tblStart = " & txtStart & " AND tblTopRight = " & txtTopRight & " AND  tblBottom = " & txtBottom & "'"
cyprysMedlem sedan dec. 20003 563 inlägg
#4

WHERE villkor skrivs t.ex. enligt AND och OR, inte med komman.

WHERE kol1 = 1 AND (kol2 = 5 OR kol3 = 5)

Sen om du ska ha AND eller OR vet du bara själv ;)

WebbisNetMedlem sedan feb. 20032 027 inlägg
#5

NU ser jag värdena i sqlsträngen, men inget läggs i databasen.
tbl är tabellkolumnen och txt är min textarea

@ndersMedlem sedan juni 200032 969 inlägg
#6

Stämmer WHERE-satsen då?

edit: Det känns också konstigt att du har apostrofer runt fältvärdena i UPDATE-delen, men inga apostrofer i WHERE på samma fält? Vad är det som gäller datatypsmässigt? Tal?

WebbisNetMedlem sedan feb. 20032 027 inlägg
#7

Nu har jag ' runt alla värden i Wheresatsen, men det gjorde ingen skillnad, datatypen är Text

@ndersMedlem sedan juni 200032 969 inlägg
#8

@nders skrev:

Stämmer WHERE-satsen då?

Skriv gärna ut SQL-frågan istället för att exekvera den, då är det lättare att se vad som är galt.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#9

så här ser det ut när jag skriver ut sqlsatsen

UPDATE Mainsite SET tblStart=' här kommer lite data ', tblTopRight=' ', tblBottom=' ' WHERE tblStart =' ', tblTopRight =' ', tblBottom =' '

När jag skriver i ett annat av de 3 fält som detta sköter så hoppar det första fältet tillbaka till den föregående sparade texten medan den andra texten läggs i sqlsatsen

@ndersMedlem sedan juni 200032 969 inlägg
#10
  1. Har du inget ID-fält du kan använda som nyckel om du nu ska uppdatera en befintlig post, istället för att jämföra alla tidigare värden?
  2. Varför har du mellanslag runt alla värden? Ska det vara så?
WebbisNetMedlem sedan feb. 20032 027 inlägg
#11

jag har ett id som är primärnyckel, men hur lägger jag in den i koden

jag är bara van vid select nånting from databas where id = id

@ndersMedlem sedan juni 200032 969 inlägg
#12
UPDATE tblNånting SET fldNånting = 'nånting' WHERE ID = 4

Förutsätter ju givetvis att du skickar med ID från där du editerar texten. Passar bra att skicka i querystring eller som ett hiddenfält från formuläret.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#13

Här är koden för att visa inne hållet i fälten:

<%
Set conn = Server.CreateObject("ADODB.connection")
Set RS = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM Mainsite"
tblStart = Request.Form("txtStart")
tblTopRight = Request.Form("txtTopRight")
tblBottom = Request.Form("txtBottom")
conn.Open connstr
RS.Open SQL, conn
conn.Execute(SQL)
'response.write SQL
%>
                             <FORM ACTION="main.asp?action=save" METHOD="post" NAME="main">
                             <TR>
                               <TD>

						<TEXTAREA COLS="35" ROWS="14" NAME="txtStart"><%=RS("tblStart")%></TEXTAREA><br>
						<input id="button" type="submit" value="Uppdatera">
						</td>
						<td>
						<TEXTAREA COLS="35" ROWS="5" NAME="txtTopRight"><%=RS("tblTopRight")%></TEXTAREA><br>
						<input id="button" type="submit" value="Uppdatera">
						
						<TEXTAREA COLS="35" ROWS="5" NAME="txtBottom"><%=RS("tblBottom")%></TEXTAREA><br>
						<input id="button" type="submit" value="Uppdatera">
						</td>
					</tr>
			    </form>
<%
  RS.Close
  Set RS = Nothing
  conn.Close
%>

När man klickar på uppdatera så går den till ett annat ställe där min update sats ligger

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