/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Generelt databasekald
Fra : Jens R. rasmussen


Dato : 19-03-09 17:19

Hej/

Jeg er stødt ind i et mindre bekvemmelighedsproblem, som I
sikkert kan hjælpe mig med.

Jeg udvikler mine sider på min egen (server)pc - og når de
virker, uploader jeg dem til mit web-hotel hos wannafind.

Jeg begyndte med asp-sider for en måneds tid siden og er nu i
fuld gang med databasekald. Jeg har blandt anden en asp-side, der
henter nogle arrangementsnavne fra min access-database
(vvvdb.mdb) og giver brugeren - i en drop-down-boks - mulighed
for at vælge det arrangement, han vil have.

Og det virker fint på min egen pc, hvor jeg kalder min lokale
accessdatabase således:
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
Server.MapPath("/database/vvvdb.mdb")
Conn.Open DSN

Når jeg så uploader det til webhotellet hos wannafind virker det
ikke. I deres FAQ kan jeg se, at de foreskriver et lidt andet
kald nemlig:

dbpath = "d:/web/vinvenner.dk/database/vvvdb.mdb"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
dbpath

Hvis jeg skræller det væk, hvor vi er enige, bliver der alene
nedenstående forskel tilbage:

Min lokale
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
Server.MapPath("/database/vvvdb.mdb")

Hos wannafind
DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
"d:/web/vinvenner.dk/database/vvvdb.mdb"

Jeg har bedt Wannafind om hjælp - men efter et par ikke-hjælpende
mails opgav de at besvare på spørgsmålet: "Er det ikke muligt at
lave et generelt databasekald, som både virker, når jeg kalder
lokalt, og når jeg kalder globalt. For imodsat fald er jeg jo
nødt til at ændre alle steder, hvor jeg kalder databasen, hver
gang jeg skifter fra lokal udvikling til extern kørsel."

Til orientering
- man kan se siden (med wannafinds ændringer) på
vinvenner.dk/tilmelding7.asp

- min dokumentstruktur er
../vvv/tilmelding7.asp
../vvv/database/vvvdb.msb

Kan I hjælpe?

mvh
/jens



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Leif Neland (19-03-2009)
Kommentar
Fra : Leif Neland


Dato : 19-03-09 17:51

Jens R. rasmussen skrev:
> Hej/
>
> Jeg er stødt ind i et mindre bekvemmelighedsproblem, som I
> sikkert kan hjælpe mig med.
>
> Jeg udvikler mine sider på min egen (server)pc - og når de
> virker, uploader jeg dem til mit web-hotel hos wannafind.
>

> Min lokale
> DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
> Server.MapPath("/database/vvvdb.mdb")
>
> Hos wannafind
> DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
> "d:/web/vinvenner.dk/database/vvvdb.mdb"
>
>
> Jeg har bedt Wannafind om hjælp - men efter et par ikke-hjælpende
> mails opgav de at besvare på spørgsmålet: "Er det ikke muligt at
> lave et generelt databasekald, som både virker, når jeg kalder
> lokalt, og når jeg kalder globalt. For imodsat fald er jeg jo
> nødt til at ændre alle steder, hvor jeg kalder databasen, hver
> gang jeg skifter fra lokal udvikling til extern kørsel."
>
I hver fil, du bruger databasen, skriver du dette i toppen:

<!--#include virtual="/include/dbcon.asp"-->



Så er der kun i /include/dbcon.asp, du skal rette.
Du sørger så for at lade være med at uploade denne fil hver gang du
uploader rettelser.

Jeg kan forestille mig andre variable, der er afhængig af om du er
lokalt eller globalt, f.ex. hvilken mailserver, der skal bruges, hvem
der skal modtage mails fra formularer (specielt hvis du udvikler for
andre.) Men sådant har du vel allerede i en separat configfil, så man
ikke skal ind i 27 filer, hvis der skal ændres en emailadresse.

Du kan jo endda lave
if jeg_kører_lokalt then
DSN = "...."
MAILSERVER = "...."
ADMINMAIL = "...."
else
DSN = "...."
....
end if

Du kan bruge en af Request.ServerVariables() til at afgøre
jeg_kører_lokalt, f.ex.

Request.ServerVariables('APPL_PHYSICAL_PATH')
(eks: "D:\Inetpub\WWWROOT\APSP01\ASP101\www\samples\")

Andre muligheder er
INSTANCE_ID (f.ex. 40)
LOCAL_ADDR (f.ex. 10.2.83.62)

Disse værdier burde ikke ændre sig, men altid have en værdi lokalt og en
anden hos webhosten pr webhotel.

Du kan se nærmere på http://www.asp101.com/samples/servvars.asp hvor jeg
har hentet ovenstående eksempler.

Leif



Jens R. rasmussen (19-03-2009)
Kommentar
Fra : Jens R. rasmussen


Dato : 19-03-09 21:59

Leif Neland wrote in dk.edb.internet.webdesign.serverside.asp:
> Jens R. rasmussen skrev:
> > Hej/
> >
> > Jeg er stødt ind i et mindre bekvemmelighedsproblem, som I
> > sikkert kan hjælpe mig med.
> >
> > Jeg udvikler mine sider på min egen (server)pc - og når de
> > virker, uploader jeg dem til mit web-hotel hos wannafind.
> >
>
> > Min lokale
> > DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
> > Server.MapPath("/database/vvvdb.mdb")
> >
> > Hos wannafind
> > DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
> > "d:/web/vinvenner.dk/database/vvvdb.mdb"
> >
> >
> > Jeg har bedt Wannafind om hjælp - men efter et par ikke-hjælpende
> > mails opgav de at besvare på spørgsmålet: "Er det ikke muligt at
> > lave et generelt databasekald, som både virker, når jeg kalder
> > lokalt, og når jeg kalder globalt. For imodsat fald er jeg jo
> > nødt til at ændre alle steder, hvor jeg kalder databasen, hver
> > gang jeg skifter fra lokal udvikling til extern kørsel."
> >
> I hver fil, du bruger databasen, skriver du dette i toppen:
>
> <!--#include virtual="/include/dbcon.asp"-->
>
>
>
> Så er der kun i /include/dbcon.asp, du skal rette.
> Du sørger så for at lade være med at uploade denne fil hver gang du
> uploader rettelser.
>
> Jeg kan forestille mig andre variable, der er afhængig af om du er
> lokalt eller globalt, f.ex. hvilken mailserver, der skal bruges, hvem
> der skal modtage mails fra formularer (specielt hvis du udvikler for
> andre.) Men sådant har du vel allerede i en separat configfil, så man
> ikke skal ind i 27 filer, hvis der skal ændres en emailadresse.
>
> Du kan jo endda lave
> if jeg_kører_lokalt then
> DSN = "...."
> MAILSERVER = "...."
> ADMINMAIL = "...."
> else
> DSN = "...."
> ....
> end if
>
> Du kan bruge en af Request.ServerVariables() til at afgøre
> jeg_kører_lokalt, f.ex.
>
> Request.ServerVariables('APPL_PHYSICAL_PATH')
> (eks: "D:\Inetpub\WWWROOT\APSP01\ASP101\www\samples\")
>
> Andre muligheder er
> INSTANCE_ID (f.ex. 40)
> LOCAL_ADDR (f.ex. 10.2.83.62)
>
> Disse værdier burde ikke ændre sig, men altid have en værdi lokalt og en
> anden hos webhosten pr webhotel.
>
> Du kan se nærmere på http://www.asp101.com/samples/servvars.asp hvor jeg
> har hentet ovenstående eksempler.
>
> Leif

Mange tak Leif. Det virker perfekt med en include (da jeg skal bruge
databasekald i flere forskellige filer)til at hente DSN. Den inkluderede fil
henter så LOCAL_ADDR og afhængig af svaret laver den "lokale" DSN eller den
"Remote" DSN.

mvh
Jens

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (21-03-2009)
Kommentar
Fra : Jørn Andersen


Dato : 21-03-09 04:54

On 19 Mar 2009 16:18:34 GMT, Jens R. rasmussen
<Jens.R.Rasmussen@uni-c.dk> wrote:

Selv om dit problem ser ud til at være løst, så lige et par kommentarer:

>Hvis jeg skræller det væk, hvor vi er enige, bliver der alene
>nedenstående forskel tilbage:
>
>Min lokale
>DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
>Server.MapPath("/database/vvvdb.mdb")
>
>Hos wannafind
>DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
>"d:/web/vinvenner.dk/database/vvvdb.mdb"

I ovenstående er der to forskelle:
a) måden du kalder databasen
b) stien

Den øverste sti giver udskrevet:
d:/web/vinvenner.dk/www/database/vvvdb.mdb
mens den nederste forudsætter, at databasen ligger i mappen "database",
som ligger parallelt med www-mappen.
- forudsat, at din mappestruktur svarer til Wannafind's
standard-struktur:
/
/database
/www (webrod)

Wannafind's sti forusætter altså, at du har placeret databasen i
ovennævnte mappe "database" - hvilket oftest er en fordel, da den så
ikke er tilgængelig fra www.
Om du har det er lidt svært at gætte, da dine oplysninger er lidt
tvetydige

Hvis man er i tvivl om, hvad webroden er, er den nem at udskrive med:
Response.Write Server.MapPath("/")
Tilsvarende, hvis man vil udskrive den aktuelle mappe:
Response.Write Server.MapPath("./")


Good luck!

--
Jørn Andersen,
Brønshøj

Jens R. rasmussen (21-03-2009)
Kommentar
Fra : Jens R. rasmussen


Dato : 21-03-09 15:50

Jørn Andersen wrote in dk.edb.internet.webdesign.serverside.asp:
> On 19 Mar 2009 16:18:34 GMT, Jens R. rasmussen
> <Jens.R.Rasmussen@uni-c.dk> wrote:
>
> Selv om dit problem ser ud til at være løst, så lige et par kommentarer:
>
> >Hvis jeg skræller det væk, hvor vi er enige, bliver der alene
> >nedenstående forskel tilbage:
> >
> >Min lokale
> >DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
> >Server.MapPath("/database/vvvdb.mdb")
> >
> >Hos wannafind
> >DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
> >"d:/web/vinvenner.dk/database/vvvdb.mdb"
>
> I ovenstående er der to forskelle:
> a) måden du kalder databasen
> b) stien
>
> Den øverste sti giver udskrevet:
> d:/web/vinvenner.dk/www/database/vvvdb.mdb
> mens den nederste forudsætter, at databasen ligger i mappen "database",
> som ligger parallelt med www-mappen.
> - forudsat, at din mappestruktur svarer til Wannafind's
> standard-struktur:
> /
> /database
> /www (webrod)
>
> Wannafind's sti forusætter altså, at du har placeret databasen i
> ovennævnte mappe "database" - hvilket oftest er en fordel, da den så
> ikke er tilgængelig fra www.
> Om du har det er lidt svært at gætte, da dine oplysninger er lidt
> tvetydige
>
> Hvis man er i tvivl om, hvad webroden er, er den nem at udskrive med:
> Response.Write Server.MapPath("/")
> Tilsvarende, hvis man vil udskrive den aktuelle mappe:
> Response.Write Server.MapPath("./")
>
>
> Good luck!
>
> --
> Jørn Andersen,
> Brønshøj

hej Jørn Andersen, Brønshøj
Tak fordi du gad svare - men jeg er jo også gammel Vanløser - så det er nok
derfor

Du havde ganske ret. Jeg troede min mappeopbygning var identisk med
Wannafind, men det var den ikke. Men det er den nu (håber jeg)

Min web-rod: c:\inetpub\wwwroot
Mine aktuelle mappe C.\inetpubwwwroot
Min databasemappe: C:\inetpub\database

Og hos Wannafind ligger de således:
D:\web\vinvenner.dk\www
D:\web\vinvenner.dk\www
D:\web\database

og det gør så også at jeg har måtte korrigere mine DSN'er, som nu lyder:

lserveradresse = Request.ServerVariables("LOCAL_ADDR")
rserveradresse = Request.ServerVariables("REMOTE_ADDR")

If lserveradresse=rserveradresse Then
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
Server.MapPath("../database/vvvdb.mdb")
Else
DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
"d:/web/vinvenner.dk/database/vvvdb.mdb"
End If

For jeg går ud fra at selvom om mappeopbygningen nu ligner hinanden er jeg
formodentlig stadig nød til at kalde databasen med 2 forskellige DSN'er.

Men tak for du gjorde mig opmærksom på forskellen.

/Jens, tidl. Vanløse (Bellahøjvej - tæt på Brønshøj

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177549
Tips : 31968
Nyheder : 719565
Indlæg : 6408820
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste