Avatar billede webbygger Nybegynder
07. januar 2006 - 19:34 Der er 12 kommentarer og
1 løsning

SQL sætning!

Jeg laver et udtræk fra min database som naturligvis indeholde nogle værdier! Men jeg har problemer med en værdi (PORTAL_TOPICS.T_LAST_POST_AUTHOR) som er et ID nummer på et givende medlem. Kan desværre ikke få omsat ID nummer til et navn uanset hvad jeg hitte på, der er ingen tvivl det er mig der fumler i det, så hjælp søges......

PORTAL_TOPICS.T_LAST_POST_AUTHOR = PORTAL_MEMBERS.MEMBER_ID
PORTAL_MEMBERS.MEMBER_ID = PORTAL_TOPICS.M_NAME

  <%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("/db.mdb")

%>
                  </p>
                  <p><font size="-7" face="Verdana, Arial, Helvetica, sans-serif">
                    <%
    sql = "SELECT TOP 5 PORTAL_TOPICS.*, PORTAL_MEMBERS.* FROM PORTAL_TOPICS INNER JOIN PORTAL_MEMBERS ON PORTAL_TOPICS.T_AUTHOR = PORTAL_MEMBERS.MEMBER_ID  ORDER BY T_LAST_POST DESC "
   
   
   
Set rs = Conn.Execute (sql)
               
if rs.EOF then

else

Do Until rs.EOF

%>
                    <strong>
                    <% = rs("T_SUBJECT") %>
                    </strong> <br>
                   
                    Indsendt af <% = rs("M_NAME") %><br>
                    <%
                    strReplies = rs("T_REPLIES")
                    strMembers = rs("MEMBER_ID")
                      strNavn = rs("M_NAME")
                      strSidst = rs("T_LAST_POST_AUTHOR")
                      if strSidst <> then strNavn
                     
                                           
if strReplies <> 0 then%>Sidste svar af <b><%response.write strSidst %></b><%end if%><%if strReplies <> 0 then%>                       
                       
                    <br>                   
                    <%  dato = rs("T_LAST_POST")
                 
if len(dato) < 14 then
dato = "00000000000000"
end if
aar = Left(dato,4)
md = MonthName(mid(dato,5,2))

dag = mid(dato,7,2)
tim = mid(dato,9,2)
minuter = mid(dato,11,2)
sec = mid(dato,13,2)


Response.Write  "&nbsp;" & dag & "&nbsp;" & md & "&nbsp;" & aar & "&nbsp;kl.&nbsp;" & tim & "." & minuter & "." & sec
%><%end if%>
                    <br>
                   
                   
                    <a href="/forum/link.asp?TOPIC_ID=<%= rs("TOPIC_ID") %>">>>&nbsp;Læs
                    mere</a>
                    <%if not rs("T_REPLIES") = 0 then%>
                    &nbsp;&nbsp;&nbsp;<a href="/forum/link.asp?TOPIC_ID=<%= rs("TOPIC_ID") %>&amp;vis=lasttopic">&nbsp;Sidste
                    svar (<%= rs("T_REPLIES") %>)</a>
                    <%end if%>
                    <br>
                    <br>
                    <br>
                    <%
rs.MoveNext
Loop
%>
Avatar billede webbygger Nybegynder
07. januar 2006 - 19:35 #1
Overstående script virker, men det viser "kun" ID nummet på medlemmet og ikke navnet
Avatar billede Slettet bruger
08. januar 2006 - 07:57 #2
Du får aldrig udskrevet strNavn nogen steder

og det her

if strSidst <> then strNavn

gør heller ikke noget ??
Avatar billede webbygger Nybegynder
08. januar 2006 - 10:54 #3
kryptos - jeg ser først nu, at jeg havde glemt at fjerne

strMembers = rs("MEMBER_ID")
                      strNavn = rs("M_NAME")
                      strSidst = rs("T_LAST_POST_AUTHOR")
                      if strSidst <> then strNavn
fra script!!!!

Jeg skal ha script til at omskrive rs("T_LAST_POST_AUTHOR") til rs("M_NAME"), forstået på måde, at når den hentet rs("T_LAST_POST_AUTHOR") skriver den endeligt rs("M_NAME") ......det lyder indviklet, men hvis I ikke forstår det må jeg prøve, at angribe spørgsmålet fra en anden vinkel!



<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("/db.mdb")

%>
                    </p>
                    <p>&nbsp; </p>
                  <p><font size="-7" face="Verdana, Arial, Helvetica, sans-serif">
                    <%
    sql = "SELECT TOP 5 PORTAL_TOPICS.*, PORTAL_MEMBERS.* FROM PORTAL_TOPICS INNER JOIN PORTAL_MEMBERS ON PORTAL_TOPICS.T_AUTHOR = PORTAL_MEMBERS.MEMBER_ID  ORDER BY T_LAST_POST DESC "
   
   
   
Set rs = Conn.Execute (sql)
               
if rs.EOF then

else

Do Until rs.EOF

%>
                    <strong>
                    <a href="/forum/link.asp?TOPIC_ID=<%= rs("TOPIC_ID") %> "><% = rs("T_SUBJECT") %></a>
                    </strong> <br>
                   
                    Indsendt af <% = rs("M_NAME") %><br>
                    <%dato = rs("T_LAST_POST")
                 
if len(dato) < 14 then
dato = "00000000000000"
end if
aar = Left(dato,4)
md = MonthName(mid(dato,5,2))

dag = mid(dato,7,2)
tim = mid(dato,9,2)
minuter = mid(dato,11,2)
sec = mid(dato,13,2)
strReplies = rs("T_REPLIES")
                                   
if strReplies = 0 then
Response.Write    dag & "&nbsp;" & md & "&nbsp;" & aar & "&nbsp;kl.&nbsp;" & tim & "." & minuter & "." & sec

                    end if
                       
                           
                   
if strReplies <> 0 then%>Sidst svaret af <b><%=rs("T_LAST_POST_AUTHOR")%></b><%end if%><%if strReplies <> 0 then%>                       
                       
                       
                    <br>                   
                    <% 


Response.Write    dag & "&nbsp;" & md & "&nbsp;" & aar & "&nbsp;kl.&nbsp;" & tim & "." & minuter & "." & sec
%><%end if%>
                    <br>
                   
                   
                   
                    <%if not rs("T_REPLIES") = 0 then%>
                   
                    <a href="/forum/link.asp?TOPIC_ID=<%= rs("TOPIC_ID") %>&amp;vis=lasttopic">Sidste
                    svar (<%= rs("T_REPLIES") %>)</a>
                    <%end if%>
                    <br>
                    <br>
                    <br>
                    <%
rs.MoveNext
Loop
%>
                    </font></p>
                  <p> <font size="-7" face="Verdana, Arial, Helvetica, sans-serif">
                    <% end if
       
          rs.Close
  Conn.Close
  Set rs = Nothing
  Set Conn = Nothing
  %>
Avatar billede Slettet bruger
08. januar 2006 - 11:00 #4
Forstår ikke hvad du vil ???
Avatar billede webbygger Nybegynder
08. januar 2006 - 11:17 #5
når script kører denne linie:
if strReplies <> 0 then%>Sidst svaret af <b><%=rs("T_LAST_POST_AUTHOR")%></b><%end if%><%if strReplies <> 0 then%>
er rs("T_LAST_POST_AUTHOR") et ID nummer på medlemmet, dette ID nummer vil jeg ha vist som et navn i stedet for!

Var det bedre forklaret???
Avatar billede eagleeye Praktikant
08. januar 2006 - 11:43 #6
Så skal du vel rette det til at den udskriver fra kolonnen som indeholder navnet og det er nok M_NAME så vidt jeg kan se i koden. Din SQL sætning skulle gerne hente nanvet ud:

eks sådan her:

if strReplies <> 0 then%>Sidst svaret af <b><%=rs("M_NAME")%></b><%end if%><%if strReplies <> 0 then%>
Avatar billede webbygger Nybegynder
08. januar 2006 - 11:48 #7
eagleeye bare det var såvel, men så udskriver den hvem der har oprettet spørgsmålet og ikke hvem der har svaret sidst!
Avatar billede eagleeye Praktikant
08. januar 2006 - 11:54 #8
Arh det er måske SQL sætningnen som faktisk henter T_AUTHOR og ikke T_LAST_POST_AUTHOR:

sql = "SELECT TOP 5 PORTAL_TOPICS.*, PORTAL_MEMBERS.* FROM PORTAL_TOPICS INNER JOIN PORTAL_MEMBERS ON PORTAL_TOPICS.T_AUTHOR = PORTAL_MEMBERS.MEMBER_ID  ORDER BY T_LAST_POST DESC "


Så prøv at rette SQL sætningnen til:

sql = "SELECT TOP 5 PORTAL_TOPICS.*, PORTAL_MEMBERS.* FROM PORTAL_TOPICS INNER JOIN PORTAL_MEMBERS ON PORTAL_TOPICS.T_LAST_POST_AUTHOR = PORTAL_MEMBERS.MEMBER_ID  ORDER BY T_LAST_POST DESC "



Skal siden kun vise top 5 T_LAST_POST_AUTHOR og ikke T_AUTHOR?
Avatar billede eagleeye Praktikant
08. januar 2006 - 11:55 #9
måske jeg skal spørge sådan her:  Skal siden kun vise de sidste som har svaret eller skal den også vise navnet på den som har oprette spørgsmålet?
Avatar billede webbygger Nybegynder
08. januar 2006 - 12:05 #10
Begge dele eagleeye, du kan siden her http://www.lystfiskerens.net/for.asp og kik under forum
Avatar billede eagleeye Praktikant
08. januar 2006 - 12:14 #11
Ok så skal SQL sætning ikke rette som jeg har vist så skal den være som du har vist i første omgang:

sql = "SELECT TOP 5 PORTAL_TOPICS.*, PORTAL_MEMBERS.* FROM PORTAL_TOPICS INNER JOIN PORTAL_MEMBERS ON PORTAL_TOPICS.T_AUTHOR = PORTAL_MEMBERS.MEMBER_ID  ORDER BY T_LAST_POST DESC "



Det du så kan gøre et at lave en seperat SQL sætning som henter members.M_NAME ud fra rs("T_LAST_POST_AUTHOR").
Eller udvide din SQL sætningen så henter nanvet på T_LAST_POST_AUTHOR i en SQL sætning sådan her:

sql = "SELECT TOP 5 PORTAL_TOPICS.*, PORTAL_MEMBERS.*, tblPM.M_NAME as lastAuthorName FROM (PORTAL_TOPICS INNER JOIN PORTAL_MEMBERS ON PORTAL_TOPICS.T_AUTHOR = PORTAL_MEMBERS.MEMBER_ID) INNER JOIN PORTAL_MEMBERS as tblPM ON PORTAL_TOPICS.T_LAST_POST_AUTHOR = tblPM.MEMBER_ID  ORDER BY T_LAST_POST DESC "



og rette kodne som udskriver til dette:

if strReplies <> 0 then%>Sidst svaret af <b><%=rs("lastAuthorName")%></b><%end if%><%if strReplies <> 0 then%>
Avatar billede webbygger Nybegynder
08. januar 2006 - 12:21 #12
SÅDAN... rigtig som altid ;o)
Jeg sad og rodet med det HELE dagen igår og du bruger sådan ca. 10 minutter!!!

Tusind tak for hjælpen eagleeye - smider du et svar
Avatar billede eagleeye Praktikant
08. januar 2006 - 12:23 #13
Ja her er et svar :-)
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