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

    [VB6] ricerche in un DB grande

    Il mio Db ha i seguenti campi:
    -matricola (key)
    -società
    -tipologia carburante

    essendo un archivio con più di 100.000 record devo preparare una procedura per l'immissione di nuove cedole in un determinato intervallo, quindi devo effettuare ciclicamente per ogni cedola se esiste già oppure no nell'archivio. Se una di queste cedole risultasse già in archivio non devono essere registrate nessuna delle cedole nell'intervallo.....arrivo al problema....metodo find con select per delimitare il recoset....Troppo lento. Avete consigli in merito per velocizzare il tutto? Grazie e spero di essere stato abbastanza chiaro
    A Lucca si mangia,si beve e si cucca.

  2. #2
    Ciao.
    Se il tuo Db è Access, potresti usare gli indici.
    Io utilizzo questo metodo nei casi analoghi al tuo.
    Premetto però che uso le librerie DAO (in attesa di studiare ADO...).
    Se hai bisogno di chiarimenti scrivimi: se sei interessato ti posto del codice esemplificativo.

    Giulio C. - Roma

  3. #3

    [VB6] codice per indicizzare

    se mi invi il codice esemplificativo mi fai un favore, in ADO eventualmente me lo modifico. Indicizzi per caso ordinando il DB con metodo bubble-sort per caso?
    Cmq grazie aspetto il codice e me lo spulcio.
    Grazie ancora
    A Lucca si mangia,si beve e si cucca.

  4. #4
    Ciao, eccoti dunque accontentato.

    Ti indico appresso come mi regolo nelle mie applicazioni quando gestisco un database di tipo Access (mdb).

    Premetto che per ora conosco solo DAO e che prima o poi mi cimenterò a studiare l'ADO...

    Quando lavoro sulla struttura del database, decido se il campo che sto creando debba essere indicizzato. In caso affermativo decido inoltre se l'indice può avere dati duplicati oppure no. La gestione degli indici la eseguo quindi sulla struttura del database Access denominando i vari indici con nomi a me più appropriati.

    Nel programma in VB, come ti dicevo l'altra volta, utilizzo il metodo DAO; quindi nei riferimenti del progetto seleziono la voce "Microsoft DAO 3.6 Object Library".

    Per connettermi al mio database uso un codice di questo tipo:

    - in un modulo pubblico:

    codice:
    Public dbsTuoDatabase As Database    ' Database
    Public rstTuoRecordset As Recordset  ' Recordset
    Sempre nello stesso modulo, mi creo una routine che gestisce l'apertura del database:

    codice:
    Public Sub ApriDatabase()     ' Apertura database e recordset
       Set dbsTuoDatabase = OpenDatabase(App.Path & "\TuoDatabase.mdb")
       Set rstTuoRecordset = dbsTuoDatabase.OpenRecordset("NomeRecordset")
    End sub
    Questa routine la chiamo ogni volta che devo aprire il database attraverso:

    codice:
    Call ApriDatabase
    Quando dovrò quindi interrogare il database per la ricerca di un dato, utilizzo gli indici dello stesso in questa maniera; ciò velocizza di molto l'interrogazione:

    codice:
    With rstTuoRecordset
       .Index = "NomeIndice"
       .Seek "=", CosaCercare
       If .NoMatch Then    ' Dati non trovati
          MsgBox "Dato non trovato!"
          Exit Sub
       Else                ' Dati trovati
          ... ' Gestione del dato trovato
       End If
    End With
    dove "CosaCercare" è il dato che tu stai cercando e che può essere rappresentato, per esempio, dal contenuto di una casella di testo.

    Come capirai, ho semplificato di molto il codice.

    Spero di esserti stato chiaro ed utile. Fammi sapere se hai bisogno di ulteriori chiarimenti.

    AUGURI!
    Giulio C. - Roma

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.