Newsgroup: it.comp.appl.access
Titolo: Inserire una Sub Pubblica con Argomenti

Al click su un pulsante, ottengo in un certo punto del codice, un NumeroX.
.1)
-----------------------------------------------------------------------------------------
Private sub click
……alcuni passaggi n1 ed ho un
         NumeroX
…… ulteriori passaggi n2
End Sub
------------------------------------------------------------------------------------------
Ora, devo fare il confronto di questo numeroX, con il numero restituito
da una miaFunzione e attivare una msgbox di avviso; con possibiltà
di uscire dalla procedura del clik nel caso di confronto non rispettato.
Usando l'if sotto il confronto, non ho problemi:
.2)   [codice .1 + if per confronto]
Private Sub click()
……alcuni passaggi n1 e poi ho un
        NumeroX
        If miaFunzione (me.testo1,me.testo2) > NumeroX then
               msgbox "Errore!"
               Exit sub
               else
               msgbox "Ok"
       End if
…… ulteriori passaggi n2
End Sub
------------------------------------------------------------------------------------------
Chiedevo se era possibile reinglobare anche il blocco If dentro una
procedura Sub pubblica con tre argomenti, 2 sono quelli ripassati
alla funzione ed il terzo quello del numeroX per il confronto.
Ho provato a creare una procedura del tipo:
.3) [procedura per il confronto]
Public Sub mioConfronto(arg11, arg22, arg33)
          'dove arg11 e arg22 li ripasso alla miaFunzione e arg33
          'serve proprio alla Sub per fare il confronto; cioè:
If miaFunzione (arg11,arg22) > arg33 then
         msgbox "Errore!"
         Exit sub
         else
         msgbox "Ok"
End if
End Sub
--------------------------------------------------------------------------------------------
Quindi ora dentro al pulsante click vado ad inserire non più la funzione con
l'if sotto [codice.2)] ma direttamente la sub cioè:
.4)
Private Sub click()
……alcuni passaggi n1 e poi ho un
        NumeroX
       mioConfronto(mio.testo1, miotesto2, numeroX)
…… ulteriori passaggi n2
End Sub
Praticamente non accetta (la riga diventa rossa) la sub mioConfronto con
gli argomenti (se la scrivo senza parentesi la accetta; chiaramente non ha
senso la sub senza argomenti). Quale può essere il probema?
Inoltre se c'è un modo di fargli accettare la sub con gli argomenti:
come si fa a far si che, l'Exit Sub, sia applicato alla sub del pulsante click
[.1), .2), .4)]  e non alla sub mioConfronto  [.3)] poichè scritta dentro a
quest'ultima?
In realtà deve essere applicata alla sub più esterna.
(stavo pensando Exit Sub Nome_Sub_Esterna? non so se è una
 procedura possibile).
Ringrazio per suggerimenti in merito e auguri a tutto il NG

 procedura possibile).
Non so se è possibile, ma in ogni caso va contro i dettami più
elementari della programmazione strutturata.
A mio parere, la soluzione più elegante e logicamente corretta,
sarebbe quella di scrivere mioConfronto come Function di tipo Boolean
che restituisce True se la condizione viene soddisfatta dagli
argomenti, e False in caso contrario.
A questo punto, la sub associata all'evento click sul pulsante
diventerebbe
Private Sub click()
……alcuni passaggi n1 e poi ho un
        NumeroX
        If mioConfronto(mio.testo1, miotesto2, numeroX) = False then
            Exit sub
       End if
…… ulteriori passaggi n2
End Sub
Vincenzo Turturro
---------------------------------------------------------
Se no diventiamo tutti **** dai portatili o peggio ancora 
provetti poeti fiorentini come vturturro.
(Così disse 
ivan....@tiscalinet.it
 Ven 25 Aug 2000 09:34:52 +0200)


Sei sicuro che il problema è sulla sintassi della chiamta della funzione?
Hai disponibile la funzione 'miaFunzione' nella sub 'mioConfronto' ?
Se ti occorre uscire dalla sub che ha chiamato 'mioConfronto' che ne dici di
convertire in funzione ?
Ciao
LaLo


C'č un errore di sintassi, la sub dovrebbe essere cosě:
'----------------
Private Sub click()
..alcuni passaggi n1 e poi ho un
        NumeroX
'senza parentesi tonde
       mioConfronto mio.testo1, miotesto2, numeroX
 .. ulteriori passaggi n2
End Sub
'----------------
Solo che non risolvi il problema; invece protresti modificare la function
"miaFunzione" facendoti restituire true o false come risultato del
confronto. Quindi il codice della sub precedente diventa:
'------------------
Private Sub click()
..alcuni passaggi n1 e poi ho un NumeroX
    if miaFunzione (mio.testo1, miotesto2, numeroX) = false then
        msgbox "Errore!"
        goto termina_sub
    end if
 .. ulteriori passaggi n2
termina_sub:
End Sub
'------------------
Ciao.

 convertire in funzione ?
Lalo, quando rispondi, perchè non tagli parte del quoting non indispensabile
alla comprensione di tutto il messaggio?
Grazie
Antonio


Ok, come già detto a Sib, starò più attento nella scrittura delle risposte.
Ciao
LaLo

ok per i suggerimenti inviati,
ottime le soluzioni indicate
p.s. noto (con piacere) che c'è gente tosta nei meandri del ng.
adesso capisco il perchè dei vari tentativi di clonazione :-)
thank you a tutti

rr12rr <viv...@NONOSPAMusa.net> wrote in message
3A547DB4...@NONOSPAMusa.net...

Se un giorno me lo vorrai spiegare perchè io non riesco tuttora a
capacitarmi di cotanta imbecillità...
Antonio

 capacitarmi di cotanta imbecillità...
più che altro mi riferivo al cddb :-); che ne so magari ha buone finalità
(in fondo, dovrebbero aver scelto bene);
poi come la storia ci ricorda, le applicazioni scientifiche possono
essere a fin di bene o viceversa.
comunque il clone del ng, se clone effettivamente fosse, non agirebbe così, 
altrimenti che clone è;
probabilmente nei processi di duplicazione ha subito qualche (o troppe) mutazioni
genetiche.
Causa effetto dell'uranio impoverito?, visto che ora se ne parla tanto.