Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    361

    [VB6]: Tipologia di ricerca in ListView

    Ciao ragazzi,
    sto utilizzando una listview per estrapolare i dati di una tabella.mdb, questo è il codice che uso:

    With conn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & "C:\...\DB.mdb"
    .Mode = adModeRead
    .Open
    End With

    Set rs = New ADODB.Recordset
    Dim strSQL As String
    strSQL = "SELECT ID,
    DESCRIZIONE, PRODOTTI, CODICEPRODUZIONE FROM ID_ARTICOLI ORDER BY DESCRIZIONE;"
    rs.Open strSQL, conn, adOpenKeyset, adLockReadOnly

    ...e fin qui nulla di nuovo, ma se volessi fare delle ricerche approfondite tipo report nella ListView?
    Cioè, mi spiego meglio, gradirei che l'utente tramite una ListBox possa scegliere, tipo il nome di un'azienda e una volta selezionata si creino nella ListView solamente i prodotti di quella Azienda.
    Spero di essermi spiegato abbastanza bene.
    Ciao, vrclaudio

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Per le ricerche usa il database. Crea opportunamente una

    SELECT

    aggiungendo i criteri per la

    WHERE

    e passala ad DBMS.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    361

    RE...

    Ciao oregon, gentilmente un piccolo esempio per capire meglio?
    vrclaudio

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244

    Re: RE...

    Originariamente inviato da vr-claudio
    Ciao oregon, gentilmente un piccolo esempio per capire meglio?
    vrclaudio
    Non sai come impostare una WHERE, o non sai aggiungerla alla tua stringa SQL ?
    Spiegati meglio.

    A parte questo, sei sicuro che il ListView sia il controllo più adatto?
    1. Se gli elementi da visualizzare sono molti i tempi di risposta potrebbero essere assai lunghi, considera che ad ogni cambio del filtro sull'azienda devi svuotare il ListView e ricaricare di nuovo i dati con il ciclo.
    2. Se aggiungi ulteriori campi, devi modificare il codice.

    Le griglie data-aware sono invece predisposte a questo scopo (il ListView serve più per altre cose).
    Ad esempio, se tu usassi un DataGrid, dopo aver caricato "TUTTI" i dati nel recordset ti basta fare così:
    codice:
    Set DataGrid1.DataSource = rs
    ed hai la griglia popolata istantaneamente! Non serve più alcun ciclo For/Next per caricarli.

    Quando poi devi applicare un filtro, senza ricaricare da zero i dati, usi il metodo Filter del Recordset:
    codice:
    rs.Filter = "azienda = '" & List1.Text & "'"
    Credo sia tutta un'altra musica rispetto al dover ricreare e caricare ogni volta tutti gli elementi nel ListView, non trovi?
    Inoltre, se aggiungi un campo alla tua SELECT, non devi cambiare niente perchè il DataGrid si adatta automaticamente.

    Infine, invece di aprire il recordset come fai tu:
    rs.Open strSQL, conn, adOpenKeyset, adLockReadOnly
    fai così:
    rs.Open strSQL, conn, adOpenForward, adLockReadOnly, adCmdText
    oppure così (è la stessa cosa dato che adOpenForward e adLockReadOnly sono i valori predefiniti:
    rs.Open strSQL, conn, , , adCmdText
    in locale magari non si nota molto la differenza, ma in applicazioni di rete spesso l'aumento di velocità è notevole!
    Dato che stai solo leggendo i dati, non serve usare adOpenKeyset, rallentare solo il caricamento dei dati.

    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    361

    RE...

    Ci provo e ti faccio sapere, grazie mille.

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.