Avatar billede Skynet Mester
15. maj 2002 - 13:26 Der er 16 kommentarer og
1 løsning

Søgning i 2 databaser?

Hej

Jeg skal lave en søge funktion som skal søge i 1 intern (Access) database som ligger på hjemmesiden, og en ekstern som ligger på en anden side, søgning skal udskrives på én side.

Hvis nogen har en løsning, må I meget gerne skrive brugervenligt og give kodning gerne med forklaringer. Da det er nyt for mig at søge i en database og især i 2 databaser.


ASP foretrækkes da det er det sprog som jeg kender, dog accepteres andre sprog som fx PHP, xml, xhtml osv.  hvis det virker bedre.

Håber at der er nogen som kan give et svar.

Med venlig hilsen
Silas Lasvill-Andersen
Avatar billede _just4fun_ Nybegynder
15. maj 2002 - 13:49 #1
"ligger på en anden side"... Hvor lang er de fra hinanden:
Anden computer?
Andet site?
Andet lokal-net?
Anden planet? .-)
Avatar billede Skynet Mester
15. maj 2002 - 14:01 #2
Den ligger på en anden server i danmark

Med venlig hilsen
Silas
Avatar billede -master-d- Nybegynder
15. maj 2002 - 14:56 #3
Dette er den nemme måde

<%
Set Conn = Server.Createobject("ADODB.Connection")
DSN1 = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN1 = DSN & "DBQ=" & Server.MapPath("database1.mdb")
Conn.Open DSN1

Dine sql'er osv.

%>
<%
Set Conn = Server.Createobject("ADODB.Connection")
DSN2 = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN2 = DSN & "DBQ=" & Server.MapPath("database2.mdb")
Conn.Open DSN2

Dine ting til database2

%>
<%
Her koder du så tingene fra de to databaser sammen
%>

Håber det var til nogen hjælp
Avatar billede -master-d- Nybegynder
15. maj 2002 - 15:03 #4
Her kommer der så et lille eksempel

<%
Set Conn = Server.Createobject("ADODB.Connection")
DSN1 = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN1 = DSN & "DBQ=" & Server.MapPath("database1.mdb")
Conn.Open DSN1


SQL = "Select * From tabel1"
Set rs = Conn.Execute(SQL)
If Not rs.EOF Then
streng = rs("Felt")

rs.Close
Conn.Close
Set Conn = Nothing
%>
<%
Set Conn = Server.Createobject("ADODB.Connection")
DSN2 = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN2 = DSN & "DBQ=" & Server.MapPath("database2.mdb")
Conn.Open DSN2

SQL = "Select * From tabel2"
Set rs = Conn.Execute(SQL)
If Not rs.EOF Then
streng2 = rs("Felt")
End If

rs.Close
Conn.Close
Set Conn = Nothing
%>
<%
'Her koder du så tingene fra de to databaser sammen

Response.Write " & streng & " og " & streng2 & ".
%>
Avatar billede -master-d- Nybegynder
15. maj 2002 - 15:05 #5
Havde lige glemt at connection'en skal lukkes igen
altså :
rs.Close
Conn.Close
Set Conn = Nothing

Sådan ville jeg tro var nemmest at overskue for en der var helt ny.
Kan godt give lidt info om hvad det er jeg laver.
Avatar billede goose Nybegynder
15. maj 2002 - 15:42 #6
Såvidt jeg ved, kan man da ikke trække data fra en database som er placeret på en anden server med asp, eller er det mig der har misforstået noget ?!?

/Goose
Avatar billede -master-d- Nybegynder
15. maj 2002 - 15:47 #7
Goose >> Havde ikk' lige set

Men hvad nu hvis man ligger hele serverstien ind, så kan man måske
altså

DSN2 = DSN & "DBQ=" & Server.MapPath("http://www.server/database2.mdb")
men ved det altså ikke.
Avatar billede goose Nybegynder
15. maj 2002 - 15:51 #8
Det kan man ikke, believe me, jeg har forsøgt, den eneste måde jeg har hørt man kan gøre det på er med XML, men det har jeg ikke en dyt forstand på.

/Goose
Avatar billede _just4fun_ Nybegynder
15. maj 2002 - 15:57 #9
da Access er en filbaseret database der ikke står og lytter på nogen port SKAL man have eksklusiv adgang til den fil (.mdb) der er tale om. Det har man ikke særlig tit hvis den ligger på en aden server :-) Man kunne hacke sig lidt tættere på en løsning ved at lave nogle asp-sider der kunne lave de forespørsler man skulle bruge, og på den måde få databasen tilgængelig på nettet... men jeg tror ikke det er en opgave for en "databaser er nye" for. Med rigtige databaseservere er det muligt at forbinde direkte over nettet.... Oracle, MSSQLServer, og sikkert også MySql.
Avatar billede kimiwan Nybegynder
15. maj 2002 - 17:41 #10
Her er en mulig approach, der gør brug af xmlhttp, xml og asp.  Den kræver at du har mulighed for at oprette og køre et asp script på den eksterne server.  Det er besværligt, men den kan løse dit problem.

Du skal bruge 2 scripts - et til den lokale server og et til den eksterne.

Scriptet på den eksterne server:

Scriptet får søgeparametrene via querystring collectionen, da det tilgåes vha xmlhttp - dvs. du skal bruge request.querystring("feltnavn") til at hente data ind.  Resultatet af søgningen skal du så eksportere til xml.

Scriptet på den lokale server (det, brugeren ser):

Her skal du først søge i den lokale database, derefter skal du vha xmlhttp hente asp-siden på den eksterne server - med dine søgeparametre i querystringen.  Det, du får tilbage er så xml, som du skal manipulere til at blive vist korrekt på siden sammen med dine resultater fra første databasesøgning.

Hvis du vil undgå alt xml-ræset, kan du få scriptet på den eksterne server til at spytte selve htmlkoden ud i stedet for xml'en.  Om du vælger den løsning afhænger af, hvor fleksibelt dit system skal være.
Avatar billede kimiwan Nybegynder
15. maj 2002 - 17:49 #11
Hm.. jeg havde ikke læst så grundigt, hvad du skrev i dit spm her - så det oprindelige spørgsmål lige da du havde oprettet det i access gruppen.

Hvis du ikke ved noget om søgning i databaser, vil jeg anbefale dig at bruge enten mysql eller mssql (mssql hvis du er vant til access i en eller anden grad).  Eller også at holde dig til bare en enkelt lokal access database.  Det andet bli'r let for uoverskueligt, hvis du er helt nybegynder.  :o)
Avatar billede Skynet Mester
16. maj 2002 - 21:28 #12
Tak for alle kommentarer

-master-d-: Tak for dit svar, men jeg kan høre fra ”goose” at det ikke virker, så derfor kan jeg desværre ikke godkende dit svar.

kimiwan: jeg ved godt at det er lidt meget at forlange :-), men vil du prøve at skrive programmeringen til den ide du har til hvordan man kan løse problemet, da det lyder meget fornuftigt.

Med venlig hilsen
Silasla
Avatar billede kimiwan Nybegynder
16. maj 2002 - 22:09 #13
Det har jeg sgu ikke lige mod på (eller tid til) lige nu.. men hvis du skriver hvordan der skal søges i din database, ville det gøre det væsentligt lettere, hvis der nu var nogen, der skulle få lyst til at forsøge sig :o)

Hvordan ser datastrukturen i databaserne ud?
Hvad skal der søges efter, hvordan ser din søgeformular ud?
Avatar billede Skynet Mester
17. maj 2002 - 20:59 #14
Jeg har fundet en løsning på asp.dk, så hvis der er nogle som bare kan indflette den eksterne database i søgningen er de 200 point tjent.

http://www.asp.dk/articles.asp?mode=show_article&article_id=136&tech_id=1


Interne database=

Filnavn
-Filnavn
-Medie
-Format
-Størrelse

Forfatter
-Forfatter
-Email

Målgruppe
-Målgruppe
-Uddannelse
-Mål
-Lærestil

Rettigheder
-Forfatter
-Fag
-Filnavn
-Ophavsret
-Brugernavn
-Adgangskode



kimiwan:
Må jeg få din E-mail adresse, jeg ved godt at det ikke er så motiverende med 200 point for at læse en stor opgave, men hvis du har lyst kan jeg tilbyde dig et job som freelance programmør. Du kan sende en mail til admin@webfair.dk hvis du er interesseret.
Avatar billede -master-d- Nybegynder
19. maj 2002 - 23:03 #15
I søgningen er det da en søgning du vil lave ?
Kan du ikke forklare lidt nærmere hvad du vil have, måske.

Jeg har set dit, men det kræver jo at du laver en asp side på begge servere.
Avatar billede -master-d- Nybegynder
19. maj 2002 - 23:05 #16
ups ,

Jeg har set dit link, men det kræver jo at du laver en asp side på begge servere.
Avatar billede Skynet Mester
24. maj 2002 - 21:18 #17
Spørgsmålet er ikke aktuelt længere, da min kunde p.t. har ændret strategi. Men spørgsmålet bliver måske aktuelt igen.
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