177 messaggi dal 12 dicembre 2001
iao

ho definito FUORI dalla function, la mia connessione al database.

mi da' errore... devo definirla per forza all'interno della function ?

Set conn = Server.CreateObject("ADODB.Connection")
conn.ConnectionTimeout = Application("xxx_ConnectionTimeout")
conn.CommandTimeout = Application("xxx_CommandTimeout")
conn.CursorLocation = Application("xxx_CursorLocation")
conn.Open Application("xxx_ConnectionString"), Application("xxx_RuntimeUserName"), Application("xxx_RuntimePassword")

function prova(id_categoria)
prova = ""
Set RS = Server.CreateObject("ADODB.Recordset")
RS.CursorType = adOpenDynamic
RS.LockType = 3

str = "select categoria from categorie where id_cat = "& id_categoria
RS.Open str,conn
.....
etc....
....
RS.close

end function



Modificato da billy1 il 08 ottobre 2010 18.01 -
Modificato da billy1 il 08 ottobre 2010 22.22 -
260 messaggi dal 13 luglio 2005
Ciao billy1,
... è una cosa un po' "blasfema" ... ;-) ..., ma potrebbe funzionare. Dipende, quando chiami la funzione, se la connessione è aperta o meno. Ho visto che tu apri la connessione prima della definizione della function prova, ma questo non serve ..., quello che invece è importante è aprire la connessione, chiamare la funzione e chiudere la connessione. Ovvero:

function prova(id_categoria)
prova = ""
Set RS = Server.CreateObject("ADODB.Recordset")
RS.CursorType = adOpenDynamic
RS.LockType = 3

str = "select categoria from categorie where id_cat = "& id_categoria
RS.Open str,conn
.....
etc....
....
RS.close

end function


Set conn = Server.CreateObject("ADODB.Connection")
conn.ConnectionTimeout = Application("xxx_ConnectionTimeout")
conn.CommandTimeout = Application("xxx_CommandTimeout")
conn.CursorLocation = Application("xxx_CursorLocation")
conn.Open Application("xxx_ConnectionString"), Application("xxx_RuntimeUserName"), Application("xxx_RuntimePassword")

variabile_di_ritorno = prova(categoria)

conn.Close()


La domanda è d'obbligo: ma perchè vuoi fare così? che motivo c'è?

Spero di esserti stato d'aiuto, fammi sapere.

Ciao.

Umb
177 messaggi dal 12 dicembre 2001
ciao

dovrei fare cosi' perche' questa pagina e' una pagina dove metto tuttel le funzioni e le Sub generiche che mi servono nel sito.

In pratica in questo file che chiamo BasicRoutines.asp vorrei in alto aprire la connessione, poi ho decine e decine di funzioni che spesso necessitano di una connessione

per esempio ho una funzione GetCategoriaById che in base all'Id che passo ad essa, mi restituisce il nome delal categoria, oppure GetColoreById che in base all'ID del colore, mi restituisce il nome del colore.

e tante altre.

Mi sembra troppo fastidioso definire dentro ogni funzione, la connessione e poi alla fine di ogni funzione, chiuderla e metterla= nothing.

Tu che dici ?
177 messaggi dal 12 dicembre 2001
SUPERPIPPO2005 ha scritto:
Ciao billy1,
... è una cosa un po' "blasfema" ... ;-) ..., ma potrebbe funzionare. Dipende, quando chiami la funzione, se la connessione è aperta o meno. Ho visto che tu apri la connessione prima della definizione della function prova, ma questo non serve ..., quello che invece è importante è aprire la connessione, chiamare la funzione e chiudere la connessione. Ovvero:

function prova(id_categoria)
prova = ""
Set RS = Server.CreateObject("ADODB.Recordset")
RS.CursorType = adOpenDynamic
RS.LockType = 3

str = "select categoria from categorie where id_cat = "& id_categoria
RS.Open str,conn
.....
etc....
....
RS.close

end function


Set conn = Server.CreateObject("ADODB.Connection")
conn.ConnectionTimeout = Application("xxx_ConnectionTimeout")
conn.CommandTimeout = Application("xxx_CommandTimeout")
conn.CursorLocation = Application("xxx_CursorLocation")
conn.Open Application("xxx_ConnectionString"), Application("xxx_RuntimeUserName"), Application("xxx_RuntimePassword")

variabile_di_ritorno = prova(categoria)

conn.Close()


La domanda è d'obbligo: ma perchè vuoi fare così? che motivo c'è?

Spero di esserti stato d'aiuto, fammi sapere.

Ciao.

Umb


ciao, come ho scritto poco fa:

io vorrei avere questo file ASP in cui metto tutte le funzioni generiche che mi servono nel sito.

Tale file (BasicRoutines.asp) viene incluso all'inizio di ogni pagina in cui mi serve averla.

Quindi in questo file BasicRoutines.asp mi servirebbe che in ALTO io potessi definire e aprire la connessione del database, poi io creo tutte le funzioni che mi servono, sfruttando la connessione aperta all'inizio della pagina.

Vorrei sapere se e' possibile fare questo, e cioe' :



' questo e' il file BasicRoutines.ASP

Set conn = Server.CreateObject("ADODB.Connection")
conn.ConnectionTimeout = Application("xxx_ConnectionTimeout")
conn.CommandTimeout = Application("xxx_CommandTimeout")
conn.CursorLocation = Application("xxx_CursorLocation")
conn.Open Application("xxx_ConnectionString"), Application("xxx_RuntimeUserName"), Application("xxx_RuntimePassword")

function trova_colore(id_colore)
prova = ""
Set RS = Server.CreateObject("ADODB.Recordset")
RS.CursorType = adOpenDynamic
RS.LockType = 3

str = "select categoria from coloriwhere id_col = "& id_colore
RS.Open str,conn
.....
etc....
....
RS.close

end function

function trova_categoria(id_categoria)
prova = ""
Set RSc = Server.CreateObject("ADODB.Recordset")
RSc.CursorType = adOpenDynamic
RSc.LockType = 3

strc = "select categoria from categorie where id_cat = "& id_categoria
RSc.Open strc,conn
.....
etc....
....
RSc.close

end function

' fine file Basicroutines.asp

-------

poi io in un altro mio fiel asp del sito, incudo il file basicroutine.asp e uso le funzioni:

questo e' un file del sito, esempio.asp

<!--#include file BasicRoutines.asp -->

colore = trova_colore(21)

categoria = trova_categoria(2)




540 messaggi dal 24 maggio 2002
Contributi
Ma che tipo di errore ti da esattamente?

Hai provato a dichiarare conn prima di valorizzarlo?

var conn;

Marco.
260 messaggi dal 13 luglio 2005
Ciao billy1,
come descrivi tu la cosa, per me non può funzionare ...
Al limite puoi dichiarare un'altra Function (o una Sub) che ti serve ad aprire, e un'altra a chiudere, la connessione. Cioè:
Sub ApriConnessione()
  Set conn = Server.CreateObject("ADODB.Connection")
  conn.ConnectionTimeout = Application("xxx_ConnectionTimeout")
  conn.CommandTimeout = Application("xxx_CommandTimeout")
  conn.CursorLocation = Application("xxx_CursorLocation")
  conn.Open Application("xxx_ConnectionString"), Application("xxx_RuntimeUserName"), Application("xxx_RuntimePassword")
End Sub

Sub ChiudiConnessione()
  conn.Close()
  Set conn = Nothing
End Sub


quindi per chiamare le tue funzioni dovresti scrivere:
Call ApriConnessione()
colore = trova_colore(21)
Call ChiudiConnessione()

Call ApriConnessione()
categoria = trova_categoria(2)
Call ChiudiConnessione()


Ciao.

Umb
177 messaggi dal 12 dicembre 2001
SUPERPIPPO2005 ha scritto:
Ciao billy1,
come descrivi tu la cosa, per me non può funzionare ...
Al limite puoi dichiarare un'altra Function (o una Sub) che ti serve ad aprire, e un'altra a chiudere, la connessione. Cioè:
Sub ApriConnessione()
  Set conn = Server.CreateObject("ADODB.Connection")
  conn.ConnectionTimeout = Application("xxx_ConnectionTimeout")
  conn.CommandTimeout = Application("xxx_CommandTimeout")
  conn.CursorLocation = Application("xxx_CursorLocation")
  conn.Open Application("xxx_ConnectionString"), Application("xxx_RuntimeUserName"), Application("xxx_RuntimePassword")
End Sub

Sub ChiudiConnessione()
  conn.Close()
  Set conn = Nothing
End Sub


quindi per chiamare le tue funzioni dovresti scrivere:
Call ApriConnessione()
colore = trova_colore(21)
Call ChiudiConnessione()

Call ApriConnessione()
categoria = trova_categoria(2)
Call ChiudiConnessione()


Ciao.

Umb



ah quindi e' necessario fare cosi ?

pero' se io includo in alto nella mia pagina PROVA.asp un file BasicRoutines.asp nel quale in alto c'e' definita e aperta appunto in alto la connessione, non e' lo stesso ?
Modificato da billy1 il 11 ottobre 2010 09.52 -
260 messaggi dal 13 luglio 2005
... non proprio ... se lo metti nella pagina inclusa in alto (anche se fosse in basso non cambierebbe) tu apri la connessione al caricamento della pagina. Tenendo la connessione aperta per tutte le chiamate alle funzioni ...
Penso che possa funzionare per la prima chiamata a funzione alla seconda ti dovrebbe dare errore ...
Volendo, per risparmiarti un po' di codice, puoi inserire la chiamata ad ApriConnessione e a ChiudiConnessione direttamente nelle Function ... Per esempio:

function prova(id_categoria)
Call ApriConnessione()
prova = ""
Set RS = Server.CreateObject("ADODB.Recordset")
RS.CursorType = adOpenDynamic
RS.LockType = 3

str = "select categoria from categorie where id_cat = "& id_categoria
RS.Open str,conn
.....
etc....
....
RS.close
Call ChiudiConnessione()
end function


così la chiamata alla function diventa come l'avevi pensata tu:
colore = trova_colore(21)
...


Ciao.

Umb

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC