Access DSN-less forbindelse
Det smarteste er at gemme ens datakald i en include fil. På denne måde skal du kun ændre det et sted hvis du ønsker at skifte database, f.eks. til en SQL database.
<% strConnect = "Data Source=d:\home\FTPBrugernavn\db\database.mdb;Provider=Microsoft.Jet.OLEDB.4.0;" ' Følgende kode gør at du kan stoppe adgangen til databasen hvis du skal opdatere den. strUpdate = "no" If strUpdate = "yes" Then Response.Write "<p>Siden er under opdatering. Kom tilbage om 5 minutter.</p>" Response.End ' Alternativt kan du slette ovenstående 2 linier og istedet bruge nedenstående til at kalde en anden fil. ' Response.Redirect("update.htm") End If %>
Se avancerede muligheder for connection strings.
Et database udtræk
Her viser vi nogle navne fra en database som vi henter via vores connection string.
<html> <!-- #include file="database.inc" --> <head> <title>Contact information</title> </head> <body> <% Dim objConn Dim objRec Set objConn = Server.CreateObject ("ADODB.Connection") Set objRec = Server.CreateObject ("ADODB.Recordset") objConn.Open strConnect objRec.Open "Contact", objConn, 0, 1, 2 Do While Not objRec.EOF Response.Write objRec("Name") & "<br/>" objRec.MoveNext Loop objRec.Close objConn.Close Set objRec = Nothing Set objConn = Nothing %> </body> </html>
Hvordan gør jeg?
- Gem din connection string i en fil med filnavnet database.inc
- Gem database koden i en fil med filnavnet visdatabase.asp
- Gem databasen database.mdb i din /db folder, altså ikke under /www folderen
- Upload filerne til dit webhotel og åben siden visdatabase.asp.
FAQ
Når jeg forsøger at skrive i min access fil siger browseren "updateable query requested", "Operation must use an updateable query" eller "Cannot update. Database or object is read-only"
Dette betyder at du ikke har rettigheder til at skrive til databasen. Det kan enten være fordi du beder Access om at skrive data med et read-only kald eller fordi du ikke har skriverettigheder til databasen. Er problemet manglende skriverettigheder er det sandsynligvis fordi du ikke skriver i den korrekte folder. Du bør bruge folderen d:\home\ftpbrugernavn\db\ til databaser og på Windows Frontpage webhoteller skal databaser ligge i denne folder.
Min side siger 'provider error' eller .mdb databasen virker ikke?
Fejlbeskeden stammer fra din ODBC (OLE-DB) driver, du har sandsynligvis uploadet en ny Access database til din hjemmeside, samtidig med at en
bruger har forsøgt at tilgå den. Først skal det checkes at der ikke ligger nogen .ldb filer. Gør der det skal du slette dem. Evt. er
din applikation også 'crashet' og den skal derfor unloades, bed os om at gøre dette via
support formularen.
Du kan undgå disse crashes ved at lave 2 filer og indsætte en linie kode på alle de sider, som benytter databaseadgang:
update.htm
Denne fil skal indeholde den besked, du ønsker de besøgende skal få, mens du er ved at uploade den nye database. F.eks. "Siden er pt. under opdatering. Kom
tilbage om 5 minutter.
update.inc
Denne fil skal inkluderes på alle de sider, der benytter database adgang, og skal indeholde følgende kode:
<% update = "no" if update = "yes" then response.redirect("update.htm") end if %>Ændres update = "no" til update = "yes", vil brugeren automatisk blive redirigeret til update.htm siden.
Denne kode inkluderes på siderne ved at indsætte følgende på siderne:
<!-- #include file="update.inc" -->
Der ligger tit en .ldb fil med samme navn som min .mdb fil når jeg ftp-er ind, hvad er det?
Det er en fil som MS Access bruger til at holde styr på hvem der læser og skriver til databasen, dvs. det er Access der opretter og sletter filen og du kan derfor opleve den "komme og gå".
Hvorfor kan jeg ikke connecte til Access (ADODB.Connection error '800a0e7a', Provider cannot be found. It may not be properly installed.)?
Du bruger et ODBC kald der ikke er understøttet. Brug i stedet de langt hurtigere OLE-DB kald på connectionsupporten. På vores Windows 2000 servere med MDAC 2.6 installeret, understøttes ODBC forbindelser ikke længere.
Jeg kan ikke slette .ldb filen og mit site er 'gået ned', application restarting?
Dette er noget vi oplever fra tid til anden hvor Access bliver brugt (for) meget. For at undgå at det sker er det vigtigt at man undgår at redigere i databasen samtidig med at den bliver brugt ved brug af include filen beskrevet ovenfor. Det bedste er at skifte til MySQL der er en mere professionel løsning, dette kræver dog minimum et Ironsite SQL, se support på /support/mysql. Access er grundlæggende ikke bygget til brug på internettet, det kan aldrig anbefales og virker kun til mindre sites.
Hvad betyder 'Temporary (volatile) Jet DSN for process'?
Dette kan f.eks. betyde at din connection string ikke er korrekt. Nedenstående er et længere eksempel på 'fejl i connection string'.
Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x310 Thread 0x420 DBC 0xadb5024 Jet'. /default.asp, line 5
Er der ingen kodefejl så er det et generelt tegn på at du har nået grænsen for hvad Access kan klare, du anbefales at opgradere til MySQL. Der er support omkring opgradering på MySQL siderne.
Hvordan laver jeg en "SQL query" i Access?
I Access XP (2002) skal du starte en query, og derefter vælge SQL view. I oversigten: Queries > Create query in Design view > Close > SQL "knap" eller View > SQL View.