Avatar billede mrs Nybegynder
10. december 2002 - 21:08 Der er 6 kommentarer og
2 løsninger

Udtræk fra to databaser afhængig af ID i den ene

Hvordan får jeg den til at tage det nyeste indlæg fra database udtræk nr 2, hvis der findes sådan et i forhold til udtræk nr 1.
Dvs. at de to udtræk skal passe til hinanden. I database 2 er der et felt som indeholder samme værdi som ID fra nr 1, det hedder BillederID.

Set rs1 = Server.CreateObject("ADODB.RecordSet")
Set rs2 = Server.CreateObject("ADODB.RecordSet")
strSQL1 = "SELECT * FROM Billeder order by Dato Desc"
strSQL2 = "SELECT TOP 1 * FROM Billederindlaeg Where BillederID=" & strID & " order by Dato Desc"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database/Billeder.mdb")
rs1.Open strSQL1, strDSN, 1, 3
rs2.Open strSQL2, strDSN, 1, 3

    Do While Not rs1.EOF > 0


  ' BillederID
  strID = rs1("ID")

Response.Write "<b>" & rs1("Overskrift") & "</b><br>"

    rs1.MoveNext
    Loop
rs1.Close
Set rs1 = Nothing

Så der skal være noget if hvis der ikke findes et record i database 2 der har dette BillederID og hvis der er, skal skrive det nyeste. Jeg har forsøgt selv, men kan ikke rigtig finde en løsning.
Avatar billede eagleeye Praktikant
10. december 2002 - 23:31 #1
Hvis jeg forstår det rigtigt så det noget i stil med dette du vil havde:


Set rs1 = Server.CreateObject("ADODB.RecordSet")
Set rs2 = Server.CreateObject("ADODB.RecordSet")
strSQL1 = "SELECT * FROM Billeder order by Dato Desc"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database/Billeder.mdb")
rs1.Open strSQL1, strDSN, 1, 3

Do While Not rs1.EOF > 0
  ' BillederID
  strID = rs1("ID")

  strSQL2 = "SELECT TOP 1 * FROM Billederindlaeg Where BillederID=" & strID & " order by Dato Desc"
  rs2.Open strSQL2, strDSN, 1, 3
'NOGET MED rs2 HER

  Response.Write "<b>" & rs1("Overskrift") & "</b><br>"


  rs2.Open
  rs1.MoveNext
Loop
rs1.Close
Set rs1 = Nothing
Avatar billede hossein Nybegynder
10. december 2002 - 23:44 #2
eagleeye >> Han vil have "Multiple Database". Jeg har gjort det en gang, hvis jeg kan huske rigtig, nu er jeg blevet for gammel :)
Først skal du åbne det ene:
set conn = server.createObject("ADODB.Connection")
Set rs1 = Server.CreateObject("ADODB.RecordSet")
strSQL1 = "SELECT * FROM Billeder order by Dato Desc"
strConn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database/Billeder.mdb")
rs1.Open strSQL1, strConn, 1, 3

Do While Not rs1.EOF > 0
  ' BillederID
  strID = rs1("ID")
rs1.movenext
loop

Nu skal du lukke det hele RS + Conn
conn.close
rs1.Close
Set rs1 = Nothing

strID=request.querystring("strID")

nu åbner du den anden og bruger strID i din næste sql sætning:
strSQL2="select bla bkla from bla where ID = '" & strID & "'

Jeg ved ikke om den virker men prøv! du skal bare lidt leje med det
Avatar billede hossein Nybegynder
10. december 2002 - 23:48 #3
med det mener jeg helt forfra: (nu åbner du den anden og bruger strID i din næste sql sætning:
strSQL2="select bla bkla from bla where ID = '" & strID & "')

set strConn2 = server.createObject("ADODB.Connection")
Set rs2 = Server.CreateObject("ADODB.RecordSet")
strSQL2 = "SELECT * FROM Billeder order by Dato Desc"
strConn2.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database/Billeder.mdb")
rs1.Open strSQL1, strConn2, 1, 3
....
Avatar billede mrs Nybegynder
11. december 2002 - 08:59 #4
Tak for jeres svar, jeg forsøger mig lidt frem med det. Der går desværre nok et stykke tid inden jeg får tid til at prøve det (eksamner). Foreløbig tak for jeres hjælp.
Avatar billede hossein Nybegynder
12. december 2002 - 00:09 #5
I think your easiest answer would be to create an Access database that uses
linked tables to "join" your databases and then query that database.
Avatar billede mrs Nybegynder
13. december 2002 - 15:10 #6
Nu har jeg forsøgt lidt, men bare uden held. Der lavet en query mellem de to tabeller. Det er ID fra den ene der linker til BillederID i den anden tabel.
Nedenstående er min kode. Den siger at der loop uden do.
Menningen er at den skal hente den nyeste record BillederID der passer med ID, hvis der findes en sådan record.

Dim strtabel
strtabel="</td>"

Set rs1 = Server.CreateObject("ADODB.RecordSet")
Set rs2 = Server.CreateObject("ADODB.RecordSet")
strSQL1 = "SELECT * FROM Billeder order by Dato Desc"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database/Billeder.mdb")
rs1.Open strSQL1, strDSN, 1, 3


If Not (rs1.BOF Or rs1.EOF) Then
    rs1.PageSize = 20
    rs1.AbsolutePage = intPage
    intRecCount = rs1.PageSize
    intPageCount = rs1.PageCount

    Do While Not rs1.EOF And intRecCount > 0
  ' BillederID
  strID = rs1("ID")

strSQL2 = "SELECT * FROM Billederindlaeg where BillederID=" & strID & " order by Dato Desc"
rs2.Open strSQL2, strDSN, 1, 3

' Skrive Billed
Response.Write "<td width='50%' align='center'><p><br><a href=sebilled.asp?ID=" & rs1("ID") & "><img src=Billeder/" & rs1("Url") & " width='150' height='150' border='1' style='border-color:#000000'></a><br>"

' Skriv Overskrift
Response.Write "<b>" & rs1("Overskrift") & "</b><br>"

' Skriv kommentar
If isNull(rs2("Kommentar")) Then
Response.Write ""
Else
Response.Write "<br>" & rs2("Kommentar") & "<br>"

'Afslutning
Response.Write "<a href=sebilled.asp?ID=" & rs1("ID") & "><img src='sebilled.gif' border='0'></a><br><br></p>"&strtabel&""


If strtabel = "</td></tr><tr>" Then
    strtabel = "</td>"
Else
    strtabel = "</td></tr><tr>"
End If
    intRecCount = intRecCount - 1
    rs1.MoveNext
    Loop
        Loop
End If
rs1.Close
Set rs1 = Nothing
Avatar billede hossein Nybegynder
13. december 2002 - 22:19 #7
Ok, det er ikke 2 DB'er som du har, det er tale om to tabeller. Du skal bare joine dine tabeller, det er ikke brug for 2 recordset. send din DB til mig med nogle få data, jeg kigger på det, men du vil have en side paging pr. side 20?
mach3@get2net.dk
Avatar billede hossein Nybegynder
15. december 2002 - 19:47 #8
svaret blev sent!
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