Avatar billede ponyboye Nybegynder
14. juli 2004 - 13:17 Der er 10 kommentarer og
1 løsning

Hjælp til at lave lille data udtræk om

Jeg har dette data udtræk som jeg ikke har kunne finde ud af hvordan jeg laver det som en kode, så jeg undgår 3 database kald, så det kun sker en gang. Så vil jeg gerne have lavet det om så database kald funktionen kommer til at logge i en fil for sig selv, så via komandoer kan åbne og lukke databasen og så jeg ikke skal skive det database kald flere gang.

Et andet problem er at når jeg kalder dataer ud fra databsen så starter den udtrækket med et tomt felt, før den begynder at udskrive og dette kan jeg ikke forstå.

Se problemet her: www.danskehojtider.dk

Håber der er en venlig sjæl der kan og vil hjælpe mig.



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="100%" border="0" cellspacing="10">
  <tr>
    <td>
      <%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("opskriftdata.mdb")
Conn.Open DSN

    strSQL = "Select * From kategorier Order By hojtidnavn"
    Set rs = Conn.Execute(strSQL)
   
    i = 1
    while not rs.EOF
   
    strNavn = rs("hojtidnavn")
    strLink = "<a href='visindex.asp?id=" & rs("hojtid") & "'>" & strNavn & "</a>"
   
    With Response
      .Write"<td>"
      .Write"<li>" & strLink & "</li>"
      .Write"</td>" & vbcrlf
    End With
    if (i mod 5) = 0 then
      Response.Write "</tr><tr>" & vbcrlf
    end if
    i = i + 1   
    rs.MoveNext
    wend
  Conn.Close
Set Conn = Nothing
%>
    </td>
  </tr>
</table><br>
<table width="100%" border="0" cellspacing="10">
  <tr>
    <td>
      <%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("opskriftdata.mdb")
Conn.Open DSN

    strSQL = "Select * From kategori1 Order By emmenavn"
    Set rs = Conn.Execute(strSQL)
   
    i = 1
    while not rs.EOF
   
    strNavn = rs("emmenavn")
    strLink = "<a href='visemme.asp?id=" & rs("emme") & "'>" & strNavn & "</a>"
   
    With Response
      .Write"<td>"
      .Write"<li>" & strLink & "</li>"
      .Write"</td>" & vbcrlf
    End With
    if (i mod 5) = 0 then
      Response.Write "</tr><tr>" & vbcrlf
    end if
    i = i + 1   
    rs.MoveNext
    wend
  Conn.Close
Set Conn = Nothing
%>
    </td>
  </tr>
</table><br>
<table width="100%" border="0" cellspacing="10">
  <tr>
    <td height="22">
      <%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("opskriftdata.mdb")
Conn.Open DSN

    strSQL = "Select * From kategori2 Order By varenavn"
    Set rs = Conn.Execute(strSQL)
   
    i = 1
    while not rs.EOF
   
    strNavn = rs("varenavn")
    strLink = "<a href='visvare.asp?id=" & rs("vare") & "'>" & strNavn & "</a>"
   
    With Response
      .Write"<td>"
      .Write"<li>" & strLink & "</li>"
      .Write"</td>" & vbcrlf
    End With
    if (i mod 4) = 0 then
      Response.Write "</tr><tr>" & vbcrlf
    end if
    i = i + 1   
    rs.MoveNext
    wend
  Conn.Close
Set Conn = Nothing
%>
    </td>
  </tr>
</table>
</body>
</html>
Avatar billede vbcoder Nybegynder
14. juli 2004 - 13:26 #1
Du kan lægge nedenstående kode i en includefil fx. database.inc.asp

<%       
Dim DB
   
Sub OpenDatabase()
  ' Åbner databasen.
  Set DB = Server.CreateObject("ADODB.Connection")
  DB.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\") & "database\db.mdb")
End Sub
   
Sub CloseDatabase()
  ' Lukker databasen
  DB.Close
  Set DB = Nothing
End Sub   
%>

På en hvilken som helst side der skal bruge databasen lægger du flg. kode i toppen af filen

<!-- #include file = "/database.inc.asp" -->

Når du herefter skal bruge forbindelsen skriver du i din asp-kode

opendatabase

du kan bruge variablen DB til at åbne recordset med

set rs = db.execute(sql)

når du er færdig med databasen er koden

closedatabase
Avatar billede vbcoder Nybegynder
14. juli 2004 - 13:27 #2
include'n skal selvfølgelige pege på det sted du har din include fil liggende.

f.x. kunne mappen hedde inc så en include af filen ville se således ud

<!-- #include file = "/inc/database.inc.asp" -->
Avatar billede vbcoder Nybegynder
14. juli 2004 - 13:28 #3
mht det tomme felt så har du nok en tom post i databasen ;-)
Avatar billede Slettet bruger
14. juli 2004 - 13:30 #4
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("opskriftdata.mdb")
Conn.Open DSN

strSQL = "Select * From kategorier Order By hojtidnavn"
Set rs = Conn.Execute(strSQL)

strSQL = "Select * From kategori1 Order By emmenavn"
Set rs2 = Conn.Execute(strSQL)

strSQL = "Select * From kategori2 Order By varenavn"
Set rs3 = Conn.Execute(strSQL)

- det burde virke...

Du kan lægge...
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("opskriftdata.mdb")
Conn.Open DSN
...ind i en ASP fil og så include den når du skal oprette forbindelse til den database.
Så lægger du...
Conn.Close
Set Conn = Nothing
... i en anden ASP fil og include den hver gang du skal lukke en forbindelse til en database.

Altså, opret en ny ASP fil og kald den databasekald.asp, og læg den bagefter i roden på dit site.

Så når du skal bruge den skriver du:
<!--#include file="<% =Server.MapPath & "databasekald.asp" %>"-->
og linien skal stå uden for %> og <%

Det samme gør du med en fil som lukker forbindelsen til databasen.
Avatar billede vbcoder Nybegynder
14. juli 2004 - 13:31 #5
det tomme felt kommer fordi du laver en <td>
og derefter inde i den <td> laver et recordset og begynder et loop der laver
<td></td>
derefter afslutter du med </td>
hvis du fjerner den første <td> og den sidste </td> tror jeg du får den væk
Avatar billede Slettet bruger
14. juli 2004 - 13:34 #6
Tror egentlig ikke, nu når jeg tænker over det, at man kan bruge Server.MapPath i en "include".
Så brug vbcoders forslag...

Måske kan man så bruge <!--#include virtual="databasekald.asp"--> men jeg er ikke sikker.
Avatar billede vbcoder Nybegynder
14. juli 2004 - 13:36 #7
'include file

<%       
Dim DB
   
Sub OpenDatabase()
  ' Åbner databasen.
  Set DB = Server.CreateObject("ADODB.Connection")
  DB.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("opskriftdata.mdb")
End Sub
   
Sub CloseDatabase()
  ' Lukker databasen
  DB.Close
  Set DB = Nothing
End Sub   
%>


'din fil

<!-- #include file="database.inc.asp"-->
<body>
<table width="100%" border="0" cellspacing="10">
  <tr>
      <%

OpenDatabase

    strSQL = "Select * From kategorier Order By hojtidnavn"
    Set rs = DB.Execute(strSQL)
   
    i = 1
    while not rs.EOF
   
    strNavn = rs("hojtidnavn")
    strLink = "<a href='visindex.asp?id=" & rs("hojtid") & "'>" & strNavn & "</a>"
   
    With Response
      .Write"<td height='22'>"
      .Write"<li>" & strLink & "</li>"
      .Write"</td>" & vbcrlf
    End With
    if (i mod 5) = 0 then
      Response.Write "</tr><tr>" & vbcrlf
    end if
    i = i + 1   
    rs.MoveNext
    wend

%>
  </tr>
</table><br>
<table width="100%" border="0" cellspacing="10">
  <tr>
      <%

    strSQL = "Select * From kategori1 Order By emmenavn"
    Set rs = db.Execute(strSQL)
   
    i = 1
    while not rs.EOF
   
    strNavn = rs("emmenavn")
    strLink = "<a href='visemme.asp?id=" & rs("emme") & "'>" & strNavn & "</a>"
   
    With Response
      .Write"<td height='22'>"
      .Write"<li>" & strLink & "</li>"
      .Write"</td>" & vbcrlf
    End With
    if (i mod 5) = 0 then
      Response.Write "</tr><tr>" & vbcrlf
    end if
    i = i + 1   
    rs.MoveNext
    wend
%>
  </tr>
</table><br>
<table width="100%" border="0" cellspacing="10">
  <tr>
      <%

    strSQL = "Select * From kategori2 Order By varenavn"
    Set rs = db.Execute(strSQL)
   
    i = 1
    while not rs.EOF
   
    strNavn = rs("varenavn")
    strLink = "<a href='visvare.asp?id=" & rs("vare") & "'>" & strNavn & "</a>"
   
    With Response
      .Write"<td height='22'>"
      .Write"<li>" & strLink & "</li>"
      .Write"</td>" & vbcrlf
    End With
    if (i mod 4) = 0 then
      Response.Write "</tr><tr>" & vbcrlf
    end if
    i = i + 1   
    rs.MoveNext
    wend

CloseDatabase
%>
  </tr>
</table>
</body>
Avatar billede ponyboye Nybegynder
14. juli 2004 - 14:25 #8
prøver det lige når jeg kommer hjem fra arbejde...Tak
Avatar billede ponyboye Nybegynder
11. august 2004 - 09:46 #9
vbcoder lægger du ikke et lille svar på dette indlæg?

Du var lige den jeg skulle bruge..
Avatar billede vbcoder Nybegynder
11. august 2004 - 09:57 #10
det var så lidt - husk meget vand i denne varme ;-)
Avatar billede ponyboye Nybegynder
11. august 2004 - 10:57 #11
he he hvad for en varme?? jeg er kok og vi har 38 grader i køkkenet...men i lige måde
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