/ Forside/ Teknologi / Udvikling / ASP / Spørgsmål
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
problemer med ASP og DB
Fra : Splazz
Vist : 823 gange
50 point
Dato : 18-11-02 11:43

jeg har lært lidt ASP på det sidste og er blevet lidt "bidt" af det, og nu er jeg kommet til databaser... jeg har indtil videre det hele liggende på min egen maskine.

jeg har følgende kode:

1 <html>
2 <head>
3 <title>DB</title>
4 </head>
5
6 <body>
7 <h1>Database</h1>
8
9 <%
10 strSQL = "SELECT * FROM personer"
11 set conn = server.createobject("adodb.connection")
12 DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=(c:/inetpub/wwwroot/tutorial.mdb)"
13 conn.open()
14
15 conn.execute(strSQL)
16
17 do
18   response.write rs("Fornavn") & "<br>"
19   rs.movenext
20 loop while not rs.eof
21
22 conn.close
23 set conn = nothing
24 %>
25 </body>
26 </html>

men den siger at der er fejl i linje 13

hvad gør jeg??

mvh Sp|aZZ

 
 
Kommentar
Fra : strarup


Dato : 18-11-02 12:01

Hej Splazz,

har du din database liggende i mappen c:\inetpub\wwwroot\?
hvis du ikke har, ska' du ændre linjen til hvor du har din database liggende... derudover vender "slashen" forkert når den linker til en fil på harddisken så er det "\" istedet for "/"...

hvorimod hvis du uploader den til et webhotel eller ikke selv hoster din side på din egen server, er det ikke så smart, at ha' den til at linke til din harddisk, idet den så ikke ka' få fat iden...

mvh.

Strarup


Kommentar
Fra : Nyhedsbruger


Dato : 18-11-02 11:46

Splazz wrote :

> 10 strSQL = "SELECT * FROM personer"
> 11 set conn = server.createobject("adodb.connection")
> 12 DSN = "DRIVER={Microsoft Access Driver (*.mdb)};
> DBQ=(c:/inetpub/wwwroot/tutorial.mdb)"
> 13 conn.open()
>
> men den siger at der er fejl i linje 13
>
> hvad gør jeg??

du kan ikke "blot" afvikle din SQL imod din database. Svaret fra
databasen kommer i i dette tilfælde i form af et "Recordset", og du skal
derfor "putte" resultatet over i en variabel. Dette gøres således:

dim rs
set rs = conn.Execute(strSQL)

Og i øvrigt:

Det er ikke en god idé at bruge "stjerne-angivelsen" ved udtræk fra din
tabel. Skriv i stedet eksplicit, hvilke felter du henter ud, dvs som

strSQL = "SELECT felt1,felt2,felt3 FROM personer"

Se i øvrigt artiklen http://asp-faq.dk/article/?id=9



--
Jesper Stocholm
http://stocholm.dk
Ny FAQ for dk.edb.internet.webdesign.serverside.asp
se http://asp-faq.dk

Kommentar
Fra : Random


Dato : 18-11-02 12:32

Du kan evt. prøve denne syntaks, hvis Strarups tip ikke skulle gøre det:

SET conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("tutorial.mdb")

Der skal du blot have din database i samme mappe som din *.asp fil på serveren eller på Harddisken.

Mvh
rnd()

Kommentar
Fra : Splazz


Dato : 18-11-02 13:14

nu står der følgende:

strSQL = "SELECT Fornavn FROM personer"
set conn = server.createobject("adodb.connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("tutorial.mdb")
conn.open()
dim rs
set rs=conn.execute(strSQL)

men den siger stadig at der er følgende fejl i linje 13:

"Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Driver Manager] Datakildenavnet blev ikke fundet, og der er ikke angivet en standarddriver.
"

Sp|aZZ

Kommentar
Fra : Nyhedsbruger


Dato : 18-11-02 12:40

Jesper Stocholm skrev:

[Splazz]
>> 10 strSQL = "SELECT * FROM personer"

Her defineres din sqlsætning - alt o.k.

>> 11 set conn = server.createobject("adodb.connection")

Her laver du en connectionvariabel til at skabe forbindelsen.

>> 12 DSN = "DRIVER={Microsoft Access Driver (*.mdb)};
>> DBQ=(c:/inetpub/wwwroot/tutorial.mdb)"

Her er de parametre som conn-objektet skal bruge for at lave
forbindelsen. Men - det er også her det går galt, får du skaber
ingen forbindelse mellem linje 11 og linje 12. Udskift "DSN" med
"conn.Connectionstring" for at knytte parametrene til dit
connectionobjekt.

>> 13 conn.open()

Det er også muligt at du bare kan skrive Conn.Open DSN (med din
nuværende linje 12. Jeg vil dog anbefale at ændre linje 12 og lade
linje 13 stå - som beskrevet ovenfor.


> du kan ikke "blot" afvikle din SQL imod din database. Svaret
> fra databasen kommer i i dette tilfælde i form af et
> "Recordset", og du skal derfor "putte" resultatet over i en
> variabel. Dette gøres således:

Koden fejler før han når til at hente data - men ellers er
indvendingen jo rigtig nok.

> dim rs
> set rs = conn.Execute(strSQL)

Man kan også bruge følgende:

Dim rs
set rs = server.createobject("adodb.recordset")
rs.Open strSQL, conn

Jeg er ikke klar over hvor stor forskel det gør.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Kommentar
Fra : Nyhedsbruger


Dato : 18-11-02 12:42

Jens Gyldenkærne Clausen skrev:

> Men - det er også her det går galt, får du skaber
> ingen forbindelse mellem linje 11 og linje 12.

Argh! - mæh si'r det lille lam.

s/får/for/ (erstat venligst får med for)
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Kommentar
Fra : Nyhedsbruger


Dato : 18-11-02 13:08

Jens Gyldenkærne Clausen wrote :

> Koden fejler før han når til at hente data - men ellers er
> indvendingen jo rigtig nok.

det er skisme korrekt ... jeg var lige lidt hurtig til at svare. Det
skyldes sikkert, at jeg sad med hovedet i fejlen omtalt i indlægget
<news:Xns92CA6C3AAE78Espamstocholmdk@130.226.1.34> - som jeg i parentes
bemærket endnu ikke har fundet en løsning på.



--
Jesper Stocholm
http://stocholm.dk
Ny FAQ for dk.edb.internet.webdesign.serverside.asp
se http://asp-faq.dk

Kommentar
Fra : Splazz


Dato : 18-11-02 13:47

nu har jeg prøvet at skrive som følger:

strSQL = "SELECT Fornavn FROM personer"
set conn = server.createobject("adodb.connection")
conn.Connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("tutorial.mdb")
conn.open()

Dim rs
set rs = server.createobject("adodb.recordset")
rs.Open strSQL, conn

men der kommer stadig denne fejl i linje 13:

"Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access-driver]Der opstod en generel fejl. Registreringsnøglen Temporary (volatile) Jet DSN for process 0x448 Thread 0x310 DBC 0x12f1024 Jet kan ikke åbnes"

--hjælp-- :)

Kommentar
Fra : Famuz


Dato : 26-11-02 18:55

ok jeg tror jeg har svaret på dit problem

først og fremmest så skal du tjekke om den mappe din database ligger i må læses fra - det tjekker du ved at finde mappen egenskaber, klikke web sharing, finde en knap der hedder edit og der kan du vælge forskellige ting - så marker lige Read....

så har jeg også lige omskrevet dit script så det virker som det skal:

<html>
<head>
<title>DB</title>
</head>

<body>
<h1>Database</h1>

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("tutorial.mdb"))

conn.execute "SELECT * FROM personer"

do until rs.eof
response.write rs("Fornavn") & "<br>"
rs.movenext
loop

conn.close
set conn = nothing
%>
</body>
</html>

------------------------------

Hvis du tidligere har haft programmer så som Microsoft Visual Studio eller den nye Visual Studio.NET så kan det også være skyld i dit problem. efter jeg afinstallerede visual studio så kunne jeg ikke længere køre access databaser. det samme gælder min far som havde visual studio.net og afinstallerede det - derefter kunne han heller ikke køre access længere på sin computer. jeg har endnu ikke fundet nogen løsning på dette problem og det er nok også fordi jeg ikke har gidet - jeg er gået over til mysql som er meget bedre end access =) men har du haft visual studio så synes jeg du skal geninstallere microsoft access. så tror jeg det vil virke.

håber det kan bruges til noget

/Famuz



Kommentar
Fra : Famuz


Dato : 27-11-02 08:29

Jeg vil egentlig gerne poste ovenstående kode som et svar - det var min første gang her på kandu og jeg havde ikke lige tjekket det der med superbruger og sådan... men hvis du kan bruge det til noget så ville jeg blive enormt glad hvis du ville acceptere det her som et svar..

/Famuz

Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177438
Tips : 31962
Nyheder : 719565
Indlæg : 6408047
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste