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

    [ACCESS] Campo contatore

    Una domanda veloce veloce....il campo contatore di una tabella Access fino a che valore può arrivare? E se raggiunge il limite massimo cosa succede? si resetta o dà errore?
    Lo chiedo perchè per avere una chiave univoca su una tabella temporanea d'appoggio ho usato un contatore. Siccome le righe della tabella vengono cancellate ogni volta che la form si chiude e vengono inserite ogni volta che la form risponde alla pressione di un tasto, non vorrei che alla lunga nell'usare il software l'indice del contatore mi vada fuori range.

    Altrimenti mi tocca usare il famoso c = rsprova.recordcount e aggiungerlo come valore nella colonna che uso come chiave...giusto?

  2. #2
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    di default, Access, quando si specifica che un campo è contatore, ne imposta il tipo come Intero Lungo.

    Intero Lungo è praticamente il valore di tipo Long, quindi può assumere valori che vanno da -2.147.483.648 a 2.147.483.647

    credo che tu possa smettere di preoccuparti... anche perchè se hai una mole di dati superiore a questa, è sicuro che Access non sia il DB più adatto da utilizzare

    Boolean

  3. #3
    Guarda non è la mole di dati che risiede in quella tabella, am la quantità di roba che gli va in appoggio. Per l'appunto essendo una tabella dove creo i record in fase di costruzione di una fattura (le righe...) quando la fattura viene accettata (ma anche rifiutata) vengono passate le righe sulla tabella definitiva e cancello le righe tampone sulla tabella d'appoggio. Quindi alla lunga nell'usare il software quella cartella potrebbe essere il transito di moooooolti record. Dubito cmq di arrivare a quella cifra...quindi dovrei essere a posto.

    Per tranquillità mi sà che però userò la versione "soft" che ho scritto qualche post prima.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Se il data base viene compattato quando questa tabella tampone è priva di record il numero del contatore riparte da 1.

    Ciao

  5. #5
    Ottimo!!! Buona a sapersi...

    Ultima cosa, per compattare il db access via codice in VB6...qualche suggerimento?

  6. #6
    Intendi Zippare?
    Se è questo a cui ti riferisci la risposta è affermativa, ci sono diversi esempi su Internet so come farlo (così come per qualunque file..), chiaramente ricorrendo all'uso delle funzioni API.

    ciao

  7. #7
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao, spero che usi ADO.
    Eccoti una funzioncina..
    codice:
    'passare il nome del database senza estensione...
    Private Sub CompattaMDB(nomeDB as string)
       Dim bytePrima As Long
       Dim cnCompact As New JRO.JetEngine
       Dim CONN_Sorg As String
       Dim CONN_Dest As String
       Dim dbBck As String
       Dim dbApp As String
       Dim dbTemp As String
       
       'path e nome db, per salvare una copia dell'archivio prima della compattazione
       dbBck = App.Path & "\Backup\" & nomeDB & ".bck"
       
       'path e nome db da compattare
       dbApp = App.Path & "\" & nomeDB & ".mdb"
       
       dbTemp = App.Path & "\~" & nomeDB & ".mdb"
       
       On Error GoTo errorCompact
       
       Screen.MousePointer = vbHourglass
          
       CONN_Sorg = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbApp & ";User ID=;Password=;"
       CONN_Dest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbTemp & ";Jet OLEDB:Engine Type=5;"
       
       If Dir(dbBck) <> "" Then
         Kill dbBck
       End If
       
       FileCopy dbApp, dbBck
      
       bytePrima = FileLen(dbApp)
       
       If Dir(dbTemp) <> "" Then
         Kill dbTemp
       End If
          
       'Compatta il database.
       cnCompact.CompactDatabase CONN_Sorg, CONN_Dest
          
       Kill dbApp
       Name dbTemp As dbApp
       
       Screen.MousePointer = vbNormal
       
       MsgBox "Compattazione del database terminata con successo." & vbCr _
       & "Prima della compattazione Byte: " & FormatNumber(bytePrima, 0) & vbCr _
       & "Dopo la compattazione Byte: " & FormatNumber(FileLen(dbApp), 0), vbInformation, "COMPATTAZIONE DATABASE"
       
       Set cnCompact = Nothing
       
       On Error GoTo 0
       Exit Sub
      
    errorCompact:
       Set cnCompact = Nothing
       Screen.MousePointer = vbNormal
       MsgBox "Errore durante il tentativo di compattazione del database: " & vbCr & "Numero errore: " & Err.Number & vbCr & "Descrizione: " & Err.Description, vbCritical, "Service"
       If Dir(dbBck) <> "" Then
          If Dir(dbApp) <> "" Then
             Kill dbApp
          End If
          FileCopy dbBck, dbApp
       End If
       On Error GoTo 0
    End Sub
    Nel tuo progetto devi far riferimento alla libreria: Microsoft Jet and Replication Objects.
    Logicamente, prima di richiamare la funzione, il database deve essere chiuso!
    Jupy

  8. #8
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Originariamente inviato da MdE2005
    Intendi Zippare?
    Se è questo a cui ti riferisci la risposta è affermativa, ci sono diversi esempi su Internet so come farlo (così come per qualunque file..), chiaramente ricorrendo all'uso delle funzioni API.

    ciao
    Leggendo i post precedenti mi sembra di aver capito che intendesse compattare il database..non comprimerlo.. almeno spero di non aver capito male.. altrimenti la funzione che gli ho passato..non serve niente
    Jupy

  9. #9
    Lo volevo compattare come dice Jupy

    Grazie molte

  10. #10
    sul sito di M$ trovi una utility (JetComp) che compatta e ripristina il db. è molto più performante della funzione di compattazione da JRO.

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.