Newsgroup: it.comp.lang.visual-basic
Titolo: Valore di ritorna da funzione

Cia a tutti,
vediamo se qualcuno puo' spiegarmi il motivo di questo errore.
Ho creato una serie di funzioni (volevo fare degli oggetti ma non ho ancora
ben chiaro come fare ...) che si occupano di eseguire delle istruzioni SQL
classiche , UPDATE, INSERT, DELETE....con queste tre nessun problema, passo
i valori alla funzione, tra cui il db, e lui esegue correttamente
l'operazione preposta.
Per quello che riguarda l'istruzione SELECT non sono riuscito a fargli
ritornare il valore che volevo...
public function sqlSelect (strDB as database, strCampi as string, strTabella
as string, Optional sqlCondizione as string) as recordset
'******
' Carico coi valori ricevuti la stringa sqlStringa, valutando l'esistenza
della Condizione Where
'Teoricamente dovrei eseguire la lettura del recordset e poi ritornare il
valore.....
Set recLetto = strDB.openrecordset (sqlStringa, dbopendynaset)
sqlSelect = recLetto                ' e qui mi si genera un errore...anzi
molti errori....
end function
Chi mi sa dare indicazioni?=
GRazie
Emanuele

 errore...anzi molti errori....
... cambierei senz'altro in Set sqlSelect = recLetto

 funzione come recordset...
direi proprio di si.
perchč ti era venuta questa perplessitą?
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 perchè ti era venuta questa perplessità?
Non l'ho mai fatto e ... non avevo voglia di provare
Dalle funzioni, in genere, mi faccio restituire il risultato di un calcolo o
un codice d'errore.
Per variabili e oggetti uso i parametri.

 perchč ti era venuta questa perplessitą?
in effetti anch'io ce l'avevo ;-)
infatti per popolare un recordset di solito lo passo come parametro alla
funzione (meglio o peggio?)
ciaociao

 alla funzione (meglio o peggio?)
sinceramente, non lo so.
perņ mi sembra che passare un parametro per avere un valore di ritorno sia
una operazione poco "leggibile".


 di ritorno sia una operazione poco "leggibile".
Non se la funzione ha questa firma:
Public Function ModificamiIlRecordsetTiPrego(ByRef RecordsetDaModificare As
Recordset) As Boolean
    'code
End Function
:P
Lokar
-- 
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
Statuto: 
http://www.it-lang-vb.net/docs/Statuto.txt
UGIdotNET - 
http://www.ugidotnet.org

 End Function
esatto :)
ciaociao

End Function
Mettiamola cosi', allora:
'Nella classe MioCustomRecordset
Public Function ModificamiIlRecordsetTiPrego() As Boolean
-- 
ciao, un hal a oggetti

 Public Function ModificamiIlRecordsetTiPrego() As Boolean
allora aggiungo:
'Nella classe MyCustomRecordset (per averla tutta nella stessa lingua :-P )
Public Function
ModificamiIlRecordsetTiPregoEDimmiIlTipoDiErroreEventualmenteGenerato() As
Integer
:))))
ciaociao



Non mi piace. Lo so che lo stile OLE prevede il ritorno di un HRESULT,
ma lo stile OOP vorrebbe la generazione di un'eccezione.
-- 
ciao,
hal

 ma lo stile OOP vorrebbe la generazione di un'eccezione.
Quindi se ho capito bene, se ritorna False bisogna poi richiamare la
gestione delle eccezioni?
E se è così allora il codice dell'errore te lo sei salvato nella Function
ModificamiIlRecordsetPerFavore come proprietà della classe?
ciaociao

 gestione delle eccezioni?
no.
la funzione, al suo interno, deve fare un RaiseError (o come diavolo si
chiama)
però pare che in .net il fatto di generare un errore comporti un notevole
appesantimento delle procedure, per cui consigliano di utilizzarlo con
parsimonia.


 utilizzarlo con parsimonia.
Stiamo facendo un po' di confusione... :)
Io parlavo di vb6, non di .NET (mi scuso per l'utilizzo improprio della
parola 'eccezioni').
Quindi, se ho una funzione nella classe che modifica un recordset, e ritorna
un valore booleano, come faccio a gestirmi l'errore come voglio io?
Potrei volere che il programma si comporti in modo diverso a seconda
dell'errore generato e della procedura che ha richiamato la funzione.
Sono stato spiegato? ;-)
ciaociao

 voglio io?
quando fai il raise error puoi, anzi... devi, indicare il codice
dell'errore, che poi dovrai gestire nella routine chiamante.


 dell'errore, che poi dovrai gestire nella routine chiamante.
ah, giusto. Mi ero un attimo perso io... :-P
grazie
ciaociao