Newsgroup: it.comp.lang.visual-basic
Titolo: Passaggio di valori...aiuto!!! :((

E non capisco!! Perchč non mi funziona?? Io ho definito in un modulo
Public Type dtCombo
    identificatore As String
    cognome As String
    nome As String
End Type
poi in un form ho scritto
    Dim rcCombo As ADODB.Recordset
    Dim Combo() As dtCombo
    Dim Pippo() As dtCombo
    Dim i As Integer
     ....
     faccio un po di roba...
     ....
    Pippo = fn_DBEventi.SqlListaCombo(Connessione, rcCombo, Combo())
 
    For i = 0 To intCont
        cmbUtenti.AddItem Pippo.identificatore & " - " & _
                          Pippo.nome & " " & _
                          Pippo.cognome
    Next i
Perchč mi da errore su Pippo.?????
-- 
Posted from 212.29.130.175 by way of 
smtp2.libero.it
 [193.70.192.52] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 wrote in message
news:G5GFPT$I5nozfLO6Rrmm7UckxSQ8v...@libero.it...
E non capisco!! Perchè non mi funziona?? Io ho definito in un modulo
Public Type dtCombo
    identificatore As String
    cognome As String
    nome As String
End Type
poi in un form ho scritto
    Dim rcCombo As ADODB.Recordset
    Dim Combo() As dtCombo
    Dim Pippo() As dtCombo
    Dim i As Integer
     ....
     faccio un po di roba...
     ....
    Pippo = fn_DBEventi.SqlListaCombo(Connessione, rcCombo, Combo())
    For i = 0 To intCont
        cmbUtenti.AddItem Pippo.identificatore & " - " & _
                          Pippo.nome & " " & _
                          Pippo.cognome
    Next i
Perchè mi da errore su Pippo.?????


Perch=E8 mi da errore su Pippo.?????
Magari manda il tipo di errore.
Poi vedi se hai fatto almeno una volta la redim dei due array
(o la redim preserve)
Inoltre la funzione deve essere del tipo
fn_DBEventi.SqlListaCombo(adoConn as ADODB.Connection,  adoRec as ADODB.Recordset, varCombo() as dtCombo)
Ciao 
Stelvio

l'intero array devi passarlo come parametro e redimmarlo dall'interno.
Cioč? Io voglio che quella funzione mi restituisca tutto quello che si 
becca la stringa sql, che mi butti tutto dentro pippo e che poi quello 
che č in pippo mi si vada a caricare dentro una combo.
In questo caso, in pippo che ho dichiarato come il tipo da me creato, 
non ci vanne a finire i nomi cosě come me li carica il recorsdset e 
come li butto li butto in Combo()?
Ma in pippo, in quello che ho scritto io, ma ci va a finire qualcosa? 
Perchč se faccio msgbox pippo.nome mi da sempre lo stesso errore di 
qualificatore non valido?
Ma che vuole?? :)
-- 
Posted from 212.29.130.175 by way of 
smtp4.libero.it
 [193.70.192.54] 


Questo è quello che c' è nel form
    Dim rcCombo As ADODB.Recordset
    Dim Combo() As dtCombo
    Dim Pippo() As dtCombo
    Dim i As Integer
    faccio un po di cose, mi prendo la connessione e roba varia...    
    Set rcCombo = New ADODB.Recordset
 
    Pippo = fn_DBEventi.SqlListaCombo(Connessione, rcCombo, Combo())
    For i = 0 To intCont
        cmbUtenti.AddItem Combo.identificatore & " - " & _
                          Pippo.nome & " " & _
                          Pippo.cognome
    Next i
    ...
    ....
    .....
Questo è quello che c'è nel modulo, posto tutto così facciamo prima.
Private strSql As String
Public intCont As Integer
Public Function SqlListaCombo(ByVal Connessione As ADODB.Connection, _
                              ByRef rcCombo As ADODB.Recordset, _
                              ByRef Combo() As dtCombo)
    On Error GoTo SqlListaComboError
 
    strSql = ""
    strSql = "SELECT IDENTIFICATORE, COGNOME, NOME "
    strSql = strSql + "FROM ANA_UTENTI"
 
    rcCombo.ActiveConnection = Connessione
    rcCombo.Source = strSql
    rcCombo.CursorType = adOpenForwardOnly
    rcCombo.Open
 
    If rcCombo.EOF Then
        Exit Function
    Else
        ReDim Combo(0 To 0)
 
        intCont = 1
 
        With Combo(UBound(Combo))
 
            .identificatore = rcCombo("IDENTIFICATORE")
            .nome = rcCombo("NOME")
            .cognome = rcCombo("COGNOME")
        End With
 
        rcCombo.MoveNext
 
        While Not rcCombo.EOF
 
            intCont = intCont + 1
 
            ReDim Preserve Combo(0 To UBound(Combo) + 1)
 
            With Combo(UBound(Combo))
 
                .identificatore = rcCombo("IDENTIFICATORE")
                .nome = rcCombo("NOME")
                .cognome = rcCombo("COGNOME")
 
            End With
 
            rcCombo.MoveNext
 
        Wend
    End If
 
    rcCombo.Close
 
SqlListaComboError:
    '---->
End Function
L' errore ce l'ho nel form, alla riga
        cmbUtenti.AddItem Combo.identificatore & " - " & _
quello che mi segna è "pippo" e mi dice "qualificatore non valido".
-- 
Posted from 212.29.130.175 by way of 
smtp2.libero.it
 [193.70.192.52] 


 wrote in message
news:G5GJN1$IZnozdLO6RXmm7UckxSQ8v...@libero.it...


Tu dichiari pippo come un Array e gli passi il risultato della funzione. 
Prova a fare queste cose
1) Dichiara pippo non come un array 
2) La funzione non ti restituisce nulla quindi se la 
vuoi assegnare a pippo devi fare:
Public Function SqlListaCombo(ByVal Connessione As 
ADODB.Connection, ByRef rcCombo As ADODB.Recordset, _
ByRef Combo() As dtCombo) as dtCombo
...
SqlListaCombo=una variabile dtCombo
end function
Oppure se invece vuoi mantenere pippo come array 
quando lo usi devi scrivere:
cmbUtenti.AddItem Combo.identificatore & " - " & _
                          Pippo(indice).nome & " " & _
                          Pippo(indice).cognome
Dove indice è il numero dell'elemento che vuoi estrarre.
Ciao 
Stelvio

Uff... Cannato...
Spedito in mail privata anziche' al NG, forwardo qui:
Ciaotutti,
Alessandro
----- Original Message -----
Sent: Tuesday, December 12, 2000 3:39 PM
Subject: Re: Passaggio di valori...aiuto!!! :((
Pippo e' un array, quindi o specifichi il suo elemento o continuerai ad
avere un errore.
Inoltre SqlListaCombo a quanto vedo non restituisce nulla (non c'e' scritto
da nessuna parte SqlListaCombo = ...)
Quindi dovresti buttare via Pippo, usare Combo() al posto di pippo in tutti
i casi in cui usi pippo (salvo l'assegnazione tramite SqlListaCombo, in cui
va bene passarlo come parametro) SPECIFICANDO l'indice a cui vuoi accedere,
cambiare SqlListaCombo da Function a Sub e probabilmente rivedere un po' il
codice perche' sono sicuro che da qualche parte saltera' fuori un altro
errore :)
Ciaotutti,
Alessandro
