---
title: "Sql Update, Syntaxfel"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/11065-sql-update-syntaxfel"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Harback"
published: "2001-08-09T21:06:00.000Z"
updated: "2001-08-11T22:01:00.000Z"
replies: 7
views: 225
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/11065-sql-update-syntaxfel"
---

# Sql Update, Syntaxfel

## #1 — Harback, 2001-08-09T21:06Z

Hej.

Jag håller på att göra ett inloggningssystem men jag ett problem. Jag har gjort ett fält i tabellen users i Access som heter fldCount där det ska lagras hur många gånger användaren loggat in. Men jag får inte uppdateringen riktigt att fungera. Det blir ett Syntax-error på Updaten.

Nägon som kan hitta felet?

```
<% 
strName = Request.Form("Name")
strPass = Request.Form("Pass")

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("databas.mdb")
strSQL = "SELECT * FROM tblUsers WHERE fldUser = '" & strName & "' AND fldPass = '" & strPass & "'"
Set objRS = objConn.Execute(strSQL)

If objRS.BOF = True OR objRS.EOF Then
Response.Write "Du har angivit ett felaktigt användarnamn eller lösenord!"

objRS.Close
objConn.Close
Set objRS = Nothing
Set objConn = Nothing 

Else

	If objRS("fldUser") = strName And objRS("fldPass") = strPass Then
	Session("user") = objRS("fldUser")
	Session("pass") = objRS("fldPass")
	intCount = objRS("fldCount") -- 1
	strSQL = "UPDATE tblUsers SET fldCount = " & intCount & ", WHERE fldUser= '" & strName & "' AND fldPass= '" & strPass & "'"
	Set objRS = objConn.Execute(strSQL)

	objRS.Close
	objConn.Close
	Set objRS = Nothing
	Set objConn = Nothing 

	Response.Redirect "menu.asp"
	End If

End If %>
```

Permalänk: https://www.webforum.nu/p/11065

## #2 — LarsG, 2001-08-09T21:14Z

Det skall inte vara något komma framför where i din update.

```
= " & intCount & " WHERE fldUser
```

Du kan förenkla din kod väldigt mycket

```

<% 
strName = Request.Form("Name")
strPass = Request.Form("Pass")
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("databas.mdb")

sql = "UPDATE tblUsers " & _
" SET fldCount = fldCount + 1 " & _
" WHERE fldUser= '" & strName & "' &_
" AND fldPass= '" & strPass & "'"

objConn.execute sql,rowsAffected,128
if rowsAffected = 0 then
Response.Write "Du har angivit ett felaktigt användarnamn eller lösenord!"
end if
objRS.Close
objConn.Close
Set objRS = Nothing
Set objConn = Nothing 

Response.Redirect "menu.asp"
%>
```

Permalänk: https://www.webforum.nu/p/283412

## #3 — Harback, 2001-08-09T21:34Z

Tack så mycket för det snabba svaret. Det fungerade båda två lösningarna men jag har en fråga angående din lösning. 

Är följande exempel (med sessioner) säkert för senare validering av besökarna på andra sidor?

```
<% 
strName = Request.Form("Name")
strPass = Request.Form("Pass")
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("databas.mdb")

strSQL = "UPDATE tblUsers " & _
" SET fldCount = fldCount + 1 " & _
" WHERE fldUser= '" & strName & "' " & _
" AND fldPass= '" & strPass & "'"

objConn.execute strsql,rowsAffected,128
if rowsAffected = 0 then
Response.Write "Du har angivit ett felaktigt användarnamn eller lösenord!"
else
Session("user") = strName
Session("pass") = strPass
objConn.Close
Set objConn = Nothing 
Response.Redirect "menu.asp"
End If
%>
```

Permalänk: https://www.webforum.nu/p/283413

## #4 — LarsG, 2001-08-09T21:45Z

Jo, det går väl bra att göra således.

Permalänk: https://www.webforum.nu/p/283414

## #5 — Harback, 2001-08-10T23:52Z

Hej igen. 

Går det på något sätt att lägga till i din kod att om man har nummer 1 i fältet fldAdmin så skickas man vidare till en annan sida för administratörer? Då behöver man göra en ytterliggare SQL-sats med Select va? Eller går det att lösa på något bättre sätt?

Permalänk: https://www.webforum.nu/p/283415

## #6 — LarsG, 2001-08-11T11:59Z

Visst, om du vill hämta någon information i samband med så är det väl bäst att utgå från din kod.

```
strName = Request.Form("Name")
strPass = Request.Form("Pass")
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("databas.mdb")
strSQL = "SELECT fldAdmin FROM tblUsers WHERE fldUser = '" & strName & "' AND fldPass = '" & strPass & "'"
Set objRS = objConn.Execute(strSQL)

If objRS.BOF = True OR objRS.EOF Then
Response.Write "Du har angivit ett felaktigt användarnamn eller lösenord!"
login = false
Else
login = true
Session("user") = strName
Session("pass") = strPass
fldAdmin = objRs("fldAdmin")
strSQL = "UPDATE tblUsers SET fldCount = fldCount + 1 WHERE fldUser= '" & strName & "' AND fldPass= '" & strPass & "'"
objConn.Execute strSQL,,128
end if
objRS.Close
objConn.Close
Set objRS = Nothing
Set objConn = Nothing 

if login then
   if cint(fldAdmin) = 1 then
      response.redirect "admin.asp"
   else
      Response.Redirect "menu.asp"
   end if
else
'hantering av felaktig inloggning
end if
```

Permalänk: https://www.webforum.nu/p/283416

## #7 — Harback, 2001-08-11T21:54Z

Tack så mycket LarsG! 

En sak till, vad betyder ,,128 execute-satsen?

```
objConn.Execute strSQL[b],,128[/b]
```

Permalänk: https://www.webforum.nu/p/283417

## #8 — LarsG, 2001-08-11T22:01Z

128 innebär att man inte skapar något recordset överhuvudtaget. Om man inte anger det skapar ado ett tomt och stängt recordset när man gör execute på en fråga som inte returnerar några poster. Det blir en liten prestandafördel på det sättet, vet inte exakt hur mycket det betyder, förmodlugen ganska lite.

Permalänk: https://www.webforum.nu/p/283418

---

Tråden på webben: https://www.webforum.nu/amne/asp/11065-sql-update-syntaxfel
