webForumDet fria alternativet

Lite frågor om Sql

8 svar · 382 visningar · startad av Boorg

BoorgMedlem sedan okt. 2004409 inlägg
#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
tydalMedlem sedan juni 20034 013 inlägg
#2

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

PoffeMedlem 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.

ObbelixMedlem 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
@ndersMedlem sedan juni 200032 969 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.

Engine^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
BoorgMedlem 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

@ndersMedlem sedan juni 200032 969 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.

BoorgMedlem 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

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