Avatar billede brian123 Nybegynder
13. december 2001 - 19:38 Der er 6 kommentarer og
1 løsning

Hvad gør jeg forkert

Er der nogen der kan se hvorfor det her script stadig tager blanke felter med fra databasen, jeg kan simpelthen ikke finde udaf hvorfor.
-----------------------------------------------------
<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DBPath = \"DBQ=\" & server.mappath(\"counter/mdkcounter.mdb\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; \" & DBPath

Sql = \"Select Top 10 Referent, Count (*) AS Total FROM Count Where Referent is not null GROUP BY Referent ORDER BY Count (referent) DESC\"
Set RsTop10 = Conn.Execute(Sql)

%>
<html>

<head>
<meta http-equiv=\"Content-Language\" content=\"da\">
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">
<meta name=\"GENERATOR\" content=\"Microsoft FrontPage 4.0\">
<meta name=\"ProgId\" content=\"FrontPage.Editor.Document\">
<title>Ny side 1</title>
</head>

<body>

<table border=\"0\" width=\"640\" cellspacing=\"0\" cellpadding=\"0\">
  <tr>
    <td width=\"10%\" align=\"center\"><b><font size=\"2\" face=\"Book Antiqua\">RANK</font></b></td>
    <td width=\"31%\" align=\"center\"><b><font size=\"2\" face=\"Book Antiqua\">REFERING
      WEBSITES</font></b></td>
    <td width=\"59%\"><b><font size=\"2\" face=\"Book Antiqua\">HITS&nbsp;</font></b></td>
  </tr>
</table>
<table border=\"0\" width=\"640\" cellpadding=\"0\">
  <tr>
    <td width=\"10%\" align=\"center\"><b><font face=\"Book Antiqua\" size=\"2\">1</font></b></td>
    <td width=\"90%\" rowspan=\"10\" valign=\"top\">
      <table border=\"0\" width=\"100%\" cellpadding=\"0\">
      <%
      Do While Not RsTop10.EOF
Name = RsTop10(\"Referent\")

If Left(Name, 7) = \"http://\" then
  Name = mid(Name, 8)
End If

If Left(Name, 4) = \"www.\" then
  Name = mid(Name, 5)
End If


domainpos = instr(name, \"/\")
if cint(0&domainpos)>0 then
  name = mid(name, 1, domainpos-1)
end if

counter = 0
for i = 1 to len(name)

if mid(name, i, 1) = \".\" then
  counter = counter + 1
end if

next

if counter > 1 then
  domainpos = instr(name, \".\")
  name = mid(name, domainpos + 1)
end if
      %>
        <tr>
          <td width=\"34%\"><a href=\"<%= RsTop10(\"Referent\")%>\" target=\"_blank\"><font size=\"2\" face=\"Book Antiqua\"><%response.write(Name)%></font></a></td>
          <td width=\"66%\"><font size=\"2\" face=\"Book Antiqua\"><%= RsTop10(\"Total\")%></font></td>
        </tr>
      <%
      RsTop10.MoveNext
Loop
      %>
      </table>
    </td>
  </tr>
  <tr>
    <td width=\"10%\" align=\"center\"><b><font face=\"Book Antiqua\" size=\"2\">2</font></b></td>
  </tr>
  <tr>
    <td width=\"10%\" align=\"center\"><b><font face=\"Book Antiqua\" size=\"2\">3</font></b></td>
  </tr>
  <tr>
    <td width=\"10%\" align=\"center\"><b><font face=\"Book Antiqua\" size=\"2\">4</font></b></td>
  </tr>
  <tr>
    <td width=\"10%\" align=\"center\"><b><font face=\"Book Antiqua\" size=\"2\">5</font></b></td>
  </tr>
  <tr>
    <td width=\"10%\" align=\"center\"><b><font face=\"Book Antiqua\" size=\"2\">6</font></b></td>
  </tr>
  <tr>
    <td width=\"10%\" align=\"center\"><b><font face=\"Book Antiqua\" size=\"2\">7</font></b></td>
  </tr>
  <tr>
    <td width=\"10%\" align=\"center\"><b><font face=\"Book Antiqua\" size=\"2\">8</font></b></td>
  </tr>
  <tr>
    <td width=\"10%\" align=\"center\"><b><font face=\"Book Antiqua\" size=\"2\">9</font></b></td>
  </tr>
  <tr>
    <td width=\"10%\" align=\"center\"><b><font face=\"Book Antiqua\" size=\"2\">10</font></b></td>
  </tr>
</table>

<table border=\"0\" width=\"640\" cellspacing=\"0\" cellpadding=\"0\">
  <tr>
    <td width=\"100%\">
   
     
  </tr>

Håber der er nogen der kan gennemsgue dette !
Avatar billede nute Nybegynder
13. december 2001 - 19:42 #1
tja...hvis dine tomme kolonner ikke alltid inneholder \'null\', så vil de jo komme med i din forespørsel...prøv med:

Sql = \"Select Top 10 Referent, Count (*) AS Total FROM Count Where Referent is not null AND Referent NOT LIKE \'\' GROUP BY Referent ORDER BY Count (referent) DESC\"
Avatar billede brian123 Nybegynder
13. december 2001 - 19:56 #2
Suveren mange tak, nu funger det langt om længe, mange tak.

Så har jeg kun 1 ting tilbage men jeg ved ikke om jeg skal oprettet et nyt spørgsmål for det.

Jeg har flere som har samme antal hits alts f.eks.

eksperten.dk hits : 2
activserverpages.dk hits: 2
yahoo.com hits : 2

Men som jeg bruger i min select sætning vil jeg kun have en top 10 ! Det der sker er nemlig at den henter alle ud med f.eks. kun 2 hits, og det giver nogle gange en helt op til top 20 liste istedet, nogle ideer ??


Avatar billede nute Nybegynder
13. december 2001 - 20:02 #3
du lager en intern counter i din loop:

counter = 1
Do While Not RsTop10.EOF AND counter <= 10
...
  counter = counter + 1
Loop
Avatar billede orca Nybegynder
13. december 2001 - 20:03 #4
I stedet for at printe dine records på denne måde:
Do While Not RsTop10.EOF
Name = RsTop10(\"Referent\")

If Left(Name, 7) = \"http://\" then
  Name = mid(Name, 8)
End If

If Left(Name, 4) = \"www.\" then
  Name = mid(Name, 5)
End If


domainpos = instr(name, \"/\")
if cint(0&domainpos)>0 then
  name = mid(name, 1, domainpos-1)
end if

counter = 0
for i = 1 to len(name)

if mid(name, i, 1) = \".\" then
  counter = counter + 1
end if

next

Så brug et For loop:

For i = 1 To 10
  rsTop10.Move i
  \'print records osv
Next
Avatar billede nute Nybegynder
13. december 2001 - 20:06 #5
orca >> nope...hvis recordset\'et inneholder mindre enn 10 records, så vil man få en feil...man er nødt til å lage en intern teller...

/nute
Avatar billede orca Nybegynder
13. december 2001 - 20:08 #6
Man kan også bare lave en On Error Resume Next...
Avatar billede nute Nybegynder
13. december 2001 - 20:09 #7
man *kan*...men det er mye penere på kode seg utenom eventuelle feil...
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