Avatar billede wilweb Nybegynder
06. maj 2002 - 00:32 Der er 20 kommentarer og
2 løsninger

DSN less forbindelse til Databasen

Min asp file til forbindelsen til databasen, ser således ud, og virker meget fint.

<% 
' ASP server-side code
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("data/db.mdb")
Conn.Open DSN
%>

Nu er det så jeg er kommet i tvivl!
Hvad hvis nu mine asp filer der skal have fordindelse til db'en ligger i en mappe "news"
så bør det vel se således ud!
DSN = DSN & "DBQ=" & Server.MapPath ("../data/db.mdb")
Men kan man det når det er en DNS Less forbindelse?

Det virker fint når jeg tester på min PC (MS 2000 PRO med IIS 5) men jeg får fejl når jeg uploader til min internet host.

Jeg har kun skrive rettigheder i mappen "data"
men jeg vil jo gerne at alle mine asp filer bliver placeret i mapper under det de hører til! (FX. alle filer der bruges til nyheds-mailen ligger i "news")

Er der nogen der har nogle idéer til hvad det kan være?
Avatar billede rune_c Nybegynder
06. maj 2002 - 00:42 #1
du kan fx gøre sådan her:

Lav en fil i dit data bibliotek der fx hedder db.asp der indeholder:

<%
Dim conn

Set conn = Server.CreateObject("ADODB.Connection");

Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("db.mdb")
%>

så skal du bare i dine file i toppen skrive:

<!-- #include file='data/db.asp' -->

og hvis du er i news mappen:

<!-- #include file='../data/db.asp' -->
Avatar billede wilweb Nybegynder
06. maj 2002 - 00:51 #2
Lyder godt som en god idé, jeg er gået i gang med at teste.
Vender tilbage.
:> Gizom
Avatar billede wilweb Nybegynder
06. maj 2002 - 01:17 #3
Jeg får denne fejl, når jeg tester fra news mappen
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] Could not find file '(unknown)'.
/e-test/Login/data/db_brugere.asp, line 6
Avatar billede rune_c Nybegynder
06. maj 2002 - 01:24 #4
hvad står der på linie 6?
Avatar billede rune_c Nybegynder
06. maj 2002 - 01:31 #5
hvordan er mappe strukturen?

/e-test
  /Login
      /data
        db_brugere.asp
      /news
        news.asp

??
Avatar billede tsunami Nybegynder
06. maj 2002 - 02:56 #6
gizom -----> Fordi ".." ikke virker hos din host er det nok fordi at din host har slået muligheden fra at bruge ".." i server.MapPath() på serveren....

Jeg har haft samme problem og lavede hurtigt et script til at komme uden om det....

<%
function GRMapPath(virtualURL)
    GetThisMapPath = Server.MapPath(Request.ServerVariables("SCRIPT_NAME"))
    GetThisMapPath = Split(GetThisMapPath, "\")
    virtualURL = Split(virtualURL, "/")
    counterWhereFileIs = Ubound(GetThisMapPath)
    for i = Ubound(virtualURL) to Lbound(virtualURL) Step -1
        if i = Ubound(virtualURL) then
            GetThisMapPath(Ubound(GetThisMapPath)) = virtualURL(i)
        elseif virtualURL(i) = ".." then
            if counterWhereFileIs > 0 then
                for x = counterWhereFileIs to Ubound(GetThisMapPath)
                    GetThisMapPath((x - 1)) = GetThisMapPath((x))
                Next
                counterWhereFileIs = counterWhereFileIs - 1
                Redim Preserve GetThisMapPath(Ubound(GetThisMapPath) - 1)
            End if
        elseif virtualURL(i) <> ".." then
            Redim Preserve GetThisMapPath(counterWhereFileIs + 1)
            GetThisMapPath(counterWhereFileIs + 1) = GetThisMapPath((counterWhereFileIs))
            GetThisMapPath(counterWhereFileIs) = virtualURL(i)
        End if
    Next
    ServerMapPathToFile = Join(GetThisMapPath, "/")
    GRMapPath = ServerMapPathToFile
End function
%>

Måske ikke de helt hensigtmæssige variablenavne og functions navn men jeg lavede altså også functionen på imellem 2-3 minutter

rune c ----> Grunden til at det ikke virker er fordi Databasen skal ligge i samme bibliotek som ASP filen pga. den leder db i den samme mappe som scriptet bliver includeret i.... så det trick med includerings filer virker ikke til at komme uden om det....
Avatar billede tsunami Nybegynder
06. maj 2002 - 02:58 #7
Glemte at sige at du skulle skrive GRMapPath("stinavn") istedet for Server.MapPath("stinavn").... her kan du bare bruge 2 punktummer i stien
Avatar billede mskjoldp Novice
06. maj 2002 - 07:57 #8
tsunami----> vil det hjælpe at kører det som en session i global.asa?? eller vil det samme problem opstå med ".."??

vh skjold
Avatar billede -master-d- Nybegynder
06. maj 2002 - 08:01 #9
Kan du ikke bare skrive

DSN = DSN & "DBQ=" & Server.MapPath ("/data/db.mdb")
Det tror jeg altså godt kan virke
Avatar billede wilweb Nybegynder
06. maj 2002 - 10:45 #10
Så er jeg tilbage, frisk og frejdig.
rune_c:> Mit mappestruktur
D:/minesite.dk/data
              db_brugere.asp
              db.mdb
              /Login
              loginform.asp     
              /news
              news.asp

tsunami:> det må jeg lige prøve!
-master-d- :> Jeg tror jeg har prøvet det, tester lige igen.
Avatar billede aspprogram Nybegynder
06. maj 2002 - 10:50 #11
hvad er forskellen på en DSN connection, og en almindelig connection... har ikke helt fattet forskellen
Avatar billede wilweb Nybegynder
06. maj 2002 - 11:07 #12
tsunami :> Høø, jeg tror ikke jeg helt har forstået det!
Skal din function ligge i min connection fil som jeg includer fra de forskellige asp sider i de forskellige mapper?
Gider du give mig et eksempel på hvordan jeg skal bruge det, hvis min database connection fil ligger i mappen 'data' sammen med databasen, og asp filerne i 'news' mappen, hvor jeg bruger <!-- #include file='../data/db.asp' -->
Begge mapper ligger i root.
På forhånd tak:>
Avatar billede wilweb Nybegynder
06. maj 2002 - 11:22 #13
aspprogram :> DSN connection er en database forbindelse som din internet host sætter op for dig, du er altså afhængig af en teknikker skal udføre noget for dig på serveren og det er ikke alle internet hoteller som tilbyder denne tjeneste.
Desuden kan en DNS connection gøre dit web-site en en smule langsommere.

Sådanne lave du en forbindelse med en DSN connection:

Set DataConn = Server.CreateObject("ADODB.Connection")
Set CmdAddRecord = Server.CreateObject("ADODB.Recordset")
DataConn.Open "DSN=Your_DSN_Name"

En DSN Less connection:
er vist flere gange i dette spørgemål, og min grund til at bruge den er at jeg ikke behøver at skulle have fat i en teknikker hos mit internet hotel, hver gang jeg vil oprette et ny database forbindelse. Men min erfaring siger også til mig at der kan gå flere ting galt med en DSN Less forbindelse.

Håber det hjælper lidt
:> Gizom
Avatar billede tsunami Nybegynder
06. maj 2002 - 12:45 #14
<%
function GRMapPath(virtualURL)
    GetThisMapPath = Server.MapPath(Request.ServerVariables("SCRIPT_NAME"))
    GetThisMapPath = Split(GetThisMapPath, "\")
    virtualURL = Split(virtualURL, "/")
    counterWhereFileIs = Ubound(GetThisMapPath)
    for i = Ubound(virtualURL) to Lbound(virtualURL) Step -1
        if i = Ubound(virtualURL) then
            GetThisMapPath(Ubound(GetThisMapPath)) = virtualURL(i)
        elseif virtualURL(i) = ".." then
            if counterWhereFileIs > 0 then
                for x = counterWhereFileIs to Ubound(GetThisMapPath)
                    GetThisMapPath((x - 1)) = GetThisMapPath((x))
                Next
                counterWhereFileIs = counterWhereFileIs - 1
                Redim Preserve GetThisMapPath(Ubound(GetThisMapPath) - 1)
            End if
        elseif virtualURL(i) <> ".." then
            Redim Preserve GetThisMapPath(counterWhereFileIs + 1)
            GetThisMapPath(counterWhereFileIs + 1) = GetThisMapPath((counterWhereFileIs))
            GetThisMapPath(counterWhereFileIs) = virtualURL(i)
        End if
    Next
    ServerMapPathToFile = Join(GetThisMapPath, "/")
    GRMapPath = ServerMapPathToFile
End function
 
' ASP server-side code
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & GRMapPath("../data/db.mdb")
Conn.Open DSN
%>
Sådan noget lignende... det er en function du skal have includeret på alle de sider du ønsker at bruge denne function.... det er en function som du kan bruge istedet for Server.MapPath hvis din Host har slået fra at du kan ikke kan bruge 2 punktummer i Server.MapPath... du kan lægge den i din include fil hvor du prøver at lave en connection til Databasen

Håber det hjalp på spørgsmålet :o)
Avatar billede wilweb Nybegynder
06. maj 2002 - 12:48 #15
Ja der fik jeg vist fat i den, jeg prøver lige
Avatar billede sup Nybegynder
06. maj 2002 - 18:51 #16
Du laver bare en include fil som f.eks hedder dbconnect.inc

DSN skal stå på en linie.
Her forudsætter jeg at db.mdb ligger i samme mappe som dbconnect.inc
<%
DSN = "Data Source=" & Server.Mappath("db.mdb") & ";Provider=Microsoft.Jet.OLEDB.4.0;"
%>

Så includer du bare filen i toppen af de asp sider hvor du skal
bruge databasen.

Din include fil og databasen ligger i data.
Her står du f.eks i news mappen hvor nogle asp filer skal bruge db'en.

<!-- #INCLUDE FILE="../data/dbconnect.inc" -->

set conn = Server.CreateObject( "ADODB.Connection" )
conn.open DSN
Avatar billede tsunami Nybegynder
06. maj 2002 - 19:10 #17
sup ---> kan man ikke for Server.MapPath tager stien fra den fil som den bliver includet i så derfor har du et problem hvis du køre include filen i en ASP fil i et andet bibliotek....
Avatar billede wilweb Nybegynder
06. maj 2002 - 20:00 #18
Jeg tror det var min internet host der hevde fucket i det.
nu virker det fint med:
<% 
' ASP server-side code
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../data/db.mdb")
Conn.Open DSN
%>
Jeg deler point imellem jer alle,. ÅK ellers skrig op
Avatar billede tsunami Nybegynder
06. maj 2002 - 20:02 #19
Hehe...
Avatar billede wilweb Nybegynder
06. maj 2002 - 20:02 #20
Herved mener jeg rune_c og tsunami
Håber det er ÅK.
:>Gizom
Avatar billede tsunami Nybegynder
06. maj 2002 - 20:04 #21
Ok... fint fint... dit problem blev løst... :o)
Avatar billede wilweb Nybegynder
06. maj 2002 - 20:09 #22
Ja, et af disser her mystiske IT problemer.
Men JA det blev løst
Tak
:Gizom
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