Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Scorrere un recordset e caricare collection.

    Ho questo codice:

    codice:
        Dim Coll_Matricole As Collection
    
        On Error GoTo ErrHand
    
        MatricoleCoinvolte = False
    
        sSql = " SELECT t.lav_matricola " & _
               " From lavoratore t " & _
               " Where t.lav_codfiscale = '" & UCase(Trim(sCodFisc)) & "'"
               
        Set Rs = Cn.Execute(sSql)
        
        Set Coll_Matricole = New Collection
        
        Do While Not Rs.EOF
           Coll_Matricole.Add Rs(0), "matr"
        Loop
    In sostanza la query mi torna N infomazioni ed io devo caricarle sulla collection specificata, qual è la sintassi corretta?
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  2. #2
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Ti manca solo l'istruzione MoveNext per spostarti sul prossimo
    record e il valore corretto per "matr", che come lo utilizzi tu,
    è la 'chiave' dell'elemento della collection e DEVE essere univoca, altrimenti di da' errore :
    codice:
        ....
        ....
        Do While Not Rs.EOF
           Coll_Matricole.Add Rs(0), "matr" & Coll_Matricole.Count + 1 
           Rs(0).MoveNext  
        Loop
        ....
    Ciao,
    Ciao, Brainjar

  3. #3
    Ok, e come recupero i dati caricati?
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  4. #4
    linguaggio e versione anche nel titolo
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  5. #5
    Chiedo venia, comunque VB6.0

    La collection è di questo tipo: Z1,Z2,Z3,Z4
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  6. #6
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    codice:
        ' Così la chiave è il numero di matricola
        ' Devi essere sicuro che nella tabella non vi siano
        ' duplicati
        ' Per recuperare il numero di matricola ti basta 
        ' nMat = Coll_Matricole("" & <unnumerodimatricola>)
        ' Ma in questo caso non ha senso perchè cerchi quello
        ' che sai già. Se però nella collection salvi un oggetto
        ' allora ha senso perchè ricaveresti l'oggetto tramite :
        ' Set oOperaio =  Coll_Matricole("" & <unnumerodimatricola>)
        ' Hai una classe cOperaio, con le property Nome, Assunzione,
        ' Livello ...
        ' Sul tuo DB hai questi valori che ti estrai con la select
        ......  
        Dim oOperaio as cOperaio  
        Do While Not Rs.EOF
           Set oOperaio = Nothing
           Set oOperaio = New cOperaio
           With oOperaio
               .Nome = Rs(1)
               .Assunzione = Rs(2)
               .Livello = Rs(3)  
           End With 
           Coll_Matricole.Add oOperaio, "" & Rs(0)
        Loop
    
        ' ------- 
        ' ricerca
        ' --------
        Set oOperaio = Nothing
        Set oOperaio =  Coll_Matricole("" & <unnumerodimatricola>)
        If oOperaio Is Nothing Then ' Non c'è nella collection 
            ....
        Endi If
    
    
    
        ' Così la chiave è un valore sequenziale, e se ne può fare
        ' a meno. Quando ricerchi un elemento cicli sulla collection.
        Dim oOperaio as cOperaio  
        Do While Not Rs.EOF
           Set oOperaio = Nothing
           Set oOperaio = New cOperaio
           With oOperaio
               .Matricola = Rs(0)
               .Nome = Rs(1)
               .Assunzione = Rs(2)
               .Livello = Rs(3)  
           End With 
           Coll_Matricole.Add oOperaio, "matr" & Coll_Matricole.Count + 1 
           Rs(0).MoveNext  
        Loop
    
        ' ------- 
        ' ricerca
        ' --------
        For Each oOperaio In  Coll_Matricole
            If oOperaio.Matricola = <ilnumerodimatricolachecerchi> Then
                ....
                Exit For
            Endif
        Next oOperaio

    Ciao,
    Ciao, Brainjar

  7. #7
    C'è solo un ultimo problemuccio, la mia collezione di valori è la seguente:

    codice:
    Z1,Z2,Z3,Z4,
    Come fo' ad eliminare l'ultima virgola della collection?
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  8. #8
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Come fai ad avere una collection così ?
    Se la carichi dal recordset potresti impedire di collezionare
    dei valori nulli e/o vuoti
    codice:
        
     
        Do While Not Rs.EOF
           if Not IsEmpty(Rs(0).value) then 
               ' Carichi il record nella collection 
               .......
           End If
     
        Loop
    Oppure filtri i valori nulli con la Select ..
    codice:
        sSql = " SELECT t.lav_matricola " & _
               " From lavoratore t " & _
               " Where t.lav_codfiscale = '" & UCase(Trim(sCodFisc)) & "'" & _
               " And t.lav_matricola Is Not Null "
    Ciao,
    Ciao, Brainjar

  9. #9
    Tutto risolto, volevo solamente sapere come posso togliere l'ultima virgola che mi viene presentata nella collection, quando mi recupero gli item.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.