Newsgroup: it.comp.appl.access
Titolo: metodo run

è possibile usare il metodo run per eseguire sub/function all'interno 
di form e non solo di moduli?

 di form e non solo di moduli?
Leggi qui:
http://groups.google.it/group/it.comp.appl.access/search?hl=it&group=it.comp.appl.access&q=eseguire+sub+in+altra+form
Ciao.
-- 
Sergio MAZZA 

 ha scritto:

Da una lettura veloce (che ora approfondirò) mi sembra che non si parli 
del metodo run ma di come richiamare sub su maschere diverse. io devo 
lanciare sub memorizzate in una stringa su mashere diverse.

 lanciare sub memorizzate in una stringa su mashere diverse.
Se č possibile, se; prova ad utilizzare l'Eval (vedi help)...
Ciao.
-- 
Sergio MAZZA 

 Ciao.
dalle prime prove sembra funzionare... grazie mille

 dalle prime prove sembra funzionare... grazie mille
Quello che chiedevi credo fosse questo:
Function CallByName(Object As Object, ProcName As String, CallType As
VbCallType, Args() As Variant)
    Membro di VBA.Interaction
    Support IDispatch::Invoke
@Alex

 ha scritto:

ora provo, perchè la eval mi da problemi con il passaggio di parametri
grazie

 grazie-
EVAL funziona benissimo, ed io ti consiglio quello... per i parametri
devi solo usare il CHR(34) in quanto Eval è un Valutatore di
Esptressioni
e come tale devi passare una stringa da interpretare non già
interpretata...!
Ti ho segnalato quel metodo solo perchè mi pareva potesse essere più
rispondente alla tua richiesta iniziale, non più funzionale...!
@Alex

 interpretata...!
Scusa ho fatto delle prove con EVAL ma non riesco a passare i parametri (quando 
ci sono più parametri devo passare anche la call?), in più la EVAL di A viene 
eseguita due volte(!!)
in Form1 ho scritto:
Private Sub Comando0_Click()
    DoCmd.OpenForm "f2"
    Debug.Print Eval("Forms(""f2"").A")
    Debug.Print Eval("Forms(""f2"").B(1)")
    Debug.Print Eval("Forms(""f2"").C(1,2)")
    DoCmd.Close acForm, "f2"
End Sub
e nella Form2 le tre procedure:
Public Sub A()
    MsgBox "A"  
End Sub
Public Sub B(i As Integer)
    MsgBox "B" & i
End Sub
Public Sub C(i As Integer, j As Integer)
    MsgBox "C" & i & j
End Sub


Hai fatto un pò di confusione con la composizione stringa...!
Le 2 alternative sono queste:
    'Debug.Print Eval("Forms('f2').A")
    CallByName Forms!f2, "A", VbMethod
Effettivamente, e non sò perchè, EVAL ripete 2 volte la chiamata....
    ' Questo passa alla 2° variante con 1 parametro
    CallByName Forms!f2, "B", VbMethod, 1
    ' Questo passa alla 3° variante con 2 parametri
    CallByName Forms!f2, "C", VbMethod, 1,2
Vedi tu come meglio ti conviene....
@Alex

 @Alex
le prove sul codice di prova funziona alla GRANDE (con callbyname), ora provo 
sul sw reale...
grazie 1000

 
Scommetto che te lo aspettavi !!!!... 
si può passare la matrice dei parametri alla fine della funzione? io ho creato 
una variabile p() as variant e lo popolata ma come la passo... ovviamente nelle 
mie procedure non è gestito il paramarray
grazie


Ma hai letto l'Help....???
C'è scrittop tutto...!!!
COPIO INCOLLO:
CallByName(oggetto, procname, calltype,[args()])
La sintassi della funzione CallByName è composta dai seguenti
argomenti predefiniti:
Parte Descrizione
Oggetto Obbligatoria.
        Variant (Object). Nome dell'oggetto sul quale verrà eseguita
la funzione.
procname Obbligatoria.
         Variant (String).
         Espressione stringa contenente il nome di una proprietà o di
un metodo dell'oggetto.
calltype Obbligatoria.
         Constant. Costante di tipo vbCallType che rappresenta il tipo
di routine da richiamare .
args () Facoltativa.
         Variant (Array).
Sull'ultimo Args definito come Variant(Array) cosa non ti è
chiaro....????
@Alex

 chiaro....????
questo... 
private sub prova
   dim p(2) as variant
    p(0)="prova"
    p(1)=1
    p(2)=2
    CallByName Forms("Maschera1"), "a", VbMethod, cvar(p())   '<--- questo
end sub
public sub a (i as string, k, as integer, j as integer)
  msgbox i & i & j
end sub
mi segnala argomento non facoltativo
luca