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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [ACCESS 2003] Numero automatique genere "manuellement"

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ACCESS 2003] Numero automatique genere "manuellement"

n°1952634
cpeusteuch​e
Posté le 23-12-2009 à 00:40:22  profilanswer
 

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 :
  1. Public Function cpt() As Integer
  2.     Dim selectQuery As Recordset
  3.    
  4.     Set selectQuery = CurrentDb.OpenRecordset("SELECT * FROM table_compteur" )
  5.     selectQuery.MoveFirst
  6.     cpt = selectQuery.Fields(0).Value
  7.     selectQuery.Close
  8.     Call CurrentDb.execute("UPDATE table_compteur SET field1=field1+1" )
  9.    
  10. End Function


 
Cela marche tres bien si je fais des ajouts de type

Code :
  1. 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 :
  1. 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

mood
Publicité
Posté le 23-12-2009 à 00:40:22  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [ACCESS 2003] Numero automatique genere "manuellement"

 

Sujets relatifs
[Access] Remettre les menus[Access] Double clé etrangere vers une meme clé primaire
Exécuter Macro Excel depuis AccessCréation de graphique Via Access
[Access] Requete "imbriquée"[PHP/Access] Erreur ODBC
Problème requête ACCESSImporter structure et données access dans Windev
[Access] Manipulation de dategerer une base de données access avec des codes barres
Plus de sujets relatifs à : [ACCESS 2003] Numero automatique genere "manuellement"


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