Access me génere des Autonumber déja existants.... - SQL/NoSQL - Programmation
Marsh Posté le 21-04-2003 à 22:46:21
arf 60000 enregistrements de combien de champs ?
c beaucoup pour acces ! faudrait trouver un autre SGBD
Marsh Posté le 21-04-2003 à 22:47:02
google : "Access autonumber limitation" :
Citation : A table that has a field formatted as autonumber somehow has resulted in duplicate numbers. How can this happen? |
Marsh Posté le 21-04-2003 à 22:49:02
corvincent a écrit : arf 60000 enregistrements de combien de champs ? |
Access supporte des bases jusqu'à 1 Go, même si M$ ne garantie pas le comportement du produit du delà de 20 Mo
Marsh Posté le 21-04-2003 à 22:56:40
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).
Marsh Posté le 22-04-2003 à 12:34:54
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*
Marsh Posté le 22-04-2003 à 12:48:21
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
Marsh Posté le 22-04-2003 à 12:53:58
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.
Marsh Posté le 22-04-2003 à 15:20:21
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*
Marsh Posté le 21-04-2003 à 22:40:44
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