webForumDet fria alternativet

SQL-sats som genererar fel i andra mappar!?

ASP

7 svar · 172 visningar · startad av Harback

Medlem sedan juni 2001206 inlägg
Frågan#1

Jag har fixat ihop ett inloggningssystem som fungerar bra. Eftersom jag ska använda detta system på en sida så överförde jag koden till denna sidan (i en annan mapp). Det fungerade inte riktigt som det skulle (blir felmeddelandet under). Okej tänkte jag, efter ett tags pillande med samma felmeddelande gjorde jag en helt ny mapp och drog över alla filerna från den fungerande mappen. Men det blir detta felmeddelande hela tiden, snälla hjälp! Varför?

Feltyp:
Microsoft JET Database Engine (0x80004005)
Operationen måste använda en fråga som kan uppdateras.
/asp/testing/checklogin.asp, line 25

Syftar på denna sql-sats:

strSQL = "UPDATE tblUsers SET fldCount = fldCount -- 1, fldLastVisit = Now WHERE fldUser= '" & strName & "' AND fldPass= '" & strPass & "'"
objConn.Execute strSQL,,128

------------------
MVH
Harback

Medlem sedan juni 2001206 inlägg
#2

Sök-funktionen, just det. Kollade där och hittade lite om rättighetsfel på databasen. Man ska alltså ändra rättigheter på databasen genom att högerklicka och välja alla rättigheter va? Konstigt är det iallafall eftersom jag inte har gjort det någon gång innan på databasen. Jaja, ska testa det.

------------------
MVH
Harback

[Redigerat av Harback den 19 aug 2001]

Medlem sedan feb. 20012 412 inlägg
#3

Hej!

Den ser rätt ut, så du får nog bifoga mer kod.

varför skriver du -- istället för + :q

objConn.Execute(strSQL)

Vet att man kan använda ,,128 till SELECT men är osäker på UPDATE. Men LarsG vet säkert :e

mvh Jörgen

------------------
*** Var går gränsen mellan långa kortbyxor och korta långbyxor? ***

Medlem sedan dec. 200012 464 inlägg
#4

Att skriva -- i en sql-sats är inte att rekommendera, för det betyder kommentar i en del DBMS (och enligt SQL-standard.)

Att en del använder -- i VB-script beror på att + tolkas som strängkonkatenering om inte addenderna är typade.

Att använda ,,128 i en select är inte så bra. Det betyder att man inte skapar något recordset. Det är alltså för allt annat än select och anrop till en stored procedure som man skall använda det.

red: stavfel
------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 19 aug 2001]

Medlem sedan feb. 20012 412 inlägg
#5

Aha, det var allt utom SELECT man kunde använda ,,128, visste väl att det fanns ett undantag :OO

Vad vinner man på att skriva

objConn.Execute strSQL,,128

istället för

objConn.Execute(strSQL)

skapas det inget recset "i bakgrunden" heller när man skriver ,,128 ?

Om jag hade 1/10-del av dina SQL kunskaper LarsG, då skulle jag le så här :e brett.

mvh Jörgen

------------------
*** Var går gränsen mellan långa kortbyxor och korta långbyxor? ***

[Redigerat av jorgen den 19 aug 2001]

Medlem sedan dec. 200012 464 inlägg
#6

skapas det inget recset "i bakgrunden" heller när man skriver ,,128 ?

Ja precis.

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 2001206 inlägg
#7

Fick det att fungera nu efter att jag satt att alla hade alla rättigheter till mappen.

En fråga till, vad menar du med:

...om inte addenderna är typade.

Vad är en addend och är dom typade som standard eller? Är det helt smärtfritt att använda + i alla sammanhang?

------------------
MVH
Harback

Medlem sedan dec. 200012 464 inlägg
#8

Ja, vad menar jag?

I uttrycket a + b så är a och b addender.

Egentligen så finns det bara en typ i VB-script som heter variant. En variabel kan dock ha en subtyp t.ex. string eller int. Ett sätt att sätta en subtyp för ett uttryck är att använda någon av de konverteringsrutiner som finns, cstr, clng, cdate mfl. T.ex. så är allt data i ett recordset av subtypen string (tror jag). Man kan ta reda på subtypen för ett uttryck med hjälp av funktionen typename.

Operatorn + kan tolkas olika beroende på vilka subtyper som addenderna har. Om minst en är numerisk så blir det addition annars blir det strängkonkatenering.

Det är därför bättre att använda & för strängkonkatenering då man slipper dessa tvetydigheter.

------------------
essentitia preter non sans multiplicandum

253 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)