none
c# dao ms access copier formulaire RRS feed

  • Question

  • Comment copier un formulaire d'une base ms access vers une autre base ms access avec uniquement comme référence dao 3.6 ?

    J'arrive à afficher les noms des formulaire de ma base source mais pas plus !

    Mon code c# sous vs 2010 :

    dao.

    DBEngine dbe = new dao.DBEngine

    ();

    dao.

    Database db = dbe.OpenDatabase(baseSTD, false, false, ""

    );

    dao.Container cnt = db.Containers["Forms"];

     

    foreach (dao.Document doc in

    cnt.Documents)

     

     Console.WriteLine(doc.Name);

     

    Merci de m'aider.

     

    jeudi 11 août 2011 16:19

Réponses

  • Bonjour,

    Je ne pense que cela soit possible en DAO seul (qui donne une vision "base de données uniquement" mais qui ne sait pas particulièrement ce qu'est un formulaire, il faudrait sans doute aller taper directement dans des tables systèmes si c'est vraiment possible). Après recherche commencer éventuellement par http://www.perfectparadigm.com/tip001.html (je pensais à MSysObjects) mais cela va sans doute être pas mal de travail pour mettre cela au point si c'est même possible et sans doute assez "casse gueule" ;-) (backup, backup, backup...)

    Le plus simple serait sans doute effectivement de commencer avec Database.TransferDatabase (mais ce type Database est effectivement celui du modèle de programmation Access), éventuellement avec "dynamic" pour passer juste ces qq lignes de code en late binding si l'utilisation de l'assembly interop pose problème, quitte à essayer éventuellement de mettre qq chose au point avec DAO lorsque vous aurez un peu de temps de côté ;-)

    Un groupe de programmation dédié à Access serait sans doute plus approprié qu'un groupe général sur C#.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    dimanche 14 août 2011 13:20
    Modérateur

Toutes les réponses

  • Bonjour,

    Pourquoi rester avec DAO ?

    Il y a d'autre techno pour copier une base.

     


    fred
    • Marqué comme réponse demarly vendredi 12 août 2011 06:40
    • Non marqué comme réponse demarly vendredi 12 août 2011 06:40
    jeudi 11 août 2011 17:34
  • Bonjours

    J'espere que ce lien vous aide

    http://support.microsoft.com/kb/317114

    Cordialement


    The complexity resides in the simplicity Follow me at: http://smartssolutions.blogspot.com
    jeudi 11 août 2011 20:57
  • Jusqu'a présent DAO 3.6 me permettait de faire tout ce que je voulais.

    Je crains de devoir utiliser également l'assembly microsoft.office.interop.access avec lequel il est possible de résoudre ma demande

    vendredi 12 août 2011 06:46
  • merci mais pas vraiment ...
    vendredi 12 août 2011 06:47
  • Quel est l'inconvenient d'utiliser interop au lieu de DAO 3.6, est ce qu'il y a une contrainte technique?
    The complexity resides in the simplicity Follow me at: http://smartssolutions.blogspot.com
    vendredi 12 août 2011 17:53
  • Bonjour,

    Je ne pense que cela soit possible en DAO seul (qui donne une vision "base de données uniquement" mais qui ne sait pas particulièrement ce qu'est un formulaire, il faudrait sans doute aller taper directement dans des tables systèmes si c'est vraiment possible). Après recherche commencer éventuellement par http://www.perfectparadigm.com/tip001.html (je pensais à MSysObjects) mais cela va sans doute être pas mal de travail pour mettre cela au point si c'est même possible et sans doute assez "casse gueule" ;-) (backup, backup, backup...)

    Le plus simple serait sans doute effectivement de commencer avec Database.TransferDatabase (mais ce type Database est effectivement celui du modèle de programmation Access), éventuellement avec "dynamic" pour passer juste ces qq lignes de code en late binding si l'utilisation de l'assembly interop pose problème, quitte à essayer éventuellement de mettre qq chose au point avec DAO lorsque vous aurez un peu de temps de côté ;-)

    Un groupe de programmation dédié à Access serait sans doute plus approprié qu'un groupe général sur C#.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    dimanche 14 août 2011 13:20
    Modérateur
  • Interop me lie à une version d'access.
    mardi 16 août 2011 08:23
  • C'est effectivement ce que j'ai pu lire. Ca ne semble pas possible avec DAO.

    Je vais revoir ma façon de faire. Au lieu de créer ma base par code, je vais la créer avec ms access en intégrant directement mon formulaire et ensuite la copier.

    Merci pour votre aide.

    mardi 16 août 2011 08:28
  • D'où ma suggestion d'utiliser dynamic. Les qq lignes de code nécessaires seront en "late binding" ce qui devrait permettre d'utiliser n'importe quelle version à partir du moment ou le modèle objet est le même pour toutes ces versions.
    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mardi 16 août 2011 09:57
    Modérateur
  • Ok je pensais que c'était plus pour faire une mise à jour d'un formulaire en le copiant d'une base dans une autre.

    Si c'est pour initialiser une base autant partir effectivement d'une base qui contiendra déjà ce formulaire quitte à continuer à créer les tables par code...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mardi 16 août 2011 10:00
    Modérateur