Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655

    [Access] Inizializzare contatore

    Ho un campo contatore che si incrementa di uno per ogni occorrenza inserita, ora se vado a cancellare dei record il contatore parte dal numero dei record totali, compreso quelli cancellati, esiste un modo per farlo ripartire dal numero di record presenti sulla tabella e non da quelli totali?

  2. #2
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    Elimini il campo contatore, salvi, poi lo rimetti con lo stesso nome ... riparte da 1.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655
    Non lo posso cancellare è in relazioni con altre tabelle, perderei tutti i dati immessi fino a quel punto

  4. #4
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    Se c'è una relazione non puoi ovviamente cancellarlo e la cosa è più complessa.
    Sulla guida in linea è indicato cmq il metodo.
    La domanda è scontata: ma perchè lo faresti?

  5. #5
    Utente di HTML.it L'avatar di holifay
    Registrato dal
    May 2005
    Messaggi
    1,330
    come dicevano prima di me è più complesso, ma c'è un sistema semplice, basta che lo usi attentamente:
    codice:
    Function imposta_contatore()
    DoCmd.RunSQL ("ALTER TABLE nome_tabella ALTER COLUMN nome_campo_contatore COUNTER (x)")
    End Function
    mettilo in una procedura e provalo.

    X = numero da cui vuoi che parta il nuovo contatore modificato. Tieni conto che se cancelli dei record appena inseriti la procedura ti può essere utile, perchè imponi X= valore del contatore dell'ultimo record, ma se invece hai cancellato dei record in mezzo al dB allora non va bene perchè troveresti dei valori di contatore non più univoci...
    In questo caso c'è il sistema di Misterxxx (è il più comodo) o qualcosa anche d'altro. Se ti serve lo provo perchè non mi è mai servito e poi lo posto.
    Pensi di avere un file infetto? Invialo a SuspectFile

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655
    bella soluzione, posta anche l'altra
    grazie

  7. #7
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Il contatore dovrebbe essere utilizzato solo come generatore di ID univoci, senza significato per l'utente.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655
    Stavo provando a soluzione di holifay però non va perchè il campo è in relazione con altri campi di altre tabelle.

  9. #9
    Utente di HTML.it L'avatar di holifay
    Registrato dal
    May 2005
    Messaggi
    1,330
    Se i campi sono in relazione c'è poco da fare, se non cancellare la relazione, aggiornare l'indice e ricrearla. Come vedi diventa sempre più "complicato" e poco agevole. Se è una cosa che vuoi comunque fare (e magari con frequenza) ti può essere utile automatizzare la creazione delle relazioni. Il codice da usare (supponendo di avere due campi in relazione tra loro con lo stesso nome ID_campo) è di questo tipo:
    codice:
    function crea_relazione()
    Dim rel_nuova As relation
    Set rel_nuova = CurrentDb.CreateRelation("0", "tabella_primaria", "tabella_secondaria", attributes)
            relnuovo.Fields.Append relnuovo.CreateField("ID_campo")
            relnuovo.Fields![ID_campo].ForeignName = "ID_campo"
            CurrentDb.Relations.Append rel_nuova
    end function
    Per i valori della costante "attributes" guarda sulla guida di Access. E' una costante che definisce il tipo di relazione:
    codice:
    dbRelationUnique 		La relazione è uno-a-uno 
    dbRelationUpdateCascade 	Gli aggiornamenti vengono eseguiti in successione. 
    dbRelationDeleteCascade 	Le eliminazioni vengono eseguite in successione.
    Comunque, come ti hanno detto, il campo contatore di solito non deve avere significato per l'utente del Dbase. Se ne vuoi uno da modificare liberamente ti conviene creare un campo numerico che puoi incrementare a tuo piacere (con una procedura) ed usare per tutti gli scopi che vuoi.
    Pensi di avere un file infetto? Invialo a SuspectFile

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.