Lite psuevdo-kod eftersom jag inte vet hur tabellen ser ut:
select top 5 * from tabellen order by id desc
select top 5 * from tabellen order by numberOfVisits desc
29 svar · 707 visningar · startad av jimbo
Hej på er igen!
Skrev i en tråd innan om https://www.gruvsjo.com länkarkiv, jag använder det, men lite förändringar skadar ju inte.
Har försökt botanisera lite i sökningen efter svar på dessa frågor men som den rookie man e så ....
Jag tänkte att jag skulle vilja visa de 5 senaste inlagda länkarna och de 5 mest besökta länkarna som finns i arkivet.
Att det handlar om databas hämtning så långt är jag med, ska man hämta antal länkar kör man ju detta:
<%
strSQL = "SELECT COUNT(*) FROM url"
Set objRS = Conn.Execute (strSQL)
Response.write "Just nu " & objRS(0) & " länkar i databasen."
objRs.Close
set objRS = nothing
set objConn = nothing
%>
antar att det är något liknande med frågorna ovan?
Tack på förhand Mvh JImmy
Lite psuevdo-kod eftersom jag inte vet hur tabellen ser ut:
select top 5 * from tabellen order by id desc
select top 5 * from tabellen order by numberOfVisits desc
jimbo skrev:
Tack de gick snnnnaabbbt =)
Antar att * är ett tabellnamn/kolumn?
* står för alla kolumner i tabellen. Det bör bytas ut mot en kommaseparerad lista över de kolumner du vill ha med. Ex:
id, name, url, numberOfVisits
Då skulle det kunna bli:
select top 5 id, name, url, numberOfVisits from tabellen order by id desc
'Case' förväntas.
/db/lankarkiv/index.asp, line 70
line 70
<td width="348" align="right" valign="top"><%select top 5 id, namn numberOfVisits from tabellen order by id desc%>
Om det inte är en kommaseparerad lista ska då inte tabellnamnet vara inom "namn" eller ?
1. Koden förutsätter Access, är det den databashanteraren du använder?
2. Sedan får du sätta sql-frågan i ett sammanhang. Min kod ovan var bara visnings-exempel. För att kunna hjälpa dig med den koden måste jag veta dels vad tabellen heter, samt vad dina kolumner i tabellen heter.
datbasnamn: archive.mdb
I den två tabeller som heter kat och url
url är väl den aktuella, i den ligger det 6 kolumner:
id, namn, url, info, kat, click
Blir detta bra så?
Glömde säga det är access databas ju.
Mvh JImmy
Har du gjort kopplingen till databasen?
hmm nej kan ni hjälpa mig ?
Något sådant här som exempel. Connectionsträngen får du justera efter dina önskemål. ;)
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & db
sql = "select top 5 id, namn, url, info, kat, click from url order by id desc"
set rs = conn.execute(sql)
if not rs.eof then
while not rs.eof
response.write namn & "<br />"
rs.movenext
wend
end if
rs.close()
set rs = nothing
RED: Usch, stavfel.
Tackar!
Databasen tryckte jag in vid * i koden.
Men det felar något med den?
Microsoft OLE DB Provider for ODBC Drivers fel '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
Databassökvägen är ju rätt den ligger i db. Hänger inte med?
<%Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (db/archive.mdb)}; DBQ=" & db
sql = "select top 5 id, namn, url, info, kat, click from url order by id desc"
set rs = conn.execute(sql)
if not rs.eof then
while not rs.eof
response.write namn & "<br />"
rs.movenext
wend
end if
rs.close()
set rs = nothing%>
Mvh JImmy
Databasens sökväg ska anges vid DBQ, där variabeln db nu är angiven. Du kan alltså göra följande:
db="db/archive.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & db
Alternativt att helt enkelt ange sökvägen till databasen direkt där du anger drivrutin:
db="db/archive.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=db/archive.mdb"
Jag skulle ta det senare alternativet eftersom det då inte behövs någon variabel, som kan kännas onödigt.
Hmm e de jag som bara är dum lr?
GJorde så här:
[kod]
<%Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=db/archive.mdb"
sql = "select top 5 id, namn, url, info, kat, click from url order by id desc"
set rs = conn.execute(sql)
if not rs.eof then
while not rs.eof
response.write namn & "\<br /\>"
rs.movenext
wend
end if
rs.close()
set rs = nothing
%>[kod]
Men de resulterade i det här:
Microsoft OLE DB Provider for ODBC Drivers fel '80004005'
[Microsoft][Drivrutin för ODBC Microsoft Access]Allmänt fel Det går inte att öppna registernyckeln 'Temporary (volatile) Jet DSN for process 0x87c Thread 0x360 DBC 0xa11c024 Jet'
Varför kan den inte öppna databasen?
Mvh Jimmy
Varför kan den inte öppna databasen?
För att du angett fel sökväg till databasen. Du måste ange komplett fysisk sökväg, exempelvis mha Server.Mappath():
conn.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath("db/archive.mdb")
Jag tycker att det redan borde finnas en connectionsträng i någon fil att inkludera iom att du bygger ut ett färdigt skript. Finns inte det har Gruvsjö missat något väsentligt i sin kodning. :)
Ok börjar bli smått förvirrade nu =)
Jo connectionsträngen finns ju i en include fil som är inkluderad i index.asp så egentligen borde man väl inte då behöva ha ett databassträng i detta igen?
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/archive.mdb")
Om man nu ska det då borde det ju bli så här med hela scriptet:
<%Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/archive.mdb")
sql = "select top 5 id, namn, url, info, kat, click from url order by id desc"
set rs = conn.execute(sql)
if not rs.eof then
while not rs.eof
response.write namn & "<br />"
rs.movenext
wend
end if
rs.close()
set rs = nothing
%>
Men då blir det ett error som säger att det angavs för få parametrar en förväntades.
Mvh JImmy
Utan bara att köra
Någon med någon bra ide' ?
Felmeddelandet brukar betyda att du stavat fel på ett tabell- eller fältnamn i SQL-frågan.
Jo det var så click med k skulle de va, men den skriver inte ut något? kolla själv:
http://www.fiskeportalen.com/db/lankarkiv/index.asp
Du får nog berätta var man ska titta någonstans, och hur utskriften borde se ut och visa exakt den kod du använder nu.