Newsgroup: it.comp.lang.visual-basic
Titolo: Passare parametri tra Forms

Oi!
Mi chiedevo come si facesse a passare parametri tra due forms, io ho
bisogno di aprire una form su un recordset che viene definito
attraverso una query che si basa su un parametro che sta su un'altra
form. Ho provato a definire la query e aprire il recordset da una form
e poi usarlo nell'altra, e in entrambe ho messo la dichiarazione di
'Public rs1 As ADODB.recordset' ma non funziona. Qualcuno può darmi
una mano, per piacere?
Grazie mille, e ...

 Mi chiedevo come si facesse a passare parametri tra due forms
Ci sono diversi metodi, il metodo migliore come riusabilita' e
manutenibilita' e' l'uso delle LET E SET in pratica fai tutto nel form
finale ( chiamiamolo Form2 )
metti una proprieta' set diciamo la Public SET InitRcs(parametri...) e dento
mettici tutte le operazioni che vuoi
cosi ' da qualsiasi form basta che fai Form2.InitRCS "tua query" !
Poi puoi usare una stringa pubblica in un modulo , puoi usare una funzione
dentro la form chiamante che vada a settare la form2 ecc.. vedi tu , il
meglio per questo caso mi sembra la SET !
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 ha scritto nel messaggio
news:oikqjv8h0ff03299j...@4ax.com...

Il fatto che tu li abbia dichiarati Public con lo stesso nome non implica
che siano lo stesso oggetto, cosa che infatti non e'.
Eri comunque sulla strada giusta; uno dei sistemi per poter passare un
valore da una form all'altra, senza ricorrere a variabili globali, e'
appunto quello di dichiarare una routine con parametro (= aggiungere un
metodo alla Form) o una variabile (= aggiungere una proprieta' alla Form),
in entrambi i casi come Public, su una delle form, tipicamente quella che
riceve tale valore.
Quindi, a te la scelta tra:
Private m_rs1 As ADODB.recordset
Public Sub Init(rs1 As ADODB.recordset)
    Set m_rs1=Rs1
End Sub
oppure
Public rs1 As ADODB.recordset
oppure (variante piu' prolissa ma piu' pulita di quest'ultima)
Private m_rs1 As ADODB.recordset
Public Property Get Rs1() As ADODB.recordset
    Set Rs1 = m_rs1
End Property
Public Property Set Rs1(Value As As ADODB.recordset)
    Set m_rs1=Value
End Property
Dalla form chiamante non devi fare altro, prima dello Show, che passare il
valore con
Form2.Init AltroRS  'nel primo caso
oppure
Set Form2.Rs1 = AltroRS 'per gli altri due; qui hai il vantaggio di poter
                        'accedere alla property RS1 anche in lettura,
                        'cosa che non puoi fare con la funzione
Naturalmente sta a te valutare se vale la pena passare il recordset bello e
pronto piuttosto che solo il parametro utile a comporre la query; il
meccanismo in ogni caso non cambia.
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

Ho provato come dici tu per passare un parametro integer, ma mi dà
errore:
Private FNt As Integer
Public Property Get FN() As Integer
   FN = FNt
End Property
Public Property Set FN(Value As Integer)
   FNt = Value
End Property
Ma mi dice che 'le definizioni per la stessa proprietà non sono
coerenti o la routine property ha un parametro facoltativo, paramarray
o un parametro finale set non valido'...
 Perchè?
Grazie e

 o un parametro finale set non valido'...
Fino a VB6 (in VB.net quello che hai scritto non solo č valido, ma č anche
l'unico metodo supportato) per gli oggetti devi usare Property Set, mentre
per tipi di dato semplici devi usare Property Let.
Ciao
--
Math Parser, VB.Framework : 
http://www.neodatatype.net
Sito Comune               : 
http://www.it-lang-vb.net