web-dev-qa-db-fra.com

y-a-t-il TRUNCATE dans Access?

J'ai une table dans une base de données Access avec un champ de numérotation automatique.

Lorsque je supprime tous les enregistrements de la table, la numérotation automatique se souvient du dernier numéro.

Access a-t-il quelque chose de similaire au TRUNCATE TABLE MyTbl de SQL Server?

Sinon, comment commencer avec 1 après avoir supprimé les enregistrements de la table?

12
Gali

Access SQL n'a rien de tel que TRUNCATE TABLE.

Vous pouvez utiliser une connexion ADO pour exécuter une instruction DDL qui réinitialise la valeur "graine" du champ de numérotation automatique. Ainsi, vous pouvez le faire avec du code VBA sans avoir à utiliser compact & repair pour réinitialiser le numéro automatique.

Cet exemple de code supprime d'abord toutes les lignes de ma table tblFoo, puis réinitialise la valeur de départ pour le champ id NuméroAuto. 

Dim strSql As String
strSql = "DELETE FROM tblFoo;"
CurrentProject.Connection.Execute strSql
strSql = "ALTER TABLE tblFoo ALTER COLUMN id COUNTER (1, 1);"
CurrentProject.Connection.Execute strSql
17
HansUp

Autant que je sache, il n'y a pas de troncature dans MS Access, mais vous pouvez résoudre le problème de numérotation automatique en vous rappelant le dernier numéro après la suppression. Dans MS Access, il existe un moyen de commencer par 1 après la suppression des enregistrements avec le champ de numérotation automatique. Si vous utilisez ms-access-2007 , vous pouvez trouver la fonction Compacter et réparer la base de données en sélectionnant Gérer, situé sous le bouton Office. Vous pouvez également faire en sorte que votre base de données se compacte et se répare à chaque fermeture, en activant l'option Compact on Close. Si vous souhaitez définir cette option, vous pouvez la trouver dans Access Options pour la base de données actuelle.

enter image description here

4
Mr. Xymon

Ou sans compact et réparation:

Videz votre table: 

DELETE FROM MyTable

Modifiez autoincrementfield (comme 'ID') en entier: 

ALTER TABLE MyTable ALTER Column ID INT;

Modifiez le champ pour revenir à AUTOINCREMENT: 

ALTER TABLE MyTable ALTER Column ID AUTOINCREMENT;
4
Hijlko

a pris 1 seconde pour trouver la solution à:

http://www.webmasterworld.com/databases_sql_mysql/3227574.htm

Le processus de compactage et de réparation réinitialisera toutes les tables vides incrémentation automatique des compteurs à zéro. Donc, supprimez tous les enregistrements puis:

Outils -> Utilitaires de base de données -> Compacter et réparer une base de données

3
Davide Piras

Il existe un autre moyen qui ne nécessite pas de modifier la table ni de compacter et de réparer. Cela fonctionnera mieux pour vous si vous avez une base de données distribuée. À partir de 2000, Access acceptera une valeur d'insertion dans un champ de numérotation automatique et commencera à y incrémenter. Faites-le dans une requête ou dans un code comme celui-ci. 

CurrentProject.Connection.Execute "DELETE FROM Mytbl"
CurrentProject.Connection.Execute "INSERT INTO Mytbl(ID) VALUES(0)"
CurrentProject.Connection.Execute "DELETE FROM Mytbl"

Remarque: placez adExecuteNoRecords après la commande d'exécution pour améliorer les performances. par exemple. CurrentProject.Connection.Execute sql, adExecuteNoRecords

2
Praesagus

Supprimez tous les enregistrements, puis compactez la base de données.

1
kd7

J'ai aussi le même problème avant, ce que je faisais, c'est que je retourne à la table en mode de modification. Ensuite, j'ai supprimé le nom du champ avec numéro automatique et je l'ai inséré à nouveau avec le même nom. Le résultat de la numérotation automatique lorsque je suis en mode d'affichage est revenu au numéro 1 de la première entrée.

0
user8106325

Ou sans Compacte et Réparée avec VBA: Supposons que votre table est 'MyTable'. Faites une copie de cette table SANS données et enregistrez-la, par exemple, sous le nom 'MyTable_Template' . Lorsque vous souhaitez tronquer la table, il suffit de 'DROP' sur la table et de copier 'MyTable_Template' dans 'MyTable'. Maintenant, le champ auto-incrémenté de votre 'nouvelle' table 'MyTable' recommencera à 1.

0
Hijlko

Dans la base de données MS_Access, "Tronquer n'est pas pris en charge". Ainsi, nous pouvons d'abord supprimer tous les enregistrements par la requête "Supprimer".

Après avoir supprimé les enregistrements, nous pouvons modifier la colonne "ID" à partir de 1 en utilisant la requête "Modifier".

Question:

  "Delete * from (Your Table Name); 
  Alter Table (Your Table Name) Alter Column (Your Column Id) Counter(1,1);"

En utilisant ces deux requêtes en exécution unique, nous pouvons supprimer tous les enregistrements et réinitialiser l'id de la colonne à partir de 1.

0
Latha Ponselvan