Just nu i M3-nätverket
Gå till innehåll

Ha ha ha!


.sun

Rekommendera Poster

Tjohej!

 

Sitter och labbar med connectionstring till en Accessdatabas.

 

Följande sträng funkar fint när jag har ett ADODB.Connection-objekt:

 

"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("databas.mdb")

 

Dock är min Accessdatabas lösenordsskyddad, så jag ändra strängen enl följande:

 

"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("databas.mdb") & "Pwd=lösenord"

 

Felmeddelandet löd:

Provider error '8000ffff'

 

Catastrophic failure

 

/test.asp, line 12

 

Rad tolv är inte oväntat den rad där jag kör Open. Men alltså allvarligt - vaddå catastrophic failure? Brann webbservern upp eller vad var det som var så katastrofalt?

 

Seriöst - varför funkar inte lösenordet?

 

Delfråga: Den första kodsnutten funkar bara på ADODB.Connection. Går jag direkt till ADODB.Recordset och sätter ActiveConnection så får jag följande fel:

 

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

 

[Microsoft][ODBC Driver Manager] Datakällan hittades inte och ingen standarddrivrutin är angiven

 

Que?

 

[inlägget ändrat 2003-03-19 11:29:09 av .sun]

Länk till kommentar
Dela på andra webbplatser

Det är väl Password och inte Pwd som skall användas.

 

Så här har jag gjort...

 

objConnection.Open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & strCurrentDatabase, Password:="mypass")

 

/Jocke

 

"Shit! What? Rollers. No? Yeah. Shit!" - Blues Brothers

 

 

[inlägget ändrat 2003-03-19 11:41:14 av jockesoft]

Länk till kommentar
Dela på andra webbplatser

Om jag skriver Pwd eller Password gör ingen skillnad - resultatet är ändå katastrofalt.

 

Dessutom står det i dok att det ska vara Password, men båda kanske funkar. Inget funkar dock för mig...

 

Länk till kommentar
Dela på andra webbplatser

Du får väl söka på webben och se vad du hittar med det felmeddelandet.

 

Sen ser du nog själv vad som är fel i din sträng, den blir så här:

 

"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\blaha\blaha.mdbPwd=lösenord"

 

Dvs det saknas en ; efter sökvägen.

 

[inlägget ändrat 2003-03-19 12:40:14 av qwerty99]

Länk till kommentar
Dela på andra webbplatser

Tamejfan, du hade rätt! Det var semikolonet som fattades. Guuu så katastrofalt!

 

Men, en följdfråga då: Min connectionstring funkar enbart med ADODB.Connection. Om jag försöker med ADODB.Recordset och sätter ActiveConnection till ovanstående så får jag felmeddelandet:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

 

[Microsoft][ODBC Driver Manager] Datakällan hittades inte och ingen standarddrivrutin är angiven

 

Måste jag gå omvägen via ADODB.Connection?

[inlägget ändrat 2003-03-20 08:20:12 av .sun]

Länk till kommentar
Dela på andra webbplatser

Magnus Gladh
Måste jag gå omvägen via ADODB.Connection?

 

Jag förstår inte vad du menar. Men JA du måste ha en connection för att kunna koppla dig mot en databas.

 

Tänkt dig att din websida är ditt hus, din databas en affär, ditt recordset din bil, och connection din karta till affären.

 

Utan kartan så kan du inte hitta till affären. Utan bilen kan du inte hämta någon mat.

 

Så du är beroende av båda, det kommer du aldrig ifrån.

 

Guuu så katastrofalt!

 

Tja om vi hänvisar till ovan, så istället för att komma fram till affären så kör du till en plats som inte finns. Så japp, man skulle nog kunna säga att det är en katastrof, speciellt om det är fredagskväll och det är systemet man skulle till :)

 

- Magnus

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

Jag är inte kaxig, jag är bara så jävla bäst...

 

[inlägget ändrat 2003-03-20 12:50:53 av Magnus Gladh]

Länk till kommentar
Dela på andra webbplatser

Jag förstår inte vad du menar. Men JA du måste ha en connection för att kunna koppla dig mot en databas.

 

Det jag menar är att jag normalt gör följande:

Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = "min jättefina cs"
rs.Source = "min SQL-sats"
rs.Open

 

Således har jag ju med min connection, men jag slipper skapa ett ADODB.Connection. Detta verkar dock inte funka, utan jag måste göra ovanstående på följande vis:

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open("min jättefina cs")
Set rs = Server.CreateObject("ADODB.Recordset")
rs = conn.Execute("min SQL-sats")

 

Visst, det ju inte massor med mer jobb, men ändå. Har alltid kunnat köra Recordset direkt, men inte nu tydligen.

 

Sen vad gäller "catastrophic failure" så syftade mitt lilla skrattanfall på det klart otydliga felmeddelandets natur. En katastrof har inträffat. Det är allt jag får veta. Inte vad för katastrof, vad som orsakade den, eller vad jag kan göra för att åtgärda felet. Ta t ex felmeddelandet "invalid password" - det innebär ju också att jag inte kommer åt den info jag vill, men här har jag ju iaf en suck att lista ut vad som gått snett.

 

"Catastrophic failure" är så intetsägande som felmeddelande att jag bara kunde skratta åt saken. Vid närmare eftertanke skulle jag dock vilja ha ett litet snack med idioten som bestämde att det skulle stå så.

 

Länk till kommentar
Dela på andra webbplatser

Magnus Gladh
Set rs = Server.CreateObject("ADODB.Recordset")

rs.ActiveConnection = "min jättefina cs"

rs.Source = "min SQL-sats"

rs.Open

 

Det kan aldrig ha fungerat, iallfall så skall det inte fungera. Och det beror på att rs.ActiveConnection kräver ett connection object och inte en "connection string"

 

Du kan däremot skicka in ett connection-objekt.

Set oConnection = Server.CreateObject("ADODB.Connection")
oConnection.open "CONNECTION_STRING"

Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = oConnection
rs.Source = "min SQL-sats"
rs.Open

 

- Magnus

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

Jag är inte kaxig, jag är bara så jävla bäst...

 

Länk till kommentar
Dela på andra webbplatser

Det kan aldrig ha fungerat, iallfall så skall det inte fungera. Och det beror på att rs.ActiveConnection kräver ett connection object och inte en "connection string"

 

Ledsen Magnus, men du har fel. Det går visst att köra utan ADODB.Connection. Följande har jag använt på ett 20-tal ASP-sidor utan knorr:

 

Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = "Provider=SQLOLEDB;Data Source=servernamn;Initial Catalog=databasnamn;uid=användare;password=lösenord"
rs.Source = "SELECT * FROM tabellnamn WHERE kolumn = värde"
rs.Open

 

Om ett Connectionobjekt skapas under huven kan jag inte svara på, men ovanstående funkar - man måste inte skapa en connection. Sådeså.

 

Länk till kommentar
Dela på andra webbplatser

Magnus Gladh

Där ser man...

 

Efter ha läst på lite bättre på msdn så hittade jag följande:

 

You can set this property to a valid Connection object or to a valid connection string. In this case, the provider creates a new Connection object using this definition and opens the connection. Additionally, the provider may set this property to the new Connection object to give you a way to access the Connection object for extended error information or to execute other commands.

 

Så du hade rätt, det skall räcka med connectionstringen och man behöver inte skapa objectet först, fel av mig.

 

- Magnus

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

Jag är inte kaxig, jag är bara så jävla bäst...

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...