181 messaggi dal 12 dicembre 2001
max10 ha scritto:
ciao billy1
il problema e che sbagli a chiamare la funzione, se tu definisci una funzione nomefunzione(parametri) per chiamare devi dare lo stesso identico nome.
nel tuo caso
strSQL_arrivata = "select categoria from categorie where id_cat = 1 "
RSlocale = esegui(strSQL_arrivata)
oppure cambi il nome alla funzione
function esegui(str)
deve avere lo stesso nome seno la funzione non funziona :))


no, non e 'cosi'.
io in un punto della pagina creo la mia stringa SQL e la metto in una variabile a caso (str)

passo questa variabile str alla funzione:
esegui(str)


poi la mia funzione ha le sue variabili locali e quindi uso ed e' corretto usare una con un nome diverso, e' un valore che passo alla funzione, la quale poi ha le proprie variabili locali

function pippo(mia_stringa_che_mi_arriva)

end function

66 messaggi dal 09 febbraio 2005
Caio,
vado a memoria per cui prendi con le molle quanto segue

Prima di tutto includi il file adovbs.inc dove sono definite le varie costanti adopenxxxxx,adlookxxx etc etc... oppure guardati il loro valore sempre nel medesimo file.

Poi prova così, supponendo che ti occorra un cursore lato client
sola lettura solo in avanti

function esegui(sSql)
Set RSxxx = Server.CreateObject("ADODB.Recordset")

with RSxxx
  .activeconnection= strConn 'N.B la stringa non l'oggetto   connection
  .cursorlocation=aduseclient 
  .CursorType = adOpenforwardonly
  .LockType = adlookreadonly
  .source=sSql 'la tua sql
end with

esegui = RSxxx.open

'EDIT
'N.B. questo non lo puoi mettere altrimenti ti ritrovi un recorset 
'a chiuso anche nel chiamante

''RSxxx.close

EDIT
'questa puoi metterla anche se non è necessario perchè l'istruzione
'esegui = RSxxx.open lo tiene conunque in vita aumentando di 1 il 
'suo reference counter

Set RSxxx = Nothing

end function



e poi in un punto qualsiasi della pagina :

str = "select categoria from categorie where id_cat = "& id_categoria

'questo che segue è inutile perchè il recordset
'e le sue caratteristiche sone quelle impostate nella function esegui

'Set RSlocale = Server.CreateObject("ADODB.Recordset")
'RSlocale.CursorType = adOpenDynamic
'RSlocale.LockType = 3

dim rslocale
RSlocale = esegui(str)

if not RSlocale.eof then

....

end if

'non ricordo se devi mettere anche le seguenti istruzioni
'che comunque male non fanno ed in ogni caso controlla
'che ti si chiudano le connessioni al db

rslocale.activeconnection.close
set rslocale.activeconnection=nothing

'
RSlocale.close
Set RSlocale = Nothing


P.S.
se ti occorre puoi anche creare un recordset disconnesso
alla .NET impostando a nothing la sua activaconnection dopo l'apertura.

HTH
Modificato da sspintux il 13 ottobre 2010 00.00 -
Modificato da sspintux il 13 ottobre 2010 00.05 -
Modificato da sspintux il 13 ottobre 2010 14.21 -

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.