/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Åbn DB i sub
Fra : Allan Jensen


Dato : 29-05-01 16:04

Hvorfor i den hele vide verden kan jeg ikke gøre dette:

Definere en sub i en fil jeg altid inkluderer:

Sub OpenDatabase()
DataSource="SDAemail"
set oConn = Server.CreateObject("ADODB.Connection")
oConn.open DataSource
End sub

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

I filen hvor jeg skal bruge databasen skriver jeg så:

Call OpenDatabase()

Jeg får denne meddelelse når jeg prøver at bruge forbindelsen:

Object required: ''

Det virker fint hvis jeg ikke laver det som en sub.

Er det ikke noget pjat?
Regards,
Allan Jensen

 
 
Lauritz Jensen (29-05-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 29-05-01 16:22

Allan Jensen wrote:
>
> I filen hvor jeg skal bruge databasen skriver jeg så:
> Call OpenDatabase()
> Jeg får denne meddelelse når jeg prøver at bruge forbindelsen:
> Object required: ''
> Det virker fint hvis jeg ikke laver det som en sub.

Fordi du ikke har erklæret "oConn" i dit script. Når asp støder på
variablen for første gang inden i din funktion, laver den til en lokal
variabel. Derfor kan du ikke tilgå objektet uden for din funktion.

--
Lauritz

Peter Lykkegaard (29-05-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 29-05-01 16:53


"Lauritz Jensen" <lauritz2@hotmail.com> wrote in message
news:3B13BEAA.791841C8@hotmail.com...
> Allan Jensen wrote:
> >
> > I filen hvor jeg skal bruge databasen skriver jeg så:
> > Call OpenDatabase()
> > Jeg får denne meddelelse når jeg prøver at bruge forbindelsen:
> > Object required: ''
> > Det virker fint hvis jeg ikke laver det som en sub.
>
> Fordi du ikke har erklæret "oConn" i dit script. Når asp støder på
> variablen for første gang inden i din funktion, laver den til en lokal
> variabel. Derfor kan du ikke tilgå objektet uden for din funktion.
>
Åhja Scope - Endnu en grund til at bruge "Option Explicit"
Hvor man bliver tvungent til at dimensionere alla variabler

mvh/Peter Lykkegaard



Allan Jensen (29-05-2001)
Kommentar
Fra : Allan Jensen


Dato : 29-05-01 19:08

>> > I filen hvor jeg skal bruge databasen skriver jeg så:
>> > Call OpenDatabase()
>> > Jeg får denne meddelelse når jeg prøver at bruge forbindelsen:
>> > Object required: ''
>> > Det virker fint hvis jeg ikke laver det som en sub.
>>
>> Fordi du ikke har erklæret "oConn" i dit script. Når asp støder på
>> variablen for første gang inden i din funktion, laver den til en lokal
>> variabel. Derfor kan du ikke tilgå objektet uden for din funktion.
>>
>Åhja Scope - Endnu en grund til at bruge "Option Explicit"
>Hvor man bliver tvungent til at dimensionere alla variabler

Ja det gør jeg altså normalt ikke for jeg synes ikke det er andet end
besvær. Jeg kan godt se pointen i det, men jeg kan godt holde styr på
mine variabler - også selvom jeg har mange.

Regards,
Allan Jensen

Lauritz Jensen (29-05-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 29-05-01 19:15

Allan Jensen wrote:
>
> >Åhja Scope - Endnu en grund til at bruge "Option Explicit"
> >Hvor man bliver tvungent til at dimensionere alla variabler
>
> Ja det gør jeg altså normalt ikke for jeg synes ikke det er andet
> end besvær. Jeg kan godt se pointen i det, men jeg kan godt holde
> styr på mine variabler - også selvom jeg har mange.

Åbenbart ikke.

--
Lauritz

Allan Jensen (29-05-2001)
Kommentar
Fra : Allan Jensen


Dato : 29-05-01 19:51

>> >Åhja Scope - Endnu en grund til at bruge "Option Explicit"
>> >Hvor man bliver tvungent til at dimensionere alla variabler
>>
>> Ja det gør jeg altså normalt ikke for jeg synes ikke det er andet
>> end besvær. Jeg kan godt se pointen i det, men jeg kan godt holde
>> styr på mine variabler - også selvom jeg har mange.
>
>Åbenbart ikke.

Det er jo kun fordi jeg ikke lige vidste at når den er defineret
første gang i en sub er det kun en lokal variabel. Ellers har jeg
aldrig problemer med at jeg er kommet til at stave forkert, givet
variabler samme navn eller hvad man nu kan tænke sig....
Regards,
Allan Jensen

Lauritz Jensen (29-05-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 29-05-01 20:18

Allan Jensen wrote:
>
> Det er jo kun fordi jeg ikke lige vidste at når den er defineret
> første gang i en sub er det kun en lokal variabel. Ellers har jeg
> aldrig problemer med at jeg er kommet til at stave forkert, givet
> variabler samme navn eller hvad man nu kan tænke sig....

Sikkert ikke sidste og de fejl kan tage lang tid at finde. En "sjov"
fejl, er når man skal retunerer en værdi fra en funktion og inde i
funktionen tildeler resultatet til en forkert vaiabel (eks: hvis
funktione hedder hej, tildeler man resultatet til hje).
Det koster så lidt, det betyder så meget: Brug option explicit.

--
Lauritz

Lars Raaum (30-05-2001)
Kommentar
Fra : Lars Raaum


Dato : 30-05-01 10:22


Lauritz Jensen <lauritz2@hotmail.com> skrev i
meldingsnyheter:3B13BEAA.791841C8@hotmail.com...
> Allan Jensen wrote:
> >
> > I filen hvor jeg skal bruge databasen skriver jeg så:
> > Call OpenDatabase()
> > Jeg får denne meddelelse når jeg prøver at bruge forbindelsen:
> > Object required: ''
> > Det virker fint hvis jeg ikke laver det som en sub.
>
> Fordi du ikke har erklæret "oConn" i dit script. Når asp støder på
> variablen for første gang inden i din funktion, laver den til en lokal
> variabel. Derfor kan du ikke tilgå objektet uden for din funktion.
>

Så hvis han gjør slik:

<%
dim objConn

Sub OpenDatabse()
Set objConn = ....
...
End Sub
%>

Så virker det?

mvh
Lars



Peter Lykkegaard (30-05-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 30-05-01 11:25


"Lars Raaum" <lars.raaum@portalen.no> wrote in message
news:pc3R6.3254$vu4.331473@news3.oke.nextra.no...
>
> Så hvis han gjør slik:
>
> <%
> dim objConn
>
> Sub OpenDatabse()
> Set objConn = ....
> ...
> End Sub
> %>
>
> Så virker det?
>
Ja, men knap så "kønt" om man vil

-----------------------------------------------------
Opstion Explicit

Function GetConnection(rstrDataSource)
Dim oConn

set oConn = Server.CreateObject("ADODB.Connection")
oConn.open rstrDataSource

Set GetConnection = oConn
End sub

Sub Main
Dim oConn

Set oConn = GetConnection("SDAemail")

Set oConn = Nothing
End Sub
-----------------------------------------------------

Eller noget i den stil
Læg mærke til at oConn kun har lokalt scope i begge procedurer
Der er ikke defineret variabler med globalt scope

mvh/Peter Lykkegaard



Peter Lykkegaard (29-05-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 29-05-01 16:30


"Allan Jensen" <public@hverdag.dk> wrote in message
news:3be7htg28n5fbjs6epeafhr2h3t275u2j4@4ax.com...
>
> Jeg får denne meddelelse når jeg prøver at bruge forbindelsen:
>
> Object required: ''
>
> Det virker fint hvis jeg ikke laver det som en sub.

> Er det ikke noget pjat?

Hmm, måske - jeg har en mistanke - prøv at kalde din sub OpenDB

mvh/Peter Lykkegaard




Søg
Reklame
Statistik
Spørgsmål : 177556
Tips : 31968
Nyheder : 719565
Indlæg : 6408865
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste