|
| Å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
| |
|
|