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?
Efter ti år i London, Madrid, Paris og Utrecht kommer Sabios AI-fokuserede program af arrangementer om kundeoplevelser, ‘Disrupt’, for første gang til Danmark.
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
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....
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:>
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.
<% 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
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
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....
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
Ja, et af disser her mystiske IT problemer. Men JA det blev løst Tak :Gizom
Synes godt om
Ny brugerNybegynder
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.