webForumDet fria alternativet

function som öppnar databas

34 svar · 847 visningar · startad av voigtann1 · sida 2 av 2

OveRRidEMedlem sedan feb. 200112 078 inlägg
#21

. :r

Jag brukar faktiskt inte stänga objekt på det sättet, utan försöker alltid att göra det explicit på varje object, så nu när jag testar så är det ju faktiskt så.

Jag testade ju med isObject() och den returnerar ju true även om objektet har fått .close och är satt till Nothing. Nothing räknas ju som ett objekt, har jag för mig.

voigtann1Medlem sedan juni 20019 519 inlägg
#22

@nders skrev:

Objekt krävs.:'conn'

Du noterade att jag bytte namn på conn till objConn? Byt tillbaka om du vill, men ungersk notation for president.

Bytte ditt objConn till Conn... spelade ingen roll...

Engine^Medlem sedan dec. 20003 887 inlägg
#23

OveRRidE skrev:

. :r

Jag brukar faktiskt inte stänga objekt på det sättet, utan försöker alltid att göra det explicit på varje object, så nu när jag testar så är det ju faktiskt så.

Jag testade ju med isObject() och den returnerar ju true även om objektet har fått .close och är satt till Nothing. Nothing räknas ju som ett objekt, har jag för mig.

Som svar ger jag

Nothing
Set objectvar = Nothing

Discontinues association of objectvar with any specific object or class. Assigning objectvar to Nothing releases all the system and memory resources associated with the previously referenced object when no other variable refers to it.

Nothing är alltså detsamma som null kan man säga. Ingenting, inte ens ett objekt eller en variabel. En rätt abstrakt historia med andra ord.

voigtann1: Jag tappade bort mig i texten... hur ser din kod ut nu?

voigtann1Medlem sedan juni 20019 519 inlägg
#24

just nu kör jag:

function db(strpath)
dim conn
set conn = server.createobject("ADODB.connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(strPath)
set db = conn
end function
@ndersMedlem sedan juni 200032 969 inlägg
#25

Och hur kallar du på den funktionen?

voigtann1Medlem sedan juni 20019 519 inlägg
#26

db("pellesdatabas.mdb")

så vill jag ju ha koden alltid... utan att skriva att conn = db("namn.mdb")

Engine^Medlem sedan dec. 20003 887 inlägg
#27

Har du funderat i banorna att göra det som en klass istället?

Vart får du felet att ett objekt förväntas? Det verkar vara, som tidigare nämndes, saknade referenser till objekt som är problemet.

voigtann1Medlem sedan juni 20019 519 inlägg
#28

om sidan ser ut så här:

<!INCLUDE>
<%
db("mindb.mdb")
SQL = "Select * blåbär where blåbär = bär"
set recset = conn.execute(SQL)
%>

vid set recset raden där får jag felet

@ndersMedlem sedan juni 200032 969 inlägg
#29

voigtann1 skrev:

db("pellesdatabas.mdb")

så vill jag ju ha koden alltid... utan att skriva att conn = db("namn.mdb")

Men alltså. Jag förklarade ju att du inte kan göra så!

Om du har en funktion som returnerar ett connectionobjekt, så måste du ta emot det!

Vad var det för problem med att göra som jag föreslog sist? :q

Läs här och här och framför allt här.

voigtann1Medlem sedan juni 20019 519 inlägg
#30

men @nders... jag har även försökt med dina koder... det fungera inte heller... annars hade jag inte tagit upp ämnet mer.

Kollade runt lite på script sidan wF har och hittade:
http://www.webforum.nu/showthread.php?s=&threadid=73680&forumid=148

Där har en funktion... testat koderna på datorn med och där fungera det...

@ndersMedlem sedan juni 200032 969 inlägg
#31

Fungerar det verkligen inte om du byter:

function db(strpath)
dim conn
set conn = server.createobject("ADODB.connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(strPath)
set db = conn
end function

mot:

dim conn

Sub db(strpath)
     set conn = server.createobject("ADODB.connection")
     conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(strPath)
End Sub

Och sedan sparkar igång med db("db.mdb")? Vad får du för felmeddelande?

voigtann1Medlem sedan juni 20019 519 inlägg
#32

Har inte datorn med mig idag till soldathemmet... ska tillbaka till loggementet nu och kollar upp det 100% igen... återkommer till helgen :e ... har för mig samma fel meddelande.. fast det kan ju vara att jag har glömt spara/uppdatera sidan....

Engine^Medlem sedan dec. 20003 887 inlägg
#33

Som @nders skrev. Du måste ta emot objektet och i detta fall är det

Dim conn

i includefilen som är mottagaren. Jag begriper inte varför inte det fungerar. Det enda jag kan tänka då är att du kör din kod innan du inkluderar det som ska hantera den.

red.
Eller så kan det vara så att ditt objekt är lokalt för funktionen.

Är på väg att sätta nya rekord i 'Så länge dröjde det att posta svaret'-kategorin.

@ndersMedlem sedan juni 200032 969 inlägg
#34

Antingen så använder man en funktion och returnerar objektet, eller så deklarerar man objektet globalt och använder en sub som skapar och initierar objektet. Bägge metoderna skall fungera, om man följer instruktionerna.

Mvh

voigtann1Medlem sedan juni 20019 519 inlägg
#35

.... jag har nog förlorat all förståelse inom ASP nu... hade gjort dim conn innanför sub:en därför fungerade det ju inte.... tack @nders för hjälpen!

128 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)