Som fungerade alldeles utmärkt och då kunde jag även öppna fler än en anslutning till databasen. I fredags sa denna connectionstring uppsig och jag får bara ett felmedelande där det står att databasen reda används.
Nu har jag bytt connectionstring till följande:
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("../mp_foto.mdb") & ";"
Problemet nu är bara det att jag inte kan öppna fler än en anslutning till databasen itaget. Nån som vet vad som gäller med dom olika stringarna och om det är möjligt att öppna fler än en anslutning med Jet.OLEDb eller om detta enbart går med den tidigare nämda stringen?
Har sökt i forumet men inte hittat svar på detta och ni får ursäckta min taskiga stavning, är lite dålig på den biten :)
Tacksam för svar.
Kan bara inte förstå varför du vill öppna fler gånger än 1 i taget.
Är detta av nån speciell anledning?
Det går bra att använda en connection till flera saker samtidigt.
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("../mp_foto.mdb") & ";"
Set objRs1 = objConn.execute("select ...")
Set objRs2 = objConn.execute("select ...")
objConn.execute("Insert Into ...")
...
Problemet nu är bara det att jag inte kan öppna fler än en anslutning till databasen itaget. Nån som vet vad som gäller med dom olika stringarna och om det är möjligt att öppna fler än en anslutning med Jet.OLEDb eller om detta enbart går med den tidigare nämda stringen?
Skillnaden mellan dessa två är att den övre är ODBC och den undre är Ole Db. Det är rekommenderat att använda sig utav OleDb, eftersom inget stöd längre ges för ODBC även om det fungerar att använda den. Ole Db är däremot bättre och normalt snabbare. Ditt problem kan dock bero på att du öppnar databasen i fel mode. Det kan kanske lösa sig om du gör så här
Provider=Microsoft.Jet.OleDb.4.0; Data Source=" & Server.MapPath("../mp_foto.mdb") & "; Mode=Share Deny None;"
Det jag kommer att tänka på såhär är att du kan ju öppna databasen i Access och gå in under Tools -> Options -> Advanced och kontrollera att Shared är markerad som Default open mode. Jag är lite tveksam till att det skulle vara felet, men kolla för säkerhets skull ;)
Medan du ändå har Access öppet så kan du passa på att köra Tools -> Database Utilities -> Compact and Repair Database...
jo för att jag har en loop i en annan loop som (jag tror) kräver två öppningar eftersom att jag hämtar information ifår samma databas på 2 olika ställen samtidigt, jag är alltså helt ny på asp så tills jag lärt mig mer fungerade detta utmärkt tills i fredags och då gav det bara upp, sidan har legat upp orörd med den kod som finns nu i ca 1 månad.
Jäklarns så rörigt det vart nu *s*
Engine^
Gjorde det aldeles nyss och där i är shared markerad.. Körde en Compact and Repair men når samma resultat iaf, mappen som databaserna ligger i har skrivbehörighet och liknande så där finns det inget problem som jag kan se heller..
Melitta, du behöver inte öppna mer än 1 gång i så fall.
Så fort du har öppnat databasen 1 gång så har du tillgång till alla tabeller.
Skapa bara flera recordsets. :)
<!--#include file="../Connections/action_mpfoto.asp" -->
<!--#include file="encode.asp" -->
<%
Dim senaste__MMColParam
senaste__MMColParam = "1"
If (Request.querystring("id") <> "") Then
senaste__MMColParam = request.querystring("id")
End If
%>
<%
Dim senaste
Dim senaste_numRows
Set senaste = Server.CreateObject("ADODB.Recordset")
senaste.ActiveConnection = MM_action_mpfoto_STRING
senaste.Source = "SELECT * FROM dagbok WHERE refid = " + Replace(senaste__MMColParam, "'", "''") + " ORDER BY datumtid DESC"
senaste.CursorType = 3
senaste.CursorLocation = 3
senaste.LockType = 1
senaste.Open()
senaste_numRows = 0
%>
<%
Dim kolla__MMColParam
kolla__MMColParam = "1"
If (Request.querystring("id") <> "") Then
kolla__MMColParam = Request.querystring("id")
End If
%>
<%
Dim kolla__MMColParam1
kolla__MMColParam1 = "1"
If (request.querystring("visa") <> "") Then
kolla__MMColParam1 = request.querystring("visa")
End If
%>
<%
Dim kolla
Dim kolla_numRows
Set kolla = Server.CreateObject("ADODB.Recordset")
kolla.ActiveConnection = MM_action_mpfoto_STRING
kolla.Source = "SELECT * FROM dagbok WHERE refid = " + Replace(kolla__MMColParam, "'", "''") + " AND id = " + Replace(kolla__MMColParam1, "'", "''") + " ORDER BY datumtid DESC"
kolla.CursorType = 0
kolla.CursorLocation = 2
kolla.LockType = 1
kolla.Open()
kolla_numRows = 0
%>
<%
Dim user__MMColParam
user__MMColParam = "1"
If (Request.QueryString("id") <> "") Then
user__MMColParam = Request.QueryString("id")
End If
%>
<%
Dim user
Dim user_numRows
Set user = Server.CreateObject("ADODB.Recordset")
user.ActiveConnection = MM_action_mpfoto_STRING
user.Source = "SELECT * FROM user WHERE id = " + Replace(user__MMColParam, "'", "''") + ""
user.CursorType = 0
user.CursorLocation = 2
user.LockType = 1
user.Open()
user_numRows = 0
%>
<%
senaste.pagesize = 20
page = request.QueryString("sida")
if page = "" then
page = 1
end if %>
Om nån orkar kan ni väll visa det här för jag gersnart upp och kastar data f*n genom nått genomskinligt :) Nä men ärligt, jag bli tossig snart juh
Set senaste.ActiveConnection = MM_action_mpfoto_STRING
Set kolla.ActiveConnection = MM_action_mpfoto_STRING
Set user.ActiveConnection = MM_action_mpfoto_STRING
Jag ser då inget annat i din kod, som skulle vara felaktigt.
Hm, automatiskt genererad dreamweaver-kod, va trevligt! :)
Jag vill inte ändra i din befintliga kod för då kan dw flippa ur,
men så här gör jag för att ge ett exempel:
inc_database.asp
-------------------------------------------------------
' Öppning av databas =============================================
Public Function get_connection()
Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.CursorLocation = 3
objConn.CommandTimeout = 180
objConn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../mp_foto.mdb") & "; Mode=Share Deny None;"
Set get_connection = objConn
Set objConn = Nothing
End Function
' Skapa ett recordset =============================================
Public Function get_recordset(strSql)
Dim objConn, objRs
Set objConn = get_connection()
Set objRs = Server.CreateObject("ADODB.Recordset")
objRs.CursorLocation = 3
objRs.Open strSql, objConn, 3, 1
objRs.ActiveConnection = Nothing
Set get_recordset = objRs
Set objRs = Nothing
Set objConn = Nothing
End Function
dinsida.asp
----------------------------------------------------------------
<!--#include virtual="/scripts/inc_database.asp" -->
<%
Dim objRs
Set objRs = get_recordset("select * from tabell")
response.write objRs(0)
Set objRs = Nothing
Set objRs = get_recordset("select * from tabell2")
response.write objRs(0)
Set objRs = Nothing
%>
rent och snyggt samt minimalt med kod, förstår du? :)