Avatar billede arvin Nybegynder
09. december 2003 - 21:03 Der er 20 kommentarer og
1 løsning

Vis sidste nye indlæg først

Hej Eksperter

Jeg har et forum som jeg skal have implementeret på mit website så de sidste nye indlæg kommer med på alle sider.

Umiddelbart er det nemt at lave - Man skal bare hente de nyeste indlæg fra tabellen [tblThread] og så hente overskriften fra [tblTopic]

Problemet er at hvis der er et emne der er meget populært og folk svarer mange gange på det, vil det blive vist mange gange på siden. Det skal være sådan så man kun ser indlæget en gang..

Eks. som det ikke skal være:
--------------------------------
Pamela Anderson for xxxxl bryster
Superman flyver igen
Pamela Anderson for xxxxl bryster
Peter Pan er bøsse
--------------------------------

Eks. som det skal være:
--------------------------------
Pamela Anderson for xxxxl bryster
Superman flyver igen
Peter Pan er bøsse
--------------------------------

Håber I forstår

//Arvin
Avatar billede dna Nybegynder
09. december 2003 - 21:40 #1
sql = "select distinct TopicID top10 from tblThread order by TopicID desc"
set record = conn.execute(sql)

if not record.eof then
  do
      sql2 = "select overskrift from tblTopic where id = " & record("TopicID")
      set record2 = conn.execute(sql)
      Response.write record2("overskrift")
  record.movenext
  loop until record.eof
end if

Jeg går så ud fra at der på TblThread er en TopicID der peger på det emne som kommentaren hører til....

dna
Avatar billede guro.not Nybegynder
09. december 2003 - 21:40 #2
select destinct
Avatar billede dna Nybegynder
09. december 2003 - 21:41 #3
I den første sql-sætning skal order by jo så være dens tabel ID .. og ikke dens reference til tblTopic som jeg har skrevet.

dna
Avatar billede arvin Nybegynder
09. december 2003 - 21:47 #4
Men det er Select destinct jeg skal bruge... Resten er ik nødvendigt? Så kan jeg nemlig lave det som jeg selv plejer ;o)
Avatar billede arvin Nybegynder
09. december 2003 - 21:52 #5
<%
Set rs_forum = Server.CreateObject("ADODB.RecordSet")
rs_forum.open "Select destinct * From [tblThread] order by Thread_ID" , Conn_forum, 1, 3
%>
Avatar billede arvin Nybegynder
09. december 2003 - 21:57 #6
<%
Set rs_forum = Server.CreateObject("ADODB.RecordSet")
rs_forum.open "Select destinct * From [tblThread] order by Thread_ID" , Conn_forum, 1, 3

f = 1
%>
<%
do while not f = 15 and not rs_forum.eof

Set rs_topic = Server.CreateObject("ADODB.RecordSet")
rs_topic.open "Select * From [tblTopic] WHERE Topic_ID = " & rs_forum("Topic_ID") & "" , Conn_forum, 1, 3
%>
<%=rs_topic("subject")%>
<%
f = f + 1
rs_forum.movenext
loop
%>
Avatar billede arvin Nybegynder
09. december 2003 - 21:59 #7
Microsoft OLE DB Provider for ODBC Drivers error '80040e57'

[Microsoft][ODBC Microsoft Access Driver] The field is too small to accept the amount of data you attempted to add. Try inserting or pasting less data.

Default.asp, line 43
Avatar billede arvin Nybegynder
09. december 2003 - 22:04 #8
Skriver nu:
<%
Set rs_forum = Server.CreateObject("ADODB.RecordSet")
rs_forum.open "Select distinct TopicID top10 From [tblThread] order by Thread_ID" , Conn_forum, 1, 3
%> 

Får denne fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'TopicID top10'.

Default.asp, line 43
------------------------------
LINE 43: rs_forum.open "Select distinct TopicID top10 From [tblThread] order by Thread_ID" , Conn_forum, 1, 3
------------------------------
Avatar billede guro.not Nybegynder
09. december 2003 - 22:07 #9
<%
Set rs_forum = Server.CreateObject("ADODB.RecordSet")
rs_forum.open "Select destinct * From [tblThread] order by Thread_ID" , Conn_forum, 1, 3
f = 1
Set rs_topic = Server.CreateObject("ADODB.RecordSet")
do while not f = 15 and not rs_forum.eof
    Set rs_topic = Conn_forum.Execute("Select * From [tblTopic] WHERE Topic_ID = " & rs_forum("Topic_ID") & ";")
    If Not rs_topic.EOF Then
        rs_topic.MoveFirst
        Response.Write rs_topic("subject")
        f = f + 1
        rs_forum.movenext
    End If
loop
%>
Avatar billede guro.not Nybegynder
09. december 2003 - 22:11 #10
prøv denne

<%
Set rs_forum = Server.CreateObject("ADODB.RecordSet")
rs_forum.open "Select destinct TOP 10 TopicID From [tblThread] order by Thread_ID DESC" , Conn_forum, 1, 3
f = 1
Set rs_topic = Server.CreateObject("ADODB.RecordSet")
do while not f = 15 and not rs_forum.eof
    Set rs_topic = Conn_forum.Execute("Select * From [tblTopic] WHERE Topic_ID = " & rs_forum("Topic_ID") & ";")
    If Not rs_topic.EOF Then
        rs_topic.MoveFirst
        Response.Write rs_topic("subject")
        f = f + 1
        rs_forum.movenext
    End If
loop
%>
Avatar billede arvin Nybegynder
09. december 2003 - 22:11 #11
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'destinct *'.

Default.asp, line 43
Avatar billede arvin Nybegynder
09. december 2003 - 22:13 #12
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'destinct TOP 10 TopicID'.

Default.asp, line 52
Avatar billede guro.not Nybegynder
09. december 2003 - 22:14 #13
eller med kun et kald.

Select * From tblTopic Where Topic_ID IN (Select destinct TOP 10 TopicID From tblThread order by Thread_ID DESC);

kan den bruges..
Avatar billede arvin Nybegynder
09. december 2003 - 22:17 #14
Hvorfor får jeg den der fejl??
Avatar billede guro.not Nybegynder
09. december 2003 - 22:29 #15
fejlen ved jeg ikke helt hvorfor du får.. men jeg tror ikke at man kan bruge destinct sammen med top....prøv lige den her..

<%
SqlStr = "Select * From tblTopic Where Topic_ID IN (Select TOP 10 TopicID From tblThread order by Thread_ID DESC);"
Set rs = Conn_forum.Execute(SqlStr)

If Not rs_topic.EOF Then
    rs.MoveFirst
    do while not rs.eof
    Response.Write rs_topic("subject")
    rs.movenext
  End If
loop
%>
Avatar billede arvin Nybegynder
09. december 2003 - 22:35 #16
Microsoft VBScript runtime error '800a01a8'

Object required: 'DRIVER={Microsoft Ac'

Default.asp, line 52
Avatar billede arvin Nybegynder
09. december 2003 - 22:36 #17
Conn_forum = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("forum.mdb") & ";UID=;PWD=;"
Avatar billede guro.not Nybegynder
09. december 2003 - 22:38 #18
Set Conn = Server.CreateObject("ADODB.Connection")
    Provider = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("../database/DinDB.mdb")
    Conn.Open Provider
<%
SqlStr = "Select * From tblTopic Where Topic_ID IN (Select TOP 10 TopicID From tblThread order by Thread_ID DESC);"
Set rs = Conn.Execute(SqlStr)

If Not rs_topic.EOF Then
    rs.MoveFirst
    do while not rs.eof
    Response.Write rs_topic("subject")
    rs.movenext
  End If
loop
%>

stadig fejl?
Avatar billede guro.not Nybegynder
09. december 2003 - 22:40 #19
UPS
<%
Set Conn = Server.CreateObject("ADODB.Connection")
    Provider = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("../database/DinDB.mdb")
    Conn.Open Provider

SqlStr = "Select * From tblTopic Where Topic_ID IN (Select TOP 10 TopicID From tblThread order by Thread_ID DESC);"
Set rs = Conn.Execute(SqlStr)

If Not rs_topic.EOF Then
    rs.MoveFirst
    do while not rs.eof
    Response.Write rs_topic("subject")
    rs.movenext
  End If
loop
%>
Avatar billede arvin Nybegynder
09. december 2003 - 22:45 #20
He he - Nu tror jeg det virker :o)
Avatar billede guro.not Nybegynder
09. december 2003 - 22:48 #21
det må vi da håbe...eller så prøver vi noget andet ;-)

mhv Guro.Not
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester