Avatar billede neander Nybegynder
03. januar 2005 - 13:37 Der er 16 kommentarer og
1 løsning

data fra 2 databaser

Jeg har en side med data fra en gæstebog, hvor folks ID kommer ned, og kan hives frem med rs("ForfatterID"). I en anden database ligger navnene på de forskellige ID'er.

Hvordan får jeg siden til at udskrive navnene på forfatterne fra den anden database, i stedet for blot deres ID fra databasen med gæstebogen? kan man flette det sammen på en nem måde?
Avatar billede mortency Nybegynder
03. januar 2005 - 13:39 #1
Du lage to spørringer en mot hver database.
Avatar billede fennec Nybegynder
03. januar 2005 - 13:43 #2
Du kan ikke flette det sammen, medmindre du har mulighed til at lave "views" på databaserne. Ellers kan du fuske lidt, også connecte til begge databaser:

Set Conn1 = Server.CreateObject("ADODB.Connection")
Set Conn2 = Server.CreateObject("ADODB.Connection")
Conn1.Open "connect til den ene database"
Conn2.Open "connect til den anden database"

Det var måske også det mortency mente???
Avatar billede neander Nybegynder
03. januar 2005 - 13:44 #3
Ja, men hvordan gør jeg det? foreløbig ser det sådan ud:

set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open "Select * from [gaestebog] ORDER BY [dato] desc;", Connect, 1

forfatter: <%=rs("ForfatterID")%>

men forfatterens navn ligger i tabellen [navne] og i den database er der felterne [ID] og [navn]. ID svarer til ForfatterID i den anden database...
Avatar billede steffansteffan Nybegynder
03. januar 2005 - 13:47 #4
Forbindelse til Database 1
set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open "Select * from [gaestebog] ORDER BY [dato] desc;", Connect, 1

forfatter: <%=rs("ForfatterID")%>

Forbindelse til Database 2
set rs1 = Server.CreateObject("ADODB.RecordSet")
rs1.Open "Select * from [brugerID] ORDER BY [ID] desc;", Connect, 1

forfatter: <%=rs1("ID")%>

Prov og lege med det der.
Avatar billede neander Nybegynder
03. januar 2005 - 13:52 #5
men i den anden database med navne, står jo ikke hvem der har skrevet hvilket indlæg i gæstebogen. Det står kun i gæstebogen, angivet ved et ID.

Hvor sætter jeg den ligning, som fortæller, at der hvor ForfatterID fra [database1] svarer til brugernavn med tilsvarende ID fra [database2] ?
Avatar billede fennec Nybegynder
03. januar 2005 - 13:56 #6
Du skal have selected det for hver indlæg. Du mangler vist også et loop. Her har jeg gætte lidt på hvordan di kode ser ud, og hvordan den skal blive. Håber du kan forstå meningen:

set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open "Select * from [gaestebog] ORDER BY [dato] desc;", Connect, 1

do while not rs.eof
forfatter: <%
  Set Conn2 = Server.CreateObject("ADODB.Connection")
  Conn2.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db/DenAndenDatabase.mdb")

  set rs2 = conn2.execute("select * from BrugerTabel where id="& rs("ForfatterID"))
  if not rs2.eof then
    response.write rs2("forfatterNavn")
  else
    response.write "N/A"
  end if
%>
..
..
<%
  rs.MoveNext
loop
%>
Avatar billede hnteknik Novice
03. januar 2005 - 13:57 #7
rs1.Open "Select * from [brugerID] Where ID =" & rs("ForfatterID")&";", Connect, 1
Avatar billede neander Nybegynder
03. januar 2005 - 13:58 #8
tak, jeg leger lige lidt med det, - og vender nok tilbage hvis (når), jeg får probs...
Avatar billede fennec Nybegynder
03. januar 2005 - 14:01 #9
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Set Connect2 = Server.CreateObject("ADODB.Connection")
connString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db/db.mdb")
connString2 = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db/DenAndenDatabase.mdb")
Connect.Open connString, 1
Connect2.Open connString2, 1

set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open "Select * from [gaestebog] ORDER BY [dato] desc;", Connect, 1

do while not rs.eof
%>
forfatter: <%
  set rs2 = Connect2.execute("select * from BrugerTabel where id="& rs("ForfatterID"))
  if not rs2.eof then
    response.write rs2("forfatterNavn")
  else
    response.write "N/A"
  end if
%>
...
andet udskrift fra rs()
...
<%
  rs.MoveNext
loop
%>
Avatar billede fennec Nybegynder
03. januar 2005 - 14:02 #10
... Dette var et bedre eks. Det andet kode er ikke særlig god :o)
Avatar billede neander Nybegynder
03. januar 2005 - 14:15 #11
hmm.. jeg kan se, at der ikke er tale om to databaser, men blot to tabeller... damn, min fejl.

Her er det kode til oplistningen PT:

Dim Connect, connString
Set Connect = Server.CreateObject("ADODB.Connection")
connString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db/db.mdb")
Connect.Open connString, 1, 3

set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open "Select * from [notits] ORDER BY [dato] desc;", Connect, 1
Do

overskrift = rs("overskrift")
%>

<tr><td style="width: 150;background-color: <%=bgcolor%>;font-family: arial, verdana;font-size: 12px;color:#000000;" align="left">
<a href="008b.asp?strNotitsID=<%=rs("notitsID")%>" class="black"><%=overskrift%></a>
</td><td style="width: 100;background-color: <%=bgcolor%>;font-family: arial, verdana;font-size: 12px;color:#000000;" align="left">
forfatter: <%=rs("ForfatterID")%>
(...)
</td></tr>

<%
rs.MoveNext
Loop While Not rs.EOF
%>


Den anden tabel hedder [brugere] og består af felterne:
brugerID
brugernavn


brugerID er det felt som svarer til forfatterID fra den anden tabel...
Avatar billede fennec Nybegynder
03. januar 2005 - 14:32 #12
Så er det en simpel join:

rs.Open "Select notits.*, bruger.brugernavn from ([notits] join bruger on bruger.brugerID=notits.ForfatterID) ORDER BY [dato] desc;", Connect, 1
...
...
forfatter: <%=rs("brugernavn")%>
Avatar billede diabloii Nybegynder
03. januar 2005 - 14:48 #13
må jeg gætte på du har tilsluttet den første database øverst på siden? Hvis du har det og ikke lukket forbindelsen kan du bruge dette.

sæt dette ind i koden før side indholden:
'Henter brugerens profil
                        Set rs = Server.CreateObject("ADODB.Recordset")
                        sql = "select * from bruger where brugernavn = '" & Session("brugernavn") & "'"
                        rs.open sql, conn, 1, 3

og så i side indholdet skal du skrive dette:
<input type="text" name="navn" size="25" value="<%=rs("brugernavn")%>" onchange='value="<%=rs("brugernavn")%>"'><br>

Made by eXe... Håber du kan bruge det!
Avatar billede neander Nybegynder
03. januar 2005 - 15:28 #14
fennec > nu får jeg en fejl:

"ODBC driver does not support the requested properties."

den refererer til den linje hvor jeg laver min join...
Avatar billede fennec Nybegynder
03. januar 2005 - 15:31 #15
Der skal nok en "INNER" på:

rs.Open "Select notits.*, bruger.brugernavn from ([notits] INNE JOIN bruger on bruger.brugerID=notits.ForfatterID) ORDER BY [dato] desc;", Connect, 1
Avatar billede neander Nybegynder
03. januar 2005 - 15:39 #16
hmm.... jeg skulle bare ændre tabelnavn fra "bruger" til "brugere" i koden. Nu virker det :o) læg et svar fennec!
Avatar billede fennec Nybegynder
03. januar 2005 - 15:48 #17
.o) <-- One Eyed Jack
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