ASP (VBScript) Waarom kan dit niet?

Pagina: 1
Acties:

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 09-08 00:05
Ik heb in een include file de volgende code

code:
1
2
3
4
5
6
7
8
9
Sub OpenDB
 Set DBCon = Server.CreateObject("ADODB.Connection")
 DBCon.Open "Provider=SQLOLEDB; Data Source=Mijndatasource; Initial Catalog=mijncatalog;"
End Sub

Sub CloseDB
 DBCon.Close
 Set DBCon = nothing
End Sub


In een ander ASP bestand roep ik deze 2 sub's aan om de databaseconnectie te openen en vervolgens weer te sluiten:

code:
1
2
3
4
5
6
Call OpenDB

runSQL = "INSERT INTO tabelnaam(testveld1) values ('" & Request.Form("test") & "')"
DBCon.Execute runSQL

Call CloseDB


Ik krijg alleen de volgende melding:

Microsoft VBScript runtime error '800a01a8'

Object required: 'DBCon', op de regel van ---> DBCon.Execute runSQL
-------------------------------

Kan dit niet ofzo wat ik wil? :? :?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Omdat DBCon geen global scope heeft, maar alleen bereikbaar is binnen de sub?

[ Voor 39% gewijzigd door gorgi_19 op 02-04-2003 23:55 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 09-08 00:05
Dus wat ik wil kan helemaal niet?
Hoe kan het dan wel?
Ik wil gewoon alleen op nodige momenten de database openen aanroepen evenals database sluiten...

Verwijderd

Definieer de variabelen buiten de scope van de functies en geef de te gebruiken variabelen ByRef als parameter mee aan de funktie.

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Verwijderd schreef op 03 April 2003 @ 00:15:
Definieer de variabelen buiten de scope van de functies en geef de te gebruiken variabelen ByRef als parameter mee aan de funktie.
Dat hoeft niet eens. Het enige wat je nodig hebt om dit probleem op te lossen is DBCon boven je subs te declareren. Like so:
ASP:
1
2
3
4
Dim DBCon

Sub OpenDB
'... enzovoort

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


Verwijderd

Korben schreef op 03 April 2003 @ 01:28:
[...]

Dat hoeft niet eens. Het enige wat je nodig hebt om dit probleem op te lossen is DBCon boven je subs te declareren. Like so:
ASP:
1
2
3
4
Dim DBCon

Sub OpenDB
'... enzovoort
Nadeel is dat je in dit geval slechts 1 connectie per pagina kan maken, en dat je altijd dezelfde naam daarvoor moet gebruiken. Ook is de kans op fouten groter en debuggen lastiger, zeker als je niet gebruik maakt van Option Explicit.

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Verwijderd schreef op 03 April 2003 @ 01:34:
[...]

Nadeel is dat je in dit geval slechts 1 connectie per pagina kan maken, en dat je altijd dezelfde naam daarvoor moet gebruiken. Ook is de kans op fouten groter en debuggen lastiger, zeker als je niet gebruik maakt van Option Explicit.
Goed, en als je dan gelijk de oplossing aandraagt... :)
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
Function OpenConn(ConnString)
   ' open connection
End Function

Sub CloseConn(Conn)
   ' close connection
End Sub

Set Conn = OpenConn("blaatschaap")

' do something

CloseConn(Conn)

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?

Pagina: 1