Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    popolare Listview a 2 colonne da DB

    Vorrei popolare la listview 'lstElencoTipi' a due colonne (descrizione, durata) con i record della tabella 'Tipi' del database avente lo schema.
    | IDTipo | DescrizioneTipo | DurataTipo |

    Ho scritto il seguente codice ma nn va. Dove sbaglio?
    (E' lecito quello che sto facendo o esistono soluzioni + intelligenti?)

    codice:
    Option Explicit
    
    Dim strSQl As String
    Public Cn As New ADODB.Connection
    Public Rs As New ADODB.Recordset
    
    Sub connetti()
       With Cn
          .ConnectionString = "Provider = Microsoft.Jet.OleDB.4.0;" & _
                              "Data source = " & App.Path & "\database.mdb"
                              'nella prima riga si specifica il provider
                              'nella seconda il percorso al db
          .ConnectionTimeout = 5 'numero dei secondi di timeout
          .CursorLocation = adUseClient 'tipo di cursore
          .Mode = adModeShareDenyNone 'nessuna limitazione
          .Open 'apertura ricordarsi di chiuderla
       End With
       With Rs
          .ActiveConnection = Cn ' imposta a che connessione si riferisce
          .LockType = adLockOptimistic ' imposta il tipo di lock
       End With
    End Sub
    
    Private Sub Form_Load()
        Call connetti
        Rs.Open "SELECT * FROM Tipi" 
        Dim itm As ListItem
        Do While Not Rs.EOF
            itm = lstElencoTipi.ListItems.Add
            itm.Text = Rs!ID
            itm.SubItems(1) = Rs!DescrizioneTipo
            itm.SubItems(2) = Rs!DurataTipo
        Rs.MoveNext
        Loop
    End Sub

  2. #2
    Fai una prova: apri un nuovo progetto di VB e inserisci un form sul quale disegni una ListView. Nell'evento Form_Load scrivi questo codice:
    codice:
    Private Sub Form_Load()
        Dim itm As ListItem
        Dim sItm As ListSubItem
        
        ListView1.View = lvwReport
        
        Call ListView1.ColumnHeaders.Add(Text:="Prima colonna")
        Call ListView1.ColumnHeaders.Add(Text:="Seconda colonna")
        
        Set itm = ListView1.ListItems.Add(Key:="C1", Text:="Uno")
        Set sItm = itm.ListSubItems.Add(Key:="C11", Text:="Colonna")
        
    End Sub

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  3. #3
    fatto. funziona.
    ma con questo?

    a me l'errore me lo da' su
    itm = lstElencoTipi.ListItems.Add
    e mi dice "Error 91: Object variable or With block variable not set"

  4. #4
    beh, adatta alle tue esigenze il codice che ti ho postato, c'è tutto ciò che ti serve.

    cmq l'errore ti sta dicendo che manca la parolina Set prima dell'istruzione riportata.

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  5. #5
    mi piacciono le sfide :tongue:
    a parte gli scherzi ci sto provando. 'Text' è il testo visualizzato nella cella, ma 'Key' cosa indica?


    un bacetto alla moderatrice :*

  6. #6
    Originariamente inviato da speriamobene
    mi piacciono le sfide :tongue:
    a parte gli scherzi ci sto provando. 'Text' è il testo visualizzato nella cella, ma 'Key' cosa indica?


    un bacetto alla moderatrice :*
    Bravo... vedrai che ce la fai.

    Esatto, Text è il testo visualizzato; Key è la chiave dell'Item. Visto che è un ID, quindi di tipo Long, per poterla assegnare all'item devi metterci un carattere alfabetico davanti, perchè non accetta valori numerici nemmeno se passati come stringa. Ti può essere utile memorizzarla nell'item se per esempio dovessi aprire l'item selezionato e dovessi quindi sapere quale è l'ID scelto.

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  7. #7
    hai un pvt, leggilo per favore.

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  8. #8
    ladyBlu, ho dovuto cambiare tipo al mio contatore tentativi: ora è un Long!

    Avrei voluto postare il codice, solo che nn è ancora funzionante. Nel frattempo posto gli obiettivi (immagine del form nel post successivo).

    OBIETTIVO:
    - L'utente puo' fare le operazioni dei vari Command. La listview reagisce nei seguenti modi:

    AGGIUNGI: Alla pressione di questo bottone viene rilistato il database aggiornato con il nuovo record inserito (ordinamento x descrizione)
    [OPZIONE AGGIUNTIVA: Mentre si digita descrizione automaticamente il record nella listview più prossimo come match viene evidenziato, altrimenti la listview perde la barra per evidenziare]

    MODIFICA: Il record modificato è aggiornato nella lista record della Listview.

    CANCELLA: Alla pressione di questo bottone viene rilistato il database aggiornato, senza il record cancellato

    AGGIORNA: Da rinominare in RESET. Aannulla eventuali operazioni di inserimento o modifica.

    SULLA LISTVIEW:
    i) Scorrere x righe o clic su una riga o movimento con controllo 'Data': automaticamente i campi txt si popolano con i dati selezionati
    ii) Clic su titolo colonna: Ordinamento dei record x quella colonna e rivisualizzazione.


    NOTA: Così illustrato il problema sembra un compito in classe :-) ma in realtà è solo il primo (banale) mattoncino di una applicazione grande per cui, menomale, ho individuato sempre questo meccanismo e, quindi, sono ottimista.

    Suggerimenti? (anche di impostazione, oltre che eventuali aiuti di codice)

    P.S. - La parte superiore (fino al controllo data funziona. nn so far funzionare la 'sincronizzazione' con listview)

  9. #9
    Dimenticavo l'immagine:

  10. #10
    non riesco... sto sbattendo ma nn riesco!! aiuto... sto x arrendermi... mi arrendo!

    dove sbaglio? come fare? :master:

    codice:
        Dim itm As ListItem
        Dim sItm As ListSubItem
        
        
        lstElencoTipi.View = lvwReport
        
        Dim fld As ADODB.Field
        
        Do While Not Rs.EOF
          For Each fld In Rs.Fields
            Set itm = lstElencoTipi.ListItems.Add(Key:="fld(0).Value", Text:="fld(1).Value")
            Set sItm = itm.ListSubItems.Add(Key:="C1", Text:="qui")
            Rs.MoveNext
          Next
        Loop

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.