webForumDet fria alternativet

Undantagsfel ?

ASPur ASP

9 svar · 243 visningar · startad av nill

Medlem sedan okt. 2001387 inlägg
Frågan#1

När försöker köra den här koden:

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (\*.mdb)};dbq=" & Server.MapPath("\\klass\\db\\online.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")

Online = "SELECT \* FROM online "
RecSet.Open Online, Connect, adOpenStatic, adLockOptimistic

Do Until RecSet.EOF

	If (RecSet("datum") \<\> Date) Then
		RecSet.Delete
	End If
	
	Diff = datediff("n", RecSet("tid"), Time)

	If (Diff \> 4 ) Then
		RecSet.Delete
	End If

	RecSet.MoveNext
Loop

RecSet.Close

Blir felmeddelandet ibland såhär:

Feltyp:
(0x80020009)
Undantag inträffade.
/klass/online2.mupp, line 17

Men om man uppdaterar sidan igen brukar det däremot fungera = skumt fel

hjälp ? :)

Medlem sedan dec. 200012 464 inlägg
#2

Jag vet inte varför det blir fel, men din kod gör onödigt mycket. Det går att skriva med mindre kod som dessutom är mer effektiv.

Du borde kunna skriva om det så här

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("\klass\db\online.mdb")

Online = "delete FROM online where datum <> #" date & "# or datediff('n',tid,#" & time & "#) > 4"
connect.execute online,,128

(Otestat)

Varför har du två fält för datum och tid? Så vitt jag har förstått så lagrar Access alltid datum och tid om du använder någon date/time datatyp.

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

Medlem sedan juni 20003 169 inlägg
#3

Du kan ju också passa på att byta DB-koppling till en inte lika uråldrig variant... ;)

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\klass\db\online.mdb")

------------------
Mvh. Wiberg

Medlem sedan okt. 2001387 inlägg
#4

ska prova detta:
jag vill ju inte ha min sida uråldrig..

Hur använder jag lösenord med den moderna Kopplingskoden ?

Medlem sedan okt. 2001387 inlägg
#5

Är denna variant verkligen bättre och hur gör jag om min databas är lösenordsskyddad (inget användarnamn, bara lösenord (i access då)) ?

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\klass\db\online.mdb")

Medlem sedan mars 20002 836 inlägg
#6

Den är mycket bättre!

Med lösenord på databasen:

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\klass\db\online.mdb") & ";Jet OLEDB:Database Password=mittlosen;"

cya,
PatrikB

------------------
'## -- second place is the first looser -- ##'

Medlem sedan okt. 2001387 inlägg
#7

just med denna kod blir det fel med den nya databaskopplingen. Annnars fungerar det bra, tack :)

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\\klass\\db\\counter.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")

Count = "SELECT \* FROM counter"
RecSet.Open Count, Connect, adOpenStatic, adLockOptimistic

Count = RecSet("counter")
Count = Count + 1

RecSet("counter") = Count
RecSet.Update

RecSet.Close
Connect.Close 	

Borde inte det fungera ??? (obs, jag vet att koden inte är snygg men den BRUKAR fungera)

Medlem sedan okt. 2001387 inlägg
#8

Står såhär:

Feltyp:
Microsoft JET Database Engine (0x80040E14)
Syntaxfel i FROM-instruktion.
/klass/default.asp, line 16

Medlem sedan dec. 200012 464 inlägg
#9

Counter är ett reserverat ord i Access/Jet. Antingen kn du byta namn eller så får du skriva

select * from [COUNTER]

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

Medlem sedan okt. 2001387 inlägg
#10

tackar, det hjälpte :)

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