Mig veteligen är det Vides förslag som är att rekommendera,
dock skriver jag ut den så här då jag tycker det ser enklare ut:
[RED]Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("databas.mdb")
'// Gör en massa saker..
Connect.Close
Set Connect = Nothing[/RED]
Jet Oledb 4.0 har funnits i många år. Tyvärr finns det fortfarande "klåpare" som använder sig av den "förkastilga" gamla access-drivern.
Jet Oledb 4.0 har typ 100 ggr så bra prestanda mot drivern. Finns en artikel ngnstans på 4guys som jag tyvärr inte hitta nu (finns ett par st där att leta bland) där de har ett performence test med olika drivisar och Jet 4 "vann" överlägset.
Så, använd Jet Oledb 4 sättet.
Den med att skriva in sökvägen direkt i öppnandet av recordsetet kan man oxå göra om det är ända hämtningen mot db.
Har inte sett eller gjort egna test med den varianten men kan tänka mig att connectionen skapas i ADODB.Recordset komponenten .....
Ett lätt sätt är ju att själv köra olika sorters test. Finns beskrivet i massor här på forumet. Sök på Timer() ..... blir nog en hel del :e
driver={Microsoft Access Driver (*.mdb)}; är en ODBC-driver.
Provider = Microsoft.Jet.OLEDB.4.0 är en OLEDB-driver.
OLEDB är en nyare standard för databasdrivisar än ODBC.
Nya standarder är oftast bättre/snabbare/stabilare än gamla standarder. I det enskilda fallet beror det naturligtvis på vem som skrivit drivern, men i detta fallet är Microsoft som skrivit båda. Av detta skäl bör man välja OLEDB-drivern.
ADO:n som oftast används i ASP har inget stöd för att direkt tala med ODBC-drivers. Väljer man ändå en sådan kommer ADO:n att lägga in en generell mellan-driver (en brygga). Detta ger ett onödigt mellanlager och är ytterligare en anledning till att välja OLEDB-drivern när man använder ADO:n.
men det de lär ut är inte hellt funkis enligt er gurus. Dessutom lär de ut på olika sätt*suck och stön*
Jag tror inte du behöver krångla till det så mycket. Antagligen ser deras öppning av databasen annorlunda ut (de använder kanske en annan driver), men dett påverkar inte resten av koden nämnvärt. Kör med Jet OLEDB:n tills dess att den specifika koden i exemplena kräver (som niko sa ovan) att du kör ODBC.
Patrik: är väl medveten om "dubbelpostning", men i detta fall gjorde jag bedömningen att dubbelposting var försvarligt eftersom det hängde ihop med båda trådarna!*ler*
Däremot undrar jag över kodsnutten:
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("databas.mdb")
'// Gör en massa saker..
Connect.Close
Set Connect = Nothing
räcker det verkligen med Seerver.MapPath("databas.mdb")?
varför inte Server.MapPath( "/cgi-bin/databas.mdb" ) ?
eller c:\inetpub\wwwroot\databas\adressbok.mdb
och varför inte det - tacksam för "pedagogisk" förklaring
Vill du bygga en dynamisk webbplats som har stöd för att flyttas till andra servrar som inte har samma fysiska katalogstruktur som din egen, då måste du använda server.mappath. Och ja, de räcker att skriva bara namnet på databasen, förutsatt att den ligger i samma mapp som den anropas ifrån. I en cgi-bin-mapp ser jag ingen anledning att ha en databas i, döp den till 'data' istället och lägg den där i, eller ännu bättre, utanför webbroten.
På Brinkster lärdu inteha en chans att lägga den utanför webbroten, där har jag för mig att du till och med måste placera den i en speciell mapp. (Med läs o skrivrättigheter.)
På Brinkster lärdu inteha en chans att lägga den utanför webbroten, där har jag för mig att du till och med måste placera den i en speciell mapp. (Med läs o skrivrättigheter.)
Joo, det stämmer. Jag själv har ju min sida på brinkster (ve och fasa ;)), och man MÅSTE placera databaser (och filer man skapar/skriver till med hjälp av FSO) i en mapp som heter db. Sorligt säger jag bara :p
Hur det ser ut på Brinkster vet jag inte, men jag kan anta att din rootkatalog inte är wwwroot, utan ett namn, vilket inte skall spela någon roll om personerna på Brinkster konfigurerat rätt. ;)
PS. Du skall inte ha Set framför när du tilldelar en variabel en sträng, endast när du tilldelar en variabel ett objekt. DS.
Hur det ser ut på Brinkster vet jag inte, men jag kan anta att din rootkatalog inte är wwwroot, utan ett namn, vilket inte skall spela någon roll om personerna på Brinkster konfigurerat rätt. ;)
Känns pålitligt ;)
MapPath — to map the current virtual path to a physical directory structure. You can then pass that path to a component that creates the specified directory or file on the server.
Data Source ="& server.mappath("/") & "\db\databas.mdb"
Data Source är en paramenter till ADO. Du tilldelar den värdet av en sökväg.
Server.MapPath("/") åter ger en sträng som innehåller den lokala sökvägen till den virtuella root du står i.
T.ex: "C:\inetpub\wwwroot"
Till detta häktar vi på en sträng för att fullborda sökvägen till databasen.
server.mappath("/") & "\db\databas.mdb"
... blir...
"C:\inetpub\wwwroot\db\databas.mdb"
Alltså den sökvägen till databasen. Du kan anropa denna kodsnutt i vilken mappstruktur som helst under samma root och ändå få samma sökväg.
Du skall inte ha Set framför när du tilldelar en variabel en sträng, endast när du tilldelar en variabel ett objekt
vet att detta är ett ASP-forum, men har ni förslag på en pedagogisk och bra bok i SQL?
Hur variabler i VBS fungerar har inget med SQL att göra. :)
Jag personligen har än så länge inte hittat någon bok som håller något bra mått, men det lär finnas, det får någon annan tipsa som inte är så kritisk. ;)
135 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17