Avatar billede stefware Nybegynder
16. januar 2003 - 14:00 Der er 6 kommentarer og
1 løsning

Åbne flere forbindelser til DB (novice)

Hej mit tidligere spørgsmål blev vist noget værre rod, så jeg prøver lige igen, lidt mere detaljere.

Jeg er ved at lave bådlaugets hjemmeside, planen er at alle sider skal ligge i en Access DB (dbldb.mdb) og at der skal laves et admin modul, så det er let for bestyrelsen selv at opdaterer tekst/menuer osv. på siderne.

Siderne er opdelt i en top og 3 spalter (CSS).
I venstresplate skal menu'en være
I miderste spalte skal indholdet af siden komme
I højrespalte skal der være nyheder

Dvs. jeg skal have adgang til 3 tabeller som ikke har noget indhold til fælles og vise dem 3 forskllige steder på siden.

Kan man det???

Mit eget forslag (husk jeg er novice inden for ASP):
<%
Response.Buffer = True
Response.Expires = 0

Set Con = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("dbldb.mdb")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

    sqlMenu = "SELECT * FROM menu ORDER BY navn
    set rsMenu = Con.execute(sqlMenu)

    sqlForside = SELECT * FROM forside_tekst ORDER BY forside_tekst
    set rsForside = Con.execute(sqlForside)

   
%>

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">

<br>
<% Do While Not rsMenu.EOF %>
  <% Response.Write rsMenu("navn") %>

<br>
<% Do While Not rsForside.EOF %>
<% Response.Write rsForside("forside_tekst") %>



</body>
</html>
<%
Con.Close
Set Con = Nothing
%>
Avatar billede luzk Nybegynder
16. januar 2003 - 15:18 #1
Umiddelbart vil jeg sige det ser ud til at være ok, men der er lige et par ting:
Generelt vil jeg anbefale dig at lægge din DSN streng ud i en seperat fil kaldet fx db.asp, som du inkluderer de steder du skal benytte databasen. På den måde behøver du kun at ændre et sted hvis din database ændrer sig.
Det jeg derud vil ændre er dine Do loops:
<%Do Until rsMenu.EOF
  Response.Write rsMenu("navn")
  rsMenu.MoveNext
Loop%>
<br>
<%Do Until rsForside.EOF
  Response.Write rsForside("forside_tekst")
  rsForside.MoveNext
Loop%>

jeg har ændret "while not" til until, da jeg synes det er en mere logisk opbygning, men det er smag og behag :-)
Derudover har jeg indsat MoveNext for hvert loop, da det er den der sørger for at du rykker videre i dit recordset, og undgår derved uendeligt loop
slutteligt har jeg indsat "Loop" der afslutter din Do søtning

Håber det kan bruges :-)

/Luzk
Avatar billede stefware Nybegynder
16. januar 2003 - 15:40 #2
Hmm nu får jeg følgende fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
 
/testen.asp, line 10

      <%
      Response.Buffer = True
      Response.Expires = 0

      Set Con = Server.CreateObject("ADODB.Connection")
      DBPath = "DBQ=" & server.mappath("dbldb.mdb")
      Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

          sqlMenu = "SELECT * FROM menu ORDER BY navn"
10-->    set rsMenu = Con.execute(sqlMenu)

          sqlForside = "SELECT * FROM forside_tekst ORDER BY forside_tekst"
          set rsForside = Con.execute(sqlForside)

   
%>
Avatar billede luzk Nybegynder
16. januar 2003 - 15:57 #3
prøv det her:

<%
Response.Buffer = True
Response.Expires = 0

Set Con = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("dbldb.mdb")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

    Set sqlMenu = Server.CreateObject("ADODB.RecordSet")
    Set sqlForside = Server.CreateObject("ADODB.RecordSet")
    sqlMenu = "SELECT * FROM menu ORDER BY navn
    set rsMenu = Con.execute(sqlMenu)

    sqlForside = SELECT * FROM forside_tekst ORDER BY forside_tekst
    set rsForside = Con.execute(sqlForside)

   
%>

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">

<br>
<%Do Until rsMenu.EOF
  Response.Write rsMenu("navn")
  rsMenu.MoveNext
Loop%>
<br>
<%Do Until rsForside.EOF
  Response.Write rsForside("forside_tekst")
  rsForside.MoveNext
Loop

Set sqlMenu = Nothing
Set sqlForside = Nothing
%>

</body>
</html>
<%
Con.Close
Set Con = Nothing
%>

/Luzk
Avatar billede luzk Nybegynder
16. januar 2003 - 15:58 #4
Det jeg ahr gjort er at definere dine to recordsets, og fjerner dem bagefter

/Luzk
Avatar billede stefware Nybegynder
16. januar 2003 - 15:59 #5
Satan stå i det nu virker det pludseligt, jeg tror mit webhotel ikke altid er helt så stabilt!
Avatar billede stefware Nybegynder
16. januar 2003 - 16:01 #6
Tak for hjælpen forresten!
Avatar billede luzk Nybegynder
16. januar 2003 - 16:03 #7
Hvis det virkede før du satte min ændring ind skal jeg ikke have pointene jo :-)

Men det var så lidt :-)

/Luzk
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