Bonjour a tous,
Tout d'abord veuillez m'excuser pour l'absence d'accents dans ce post mais bon c'est pas facile avec les claviers qwerty!
Je rencontre un probleme avec une base access 2003 qui existe deja et qui utilise dans pratiquement toutes les tables des numeros automatiques. Or il s'avere que cette base va devoir etre dupliquee et reconciliee tous les jours, en consequence il va etre impossible de la gerer correctement avec des num auto. Je souhaite donc migrer vers une incrementation "automatique" (gere grace a un compteur) mais modifiable, c'est a dire que cela sera transparent pour l'utilisateur mais le developpeur pourra tjrs s'il le souhaite modifier la cle primaire
Ex: table1(Id,Nom,Prenom)
Avant: l'utilisateur rentrait 'Nom' et 'Prenom'=>'Id' etait le num Auto gere par Access
Apres: l'utilisateur rentre 'Nom' et 'Prenom'=>'Id'=cpt() ou cpt est la fonction suivante ('table_compteur' etant une table de la base):
Code :
- Public Function cpt() As Integer
- Dim selectQuery As Recordset
-
- Set selectQuery = CurrentDb.OpenRecordset("SELECT * FROM table_compteur" )
- selectQuery.MoveFirst
- cpt = selectQuery.Fields(0).Value
- selectQuery.Close
- Call CurrentDb.execute("UPDATE table_compteur SET field1=field1+1" )
-
- End Function
|
Cela marche tres bien si je fais des ajouts de type
Code :
- INSERT INTO table1(id,Nom,Prenom) VALUES(cpt(),'Onyme','Anne')
|
En revanche si je fais des ajouts dans la table via des queries du type
Code :
- INSERT INTO table1(id,Nom,Prenom) SELECT cpt(),Nom,Prenom FROM tableFamille
|
alors la valeur pour id dans table1 est tjrs la meme (ie access a appelle une seule fois la fonction cpt et non une fois pour chaque enregistrement de tableFamille).
Ma premiere idee etait d'imposer dans la definition de la table1 que le champ Id soit egale a la valeur de cpt(), j'ai donc mis dans le champ 'Defaut Value', cpt(), met Access m'a jete, idem dans 'validation Rule' (il dit qu'il ne connait pas la fonction). Cette solution serait la plus pratique car cela me permettrais de ne pas changer les requetes d'append deja creees... Donc si quelqu'un a des idees pour faire fonctionner cette technique ou une autre merci d'avance
Cordialement
Arthur