Newsgroup: it.comp.appl.access
Titolo: Funzione che restituisce 4 array come fare?

Buongiorno a tutti.
Ho la necessità di costruire una funzione che mi restituisca come risultato 
4 array diversi.
Semplificando al massimo, questo è lo scenario:
In un modulo pubblico:
    Option Compare Database
    Option Explicit
    Public Type Elemento
        Tipo As String
        x1 As Double
        y1 As Double
        Xc As Double
        Yc As Double
    End Type
    Public Function MiaFunzione(MioID as Long) as ???
        Dim Matrice1() As Elemento
        Dim Matrice2() As Elemento
        Dim Matrice3() As Elemento
        Dim Matrice4() As Elemento
        '...faccio i miei calcoli e riempio le 4 matrici
    End Function
Come faccio a tirare fuori li 4 matrici?
Posso estrarre una "Matrice di Matrici"?
Grazie.
Ciao
Silvio


Una funzione non può restituire 4 Array, ma puoi passare 4 Array ByRef
e modificarli all'interno della Funzione...!
@Alex

 ha scritto nel messaggio 
news:irdcj9$di6$1...@tdi.cu.mi.it...

Prima ipotesi:
ti crei un tipo dove ci sono 4 campi relativi alle 4 matrici
la funzione ritorna un valore di tipo creato da te e quindi referenzi quella 
variabile puntando ai vari campi del tipo
Seconda ipotesi:
le matrici le dichiari come variabili globali, la funzione le modifica e non 
ritorna nulla
alla fine della funzione, puoi richiamare le variabili globali modificate 
dalla funzione
Antonio 

e modificarli all'interno della Funzione...!
la terza soluzione...
Antonio 

e modificarli all'interno della Funzione...!
Grazie!!!
Questa soluzione è stupenda!!! Non conoscevo le magie del ByRef.
Proverò questa strada. Non ho solo capito se il ByRef va dato nella 
funzione, nella chiamata alla funzione o in tutte e due.
Ci provo e se non riesco mi farò risentire.
Grazie.
Ciao
Silvio 

 dalla funzione
Grazie!!!
La prima mi sembrava un'ottima soluzione ma poi ho letto la proposta di 
@Alex č l'ho trovata piů comoda.
La seconda ipotesi č l'unica alla quale ero arrivato da solo ma vorrei 
evitare le variabili Global (con i loro noti problemi).
Ancora grazie!!!
Ciao
Silvio

 Silvio
Beh vorrei ben dire... non vorrai confrontare quello che dico io con
quello che dice BISO... ma ragazzi non siamo quì a pettinare Sergio
Mazza....!!!!
Chissà se esce allo scoperto...!!!
;-)
@Alex

 ha scritto nel messaggio 
news:d4142b20-4829-4ceb...@z19g2000yqz.googlegroups.com...


@Alex
L'indifferenza è la peggior offesa!
Antonio 

 Ci provo e se non riesco mi farň risentire.
Ciao a tutti.
In effetti non riesco ad usare il ByRef con le mie matrici. Non capisco dove 
sbaglio:
In un modulo pubblico ho questa funzione:
    Option Compare Database
    Option Explicit
    Public Type Elemento
        Tipo As String
        x1 As Double
        x2 As Double
    End Type
    Public Function CreaMatrici(ByRef Matrice1(), ByRef Matrice2(), ByRef 
Matrice3()) As Boolean
        '...
    End Function
Che richiamo nel modulo di un report cosě:
    Private Sub Corpo_Print(Cancel As Integer, PrintCount As Integer)
        Dim Matrice1() As Elemento
        Dim Matrice2() As Elemento
        Dim Matrice3() As Elemento
        Dim Esito As Boolean
        Esito = CreaMatrici(Matrice1(), Matrice2(), Matrice3())
    End Sub
Mi da:
    Errore di compilazione: Tipo non corrispondente. Previsti matrice o tipo 
definito dall'utente.
(l'errore č posizionato sulla riga -> Esito = CreaMatrici(Matrice1(), .....
Dove č l'errore?
Grazie.
Ciao.
Silvio 

 Silvio
MMmmmm
Provato così...?
Public Function CreaMatrici(ByRef Matrice1as Elemento, ByRef Matrice2
As Elemento, ByRef Matrice3 As Elemento) As Boolean
@Alex

As Elemento, ByRef Matrice3 As Elemento) As Boolean
Grazie!!! (ieri sera ho fatto prove a non finire ma questa proprio non mi 
era venuta in mente...)
Funziona cosě (con le parentesi):
    Public Function CreaMatrici(ByRef Matrice1() As Elemento, ByRef 
Matrice2() As Elemento, ByRef Matrice3() As Elemento) As Boolean
Ottimo. Ormai dovrebbe funzionare tutto alla perfezione.
Grazie ancora.
Ciao
Silvio