webForumDet fria alternativet

nya inlägg

ASP

26 svar · 675 visningar · startad av ptr_lks

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

Hej, jag vill på min indexsida skriva ut om nya inlägg har skrivits i gästboken

Set minCon = Server.CreateObject("ADODB.Connection")
set rsGbok = Server.CreateObject("ADODB.Recordset")

minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/guests.mdb")
strSQL =" SELECT * FROM guestbook"
rsGbok.Open strSQL, minCon, 3, 3
srtSQL = "SELECT * FROM Guestbook"
Do While Not rsGbok.EOF
If rsGbok("Datum") < Now () then
Response.Write rsGbok("Namn") & "  skrivit nytt inlägg i gästboken"
rsGbok.MoveNext
  Loop
  rsGbok.Close
  Set rsGbok = Nothing
  minCon.Close
  Set minCon = Nothing

Har kört lokalt på min maskin, för att kolla koden, men inget har skrivits ut (varken felmess eller nya inlägg)
Tacksam om ni kunde hjälpa mig med att hitta felet.
Jag använder mig utav Access 2003

Medlem sedan jan. 2004678 inlägg
#2

Tror inte att det är lösningen på problemet, men varför har du definat srtSQL två ggr?

Medlem sedan juni 20019 519 inlägg
#3

hmm.. ser bara en fråga varför har du två st "srtSQL = "SELECT * FROM Guestbook"" ? Skriver den ut allt utom denna kod rad?

Medlem sedan juni 2005584 inlägg
#4

voigtann1 skrev:

hmm.. ser bara en fråga varför har du två st "srtSQL = "SELECT * FROM Guestbook"" ? Skriver den ut allt utom denna kod rad?

tryckfelssnisse...
Men det skrivs inte ut ngt, tyvärr iaf inte lokalt på min burk

Medlem sedan juni 20019 519 inlägg
#5

Jag har kollat på din kod och jag hittar inget som skall påverka det... har du något i databasen? :e

Medlem sedan dec. 200012 464 inlägg
#6

Hämta bara relevanta kolumner. Ställ villkoren i select-frågan. Hur definerar du att ett inlägg är nytt? E.g.

strSQL =" SELECT distinct namn FROM guestbook where datum > #" & last_date & "#"

Att jämföra med dagens datum verkar konstigt.

Om du vill jämföra i VB så använd funktionen cdate så att databasvärdet får rätt typ.

Medlem sedan juni 200032 967 inlägg
#7

Ett fel folk väldigt ofta gör är att jämföra äpplen med päron. Se alltid till att saker som jämförs är av samma subtyp.

If cdate(rsGbok("Datum")) < Now ()

Visserligen kommer denna if-sats träffa alla poster som finns med tidigare datum.

Det känns dock fel att göra if-satser i asp-koden; ställ villkoret i SQL-frågan istället.

Medlem sedan juni 2005584 inlägg
#8

voigtann1 skrev:

Jag har kollat på din kod och jag hittar inget som skall påverka det... har du något i databasen? :e

japp databasen innehåller 109 poster.. den senaste är från

2005-10-31 08:53:42

Nu ser koden:

Set minCon = Server.CreateObject("ADODB.Connection")
set rsGbok = Server.CreateObject("ADODB.Recordset")

minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/guests.mdb")
strSQL =" SELECT * FROM guestbook"
rsGbok.Open strSQL, minCon, 3, 3
srtSQL = "SELECT * FROM Guestbook"
Do While Not rsGbok.EOF
If rsGbok("Datum") < Now () then
Response.Write rsGbok("Namn") & "  skrivit nytt inlägg i gästboken"
rsGbok.MoveNext
  Loop
  rsGbok.Close
  Set rsGbok = Nothing
  minCon.Close
  Set minCon = Nothing
Medlem sedan juni 2005584 inlägg
#9

Varför

LarsG skrev:

Att jämföra med dagens datum verkar konstigt.

verkar det konstigt?
trodde att det var en bra definition på att inlägget är nyare än senaste besöket

Medlem sedan dec. 200012 464 inlägg
#10

Du försöker jämföra om datumet då inlägget skrevs är mindre än aktuell datum och tid vilket borde innebära att i stort sett alla inlägg uppfyller det villkoret.

Medlem sedan juni 2005584 inlägg
#11

Har kommit på en sak:
eftersom du behöver inte logga in föra tt besöka sidan, kanske är inte detta det smartaste lösningen :q

Kanske bättre att lista de 5 senaste inläggen med datum, och låta besökaren avgöra ifall de har läst inlägget eller inte?

Medlem sedan juni 200032 967 inlägg
#12

Om man inte måste logga in har du ju ingen möjlighet att avgöra vem som läst vad.
Fem senaste inläggen och länk till resten låter som en bra idé.

Medlem sedan feb. 2005216 inlägg
#13

Detta borde lista dina fem senaste inlägg.

<%  Set objConn = Server.CreateObject("ADODB.Connection")
minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/guests.mdb")

Set objrs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT top 5 * FROM Guestbook WHERE datum < Now ORDER BY datum DESC"
objrs.Open strSQL, objConn, 1, 3

Do While Not objrs.EOF

Response.Write objrs("Namn") & "  skrivit nytt inlägg i gästboken<br>"

  objrs.movenext
  Loop
  objrs.Close
  Set objrs = Nothing
objConn.Close
  Set objConn= Nothing%>

Vart det rätt @nders?

//Kockar ska koka soppa inte leka med datorer :)

Medlem sedan juni 2005584 inlägg
#14

@nders skrev:

Om man inte måste logga in har du ju ingen möjlighet att avgöra vem som läst vad.
Fem senaste inläggen och länk till resten låter som en bra idé.

Med nedanstående kod

<%
Set minCon = Server.CreateObject("ADODB.Connection")
set rsGbok = Server.CreateObject("ADODB.Recordset")
minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/guests.mdb")
srtSQL = "SELECT TOP 5 * FROM guestbook ORDER BY DESC"
rsGbok.Open strSQL, minCon, 3, 3
Do While Not rsGbok.EOF
     Response.Write rsGbok("Datum") & "  skrev  " & rsGbok("Namn") & " ett inlägg i Gästboken<BR>"
	 rsGbok.MoveNext
	  Loop
rsGbok.Close
Set rsGbok = Nothing
minCon.Close
Set minCon = Nothing
%>

Får jag felmess:

Error Type:
Kompileringsfel i Microsoft VBScript (0x800A040E)
'loop' utan 'do'
/index.asp, line 50
Loop

Men Jag har ju en do

Do While Not rsGbok.EOF
Medlem sedan feb. 2005216 inlägg
#15

strSQL
srtSQL

Medlem sedan juni 2005584 inlägg
#16

Nova skrev:

strSQL
srtSQL

aha

Medlem sedan juni 200032 967 inlägg
#17

Felmeddelandet behöver inte betyda att du saknar do. Om du indenterar koden ordentligt (har du verkligen med rad 50 i den kod du visar förresten?), så är det lättare att hitta vad du missat.

Medlem sedan juni 2005584 inlägg
#18

@nders skrev:

Felmeddelandet behöver inte betyda att du saknar do. Om du indenterar koden ordentligt (har du verkligen med rad 50 i den kod du visar förresten?), så är det lättare att hitta vad du missat.

Svar Ja..
rad 50

Set rsGbok = Nothing
Medlem sedan juni 200032 967 inlägg
#19

Den kodraden säger ingenting utan sammanhang.
Mer kod behövs, till exempel sådan kod som finns ovanför det kodblocket du visar.

Medlem sedan juni 2005584 inlägg
#20

Nova skrev:

strSQL
srtSQL

när jag nu ändrar, så får jag

A sharing violation occured while accessing

263 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)