Avatar billede duno Nybegynder
03. februar 2008 - 01:17 Der er 11 kommentarer og
1 løsning

Hvordan søger man i 2 forskellige databaser

Jeg henter en liste fra DB 1 og vil hente alle poster som ligner resultaterne fra DB1 ud fra DB2

eks

<%
Set database2 = Server.CreateObject ("ADODB.Connection")
database2.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("/../db/db1.mdb"))
%>

<%
Set indlaeg = Server.CreateObject ("ADODB.Recordset")
indlaeg.Open "SELECT * FROM MEMBERS order by NAME ", database2

Set database3 = Server.CreateObject ("ADODB.Connection")
database3.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("/../db/db2"))
%>

<%
Set indlaeg2 = Server.CreateObject ("ADODB.Recordset")
indlaeg2.Open "SELECT * FROM PersonTabel morbnavn LIKE " & (indlaeg.Fields("NAME")) & " order by NAME  ", database3
%>
Avatar billede nielle Nybegynder
03. februar 2008 - 07:53 #1
Du løber nok ind i færre problemer hvis du konsekvent vælger at bruge det samme nummer for ting som har med den ene og den anden database at gøre.

Men ellers er det vel simpelthen noget med 2 løkker inden i hinanden:

<%
Set database2 = Server.CreateObject ("ADODB.Connection")
Set indlaeg2 = Server.CreateObject ("ADODB.Recordset")
database2.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("/../db/db1.mdb"))

Set database3 = Server.CreateObject ("ADODB.Connection")
Set indlaeg3 = Server.CreateObject ("ADODB.Recordset")
database3.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("/../db/db2.mdb"))


indlaeg2.Open "SELECT * FROM members ORDER BY name", database2

While Not indlaeg2.EoF
    navn2 = indlaeg2.Fields("name")

    indlaeg3.Open "SELECT * FROM PersonTabel WHERE morbnavn = '" & navn2 & "' ORDER BY name  ", database3
    ' Eller hvis det rent faktisk *er* en LIKE du skal bruge:
    ' indlaeg3.Open "SELECT * FROM PersonTabel WHERE morbnavn LIKE '%" & navn2 & "%' ORDER BY name  ", database3


    While Not indlaeg3.EoF
        Response.Write navn2 & " - " & indlaeg3.Fields("morbnavn") & " - " & indlaeg3.Fields("navn") & "<br>"

        indlaeg3.MoveNext
    Loop

    indlaeg2.MoveNext
Loop
%>
Avatar billede duno Nybegynder
03. februar 2008 - 10:15 #2
Det ser sku godt ud :o)

Men hvad nu hvis alle navnene fra db1 ikke eksistere i db2 og omvendt, kan man lave en eller anden udtræk som forhindre fejl.

resultatet af denne kode er at finde alle de poster i begge databaser som både har en name og morbnavn som er ens
Avatar billede nielle Nybegynder
03. februar 2008 - 10:25 #3
Den slags fejl opstår ikke i den viste kode - den indre løkke løber kun hvis der rent faktisk er hits.
Avatar billede duno Nybegynder
03. februar 2008 - 16:44 #4
Jeg får den her fejl

Microsoft VBScript compilation error '800a040e'

'loop' without 'do'

/seek3.asp, line 27
Loop

linie 27 er første loop
Avatar billede nielle Nybegynder
03. februar 2008 - 19:23 #5
Der mangler da vist ogos en Do på (begge!) While-løkker:

Ret:

While Not indlaeg2.EoF

til:

While Not indlaeg2.EoF
Avatar billede nielle Nybegynder
03. februar 2008 - 19:38 #6
Tsk-tsk:

...

til:

Do While Not indlaeg2.EoF
Avatar billede nielle Nybegynder
11. februar 2008 - 18:20 #7
Hvad med noget respons?
Avatar billede duno Nybegynder
12. februar 2008 - 12:24 #8
sorry.. har været lidt hængt op på en nyformatteret maskine som åbenbart ikke ville samarbejde :o(

Jeg fik stadig samme fejl, men kan godt se at det burde virke, der må være noget andet galt, problemet er dog løst da en af de brugte databaser røg under formatteringen ( rigtige mænd laver ikke backup, de tuder... længe :o) )
kan du ikke sende svar så du kan få points, og igen tak!!
Avatar billede nielle Nybegynder
12. februar 2008 - 16:22 #9
Svar ...

Sur måde at løse problemet på :^|
Avatar billede nielle Nybegynder
18. februar 2008 - 18:16 #10
Så mangler du bare at acceptere mit svar :^)
Avatar billede duno Nybegynder
19. februar 2008 - 14:55 #11
det er hermed gjort :o)
Avatar billede nielle Nybegynder
19. februar 2008 - 17:50 #12
Takker for point :^)
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