Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1227 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Access me génere des Autonumber déja existants....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Access me génere des Autonumber déja existants....

n°368044
Yoyo@
Posté le 21-04-2003 à 22:40:44  profilanswer
 

Salut,  
 
Je dispose d'une table avec un champ en AutoNumber.
Cette table possède 60000 enregistrement, le dernier étant le Numéro 122312.
 
Quand je crée un nouvel enregistrement pour cette table, Access me génère un truc du genre 20066 pour l'AutoNumber au lieu de 122313. Et bien entendu, l'enregistrement refuse de s'ajouter, à cause de duplicata.
 
Que puis je faire? J'ai essayé de compacter et réparer, mais rien n'y fait...
 
Merci,
 
Yoyo*


---------------
It's nice to be important, but it's more important to be nice
mood
Publicité
Posté le 21-04-2003 à 22:40:44  profilanswer
 

n°368049
corvincent
Posté le 21-04-2003 à 22:46:21  profilanswer
 

arf 60000 enregistrements de combien de champs ?
 
c beaucoup pour acces ! faudrait trouver un autre SGBD

n°368052
MagicBuzz
Posté le 21-04-2003 à 22:47:02  profilanswer
 

google : "Access autonumber limitation" :
 

Citation :

A table that has a field formatted as autonumber somehow has resulted in duplicate numbers. How can this happen?
 
When an autonumber format is selected, Access will assign a number to each new record that is entered to the table. The initial number default starts at 1, but utilizing the following steps can change this default. Follow the example 1. Create a table of addresses using field names ID, Fname, Lname, Address1, Address2, City, State, and Zip. Be sure to format ID as autonumber and all other fields as Text (or some other format that will accept your data. Save the table as TableA. 2. Add records to TableA. Watch Access automatically assign an incremental number for the ID field starting at 1. 3. Now create a second table using the same fields as above. This time format the ID field as number. Save this table as TableB 4. Add records to the table. This time you will have to assign an ID to each record. Start the first record with ID = 100, and increment from there up. 5. Create an Append query to populate the records of TableB to TableA. As long as you named the fields the same between the two tables, Access will automatically link the field names when you choose Append Query. See the QBE grid. Run the query. 6. Now go back to TableA and add another record. The field ID formatted as autonumber now starts at the next highest value of all the records within TableA. This is the only known way to defeat the autonumber procedure. To answer the question above, add records to TableB duplicating the ID numbers from TableA. Re-run the append query, then view TableA again. The ID field will be duplicated.

n°368053
MagicBuzz
Posté le 21-04-2003 à 22:49:02  profilanswer
 

corvincent a écrit :

arf 60000 enregistrements de combien de champs ?
 
c beaucoup pour acces ! faudrait trouver un autre SGBD


Access supporte des bases jusqu'à 1 Go, même si M$ ne garantie pas le comportement du produit du delà de 20 Mo :)

n°368060
MagicBuzz
Posté le 21-04-2003 à 22:56:40  profilanswer
 

Sinon, pour access, l'autonumber est un "long" (définition dans MSDN de l'autonumbher de Acess) :
 
AutoNumber
(FieldSize= Long Integer)
 
Long Integer
Long  
 
adInteger
 
COUNTER (Synonym: AUTOINCREMENT)  
 
Hors, chez M$, long c'est :
 
Long data type
A fundamental data type that holds large integers. A Long variable is stored as a 32-bit (4-byte) number ranging in value from ?2,147,483,648 to 2,147,483,647. The type-declaration character is & (ANSI character 38).

n°368349
Yoyo@
Posté le 22-04-2003 à 12:34:54  profilanswer
 

Pour vous répondre,  
 
Ma table possède au moins 15 champs, mais ça ne devrait pas être un problème! D plus, ma Base de Données fait moins de 20Mo!
 
Migrer à un autre SGBD, j'y ai déja pensé, mais vu que le logiciel que j'implémente (sous Access et VBA) est assez conséquent, ce passage est assez risqué (mon but à terme étant de migrer vers SQL Server et de considérer les tables SQL Server comme des tables Access et donc, de changer un minimum de choses à mon appli... J'ai déja fait le test, et y a plein de petites subtilités qui font que ca ne marche pas directement (genre, quand 'jouvre un recordSet avec un Autnumber, il faut que je rajoute l'attribut dbSeeChanges). De plus, c'est extrememnt lent :(
 
Bref, tout ça ne résoud pas mon problème...
 
En fait, j'ai trouvé un maniere de résoudre mon problème : je prend la table fautive, je la copie sous une autre table, j'efface la table originale, et je renomme la nouvelle table copiée pour lui redonner son vrai nom! Là, ca marche, Access retrouve ses marques, mais bon, c'est pas une solution en soit, je voudrait plutot que mon appli ne plante pas à cause de ça...
 
Merci pour vos réponses,
 
Yoyo*


---------------
It's nice to be important, but it's more important to be nice
n°368364
MagicBuzz
Posté le 22-04-2003 à 12:48:21  profilanswer
 

Yoyo > Tu utilises des recordset client, en mode connecté ?
 
Ben cherche pas plus loin, ton problème vient de là.
Change les options de ton recordset pour le forcer à euh...
 
Merde... Je sais plus, je cherche

n°368369
MagicBuzz
Posté le 22-04-2003 à 12:53:58  profilanswer
 

Pour le CursorType :
 
adOpenDynamic
 
CursorLocation :
 
adUseServer
 
LockType :
 
adLockPessimistic
 
http://msdn.microsoft.com/library/ [...] mdm_13.asp
 
Et fait attention à ce qui est écrit là : si tu change par exemple "adUseClient", le "adLockPessimistic" ne fonctionnera plus, sans rien te dire.
 
http://msdn.microsoft.com/library/ [...] ro04_1.asp
 
 
A priori, le pessimistic devrait résoudre le problème, puisque toute modification est exécutée côté serveur.


Message édité par MagicBuzz le 22-04-2003 à 12:54:04
n°368495
Yoyo@
Posté le 22-04-2003 à 15:20:21  profilanswer
 

Merci MagicBuzz pour ta réponse...
 
Mais ici, dans le cas de mon problème, cen'est pas même aps une hsitoirede client/serveur : meme quand je vais directement altérer manuellement la table, en essaynt de rajouter un enregistrement, le probleme est là, et Access génère le mauvais autonumber !
 
Sinon, juste pour info, dans toute mon appli (cotés client et Serveru = Access), je n'utilise quasiment que du DAO... Peut etre qu'il faudrait que je songe à migrer petit à petit en ADO? Mais bon, cen'est pas mon probleme immédiat!
 
Merci,
 
Yoyo*
 


---------------
It's nice to be important, but it's more important to be nice

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Access me génere des Autonumber déja existants....

 

Sujets relatifs
[Access] Ouvrir un formulaire sur un nouvel enregistrement![VBA-ACCESS]Import à partir d'un fichier .xls extremement long!!!!!
[VBA] Comment choisir l'imprimante sous Access pour un Etat ?Se connecter à une base ACCESS ?
Afficher une fenêtre au premier plan sous Access[Microsoft][Pilote ODBC Microsoft Access] Mise à jour impossible.
utilser des bases ACCESS .....sans accessUtiliser les etats d'access à partir de VB... (RESOLU)
[Access] acceder à une requête pas encore executéeAfficher correctement une fenêtre sous Access???
Plus de sujets relatifs à : Access me génere des Autonumber déja existants....


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR