Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Mosfet
    Registrato dal
    Jul 2002
    Messaggi
    124

    Ripristino indici db Access

    Facendo dei test sulla mia applicazione, scrivendo e cancellando dati nel db, capita che se voglio ripulire il database da inserire nell'applicazione finale andrebbero ripristinati gli indici facendo che tutte le tabelle partano con gli ID pari a 0 e non dall'id dell'ultima riga inserita...

    Per fare ciò c'è qualche funziona particolare su Access? Ho provato con "Compatta e Ripristina" ma non fa quello che voglio, oppure devo farlo tramite codice?

    Grazie
    "L'entropia di Windows aumenta con funzione esponenziale dal giorno della sua installazione".

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Questa è, secondo me, un'operazione che NON devi fare.

    I campi Contatore autoincrementali non sono nati per tenere un calcolo progressivo del numero di record, ma solamente per garantire - se utilizzati come chiavi primarie - che ciascun campo abbia automaticamente un valore intero identificativo e sempre diverso, tant'è che il campo Contatore può essere impostato anche in modo casuale.

    Non esiste alcuna operazione automatica in grado di ripristinare i contatori o riempire i "buchi" rimanenti.

    Se non hai relazioni tra le tabelle, puoi anche pensare di rimuovere e inserire nuovamente il campo, ottenendo così l'assegnazione automatica e progressiva, senza "buchi", di tutti i valori, ma il principio fondamentale rimane lo stesso: il valore del campo Contatore non dovrebbe essere preso in considerazione significativamente se non per il ruolo che svolge e che ho descritto sopra.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di Mosfet
    Registrato dal
    Jul 2002
    Messaggi
    124
    ok grazie, pensavo ci fosse un qualcosa per ovviare!

    il fatto è che se su una grid visualizzo l'id si vede la cosa antipatica ad esempio che parte da 259 e non da 0!
    "L'entropia di Windows aumenta con funzione esponenziale dal giorno della sua installazione".

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Originariamente inviato da Mosfet
    ok grazie, pensavo ci fosse un qualcosa per ovviare!
    Non c'è probabilmente per non incentivare qualsiasi iniziativa legata ad un uso particolare di quel campo.

    Originariamente inviato da Mosfet
    il fatto è che se su una grid visualizzo l'id si vede la cosa antipatica ad esempio che parte da 259 e non da 0!
    Devi implementare un tuo sistema di numerazione o conteggio se desideri ottenere questa funzionalità e sfruttarla nella griglia.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    121
    domanda:

    cosa effettivamente vuoi far apparire?

    un campo contatore non ID che si auto implementi da 1 a 2 a 3 ecc. e sia visibile sul tuo form?

    by mila

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    121
    comunque ti invio il codice per ottenere quanto sopra scritto.

    devi aumentare in tabella un campo che chiamerai numero, (con formato numerico),

    fai una query di selezione della tabella che contiene il campo numerico.

    in struttura maschera vai nelle sue proprietà, nella sezione evento, riga caricamento e incolla questo codice:

    Dim dbs As Database, rst As Recordset
    Dim strSQL As String
    Dim pippo As Long
    pippo = 0
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("NOME TUA QUERY")
    If rst.RecordCount <> 0 Then
    rst.MoveFirst
    Do While Not rst.EOF
    rst.Edit

    rst!numero = pippo + 1
    pippo = rst!numero
    rst.Update
    rst.MoveNext
    Loop
    rst.Close
    Set dbs = Nothing
    End If
    Me.Refresh


    ricordati di mettere il campo numero nella maschera prima di tutti i campi del record.

    ogni qual volta aprirai la maschera il codice si attiverà numerando tutti i record da 1 a ...ecc.

    ciao
    mila

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 © 2024 vBulletin Solutions, Inc. All rights reserved.