webForumDet fria alternativet

Lite frågor om Sql

ASP

8 svar · 384 visningar · startad av Boorg

Medlem sedan okt. 2004409 inlägg
Frågan#1
		Sql = "UPDATE t_novell SET Read = Read + 1 WHERE ID =" & Ident & " " 
			set re = Connect.Execute(Sql)
			Set re = Nothing
		Connect.Close

okej har lite frågor om sql.

1. Behöver man sätta re = Nothing när man har gjort klart kopplingen? går det snabbare eller något. behöver man ens ha det om man ska ha en nya sql fråga efteråt? men Gör juh ändå en ny set.

2. Samma med denna behöver man stänga Connect. eller rättare sagt. hjälper det något om man stänger eller är det bara mer riktig kod?

3. Ser någon något fel i den koden över? för den funkar nämligen inte. själv sql raden.

Feltyp:
Microsoft JET Database Engine (0x80040E14)
Syntaxfel i UPDATE-uttryck
Medlem sedan juni 20034 013 inlägg
#2

Vad har Ident för värde?
Hur ser variabeln Sql ut?

Medlem sedan apr. 20022 743 inlägg
#3

Som gennerellt svar på fråga 1 och 2 kan man väll säga att man alltid ska stänga objekt man öppnar när man är klar med dom. Annars kommer det ju ligga kvar på servern helt i onödan och ta onödig kraft tills de stängs av sig själva p.g.a inaktivitet.

Varför skulle du inte stänga objekten? Om du tänker så och lite logiskt tänkande så förstår man att om man har flera objekt öppna tar det mer krafta av servern. Om dessa sen är öppna helt i onödan för att de inet används så är det alltså onödig kraft från servern som kunde annvändas till bättre saker.

Medlem sedan okt. 2002257 inlägg
#4

Du behöver aldig sätta (re=....) när du kör en update. Kör enligt nedan så länge du inte vill ha något returnerat.
Hur det är exakt med "Connect.close" vet jag ej men borde inte skada att stänga det efter sig.

Ang. felmeddelandet: innehåller verkligen "Ident" ett numeriskt värde? Eller kan det vara så att "Read" är ett reserverat ord i SQL?

Sql = "UPDATE t_novell SET Read = Read + 1 WHERE ID =" & Ident
Connect.Execute sql,,128
Connect.Close
Medlem sedan juni 200032 967 inlägg
#5

Eller kan det vara så att "Read" är ett reserverat ord i SQL?

Det är det som är felet, skulle jag vilja påstå. Byt namn på fältet.

Medlem sedan dec. 20003 887 inlägg
#6

Sätt även Connect till Nothing för att frigöra den minnesplats objektet tog upp.

Sql = "UPDATE t_novell SET [Read] = [Read] + 1 WHERE ID = " & Ident
Connect.Execute Sql, , 128
Connect.Close

Set Connect = Nothing
Medlem sedan okt. 2004409 inlägg
#7

Nu andvänder jag denna

			Sql = "UPDATE t_novell SET Co = Co + 1 WHERE ID = " & Ident
			Connect.Execute Sql,,128

			Connect.Close
			Set Connect = Nothing
Fel: Microsoft JET Database Engine (0x80004005)
Operationen måste använda en fråga som kan uppdateras.

Den funkar inte heller... måste jag inte Göra en set före connect ? och vad betyder 128?

Mvh Jesper

Medlem sedan juni 200032 967 inlägg
#8

Den funkar inte heller...

Kör du lokalt? Kolla då upp rättighetsinställningarna på databasmappen.

måste jag inte Göra en set före connect ?

Nej, du ska inte skapa något recordset när du kör UPDATE. och vad betyder 128?adExecuteNoRecords, dvs du talar om att du inte vill att något recordset ska skapas överhuvudtaget.

Medlem sedan okt. 2004409 inlägg
#9

Men lär sig något nytt varje dag ;)
Det var att jag inte hade skrivrättigheter i mappen...

Tackar

255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)