IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

[VBA][DAO] Update via Delete + Add : Astuces ?


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 66
    Par défaut [VBA][DAO] Update via Delete + Add : Astuces ?
    Bonjour à tous.
    Je travaille sur une appli frontale ayant une base IMAGE sur HP3000 via ODBC32.

    Je dois Updater des champs d'une table qui sont des "Sort Items" dans la base Image; ces champs ne sont pas modifiables directement via dt.update; il faut Deleter l'enregistrement pus le reécrire avec la valeur modifiée.

    Etant "feignant" sur le code et n'ayant pas envie de réecrire une procédure pour chaque table, voyez vous une solution maline ?

    Plusieurs solutions sont envisageables, vu de ma petite culture Access:

    1 - Utilisation d'une table "locale" Access copie de la base Image; vidage; ajout des enregistrements voulus; modifs data (en local, pas de pb); sup des enregistrements de la table ODBC; ajouts de ceux de la table locale dans la table ODBC.
    2 - Dim de variables correspondantes aux champs, stockage du record ODBC dans les variables, modif de la variable, delete du record ODBC et ADD à partir des variables mémoires.

    La 1ére méthode me pose le soucis de la sécurité de la transaction, comment être sûr que les 5 enregistrements concernés ont bien été mémorisés / détruits / ajoutés quand on utilise des requetes ? (je ne connais pas le moyen de sécuriser la chose); par contre elle n'est pas lourde en code.

    La 2éme méthode pose le soucis de la perso du code (un peu long) à chaque table à traiter de la sorte; a moins de trouver une méthode "générique" de stockage dans un tampon (pour modif) d'un enregistrement (énumération des champs ??).

    Merci de vos lumières et toutes mes félicitations aux contributeurs de ce site qui aident les développeurs occasionnels isolés comme moi.

    Philippe.

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 137
    Par défaut
    Bonjour,

    Le DAO ne fonctionne qu'avec le moteur JET pour ODBC il faut utiliser ADO.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 66
    Par défaut
    J'ai oublié de préciser : je suis en Access 97.
    Dabs l'aide d'Access, on parle de ODBC Direct qui ne passe pas par Jet, et de ODBC qui passe lui par Jet ....

    Comment on reconnait un "lien" ODBC Direct ??

    Merci.

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 66
    Par défaut
    Ayant regardé rapidement DAO et ADO, je crois pouvoir dire que j'attaque actuellement mes bases Images via ODBC en DAO, si j'ai tout compris. Et il me semble comprendre que ADO est arrivé après Access97.

    Merci.

  5. #5
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 27
    Par défaut
    Bonjour.

    Selon moi, il ne faut pas supprimer tous les enregistrements de la table reliee par ODBC. Il ne faut supprimer que ceux qui sont a modifier. Si Access plante, il vaut peut etre mieux mettre les donnees a remplacer ou a supprimer dans une table intermediaire.

    Dans le cas ou il y a plusieurs tables a toucher, pourquoi ne pas les lister dans une table speciale qui les passe en revue ? Pour chaque enregistrement de la table (pour chaque table referencee), il y a une suite d'actions. Des que la suite d'actions est terminee pour une table, on passe a l'enregistrement suivant de la table listant les tables a traiter et on lance a nouveau les differentes actions.

    Cdlt.
    Jeannot2.

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 66
    Par défaut
    Il est sous entendu qu'on ne supprime QUE les enregistrements à modifier; il n'est pas question de vider la table. L'ordre de grandeur est de UN enregistrement à modifier parmis quelques milliers, mais cette modification (Update) suppose un Delete suivi d'un Add des données modifiées et donc stockées quelque part par là avant le Delete.
    Toute ma question concerne en fait le stockage de l'enregistrement avant son delete. L'idéal serait d'avoir une fonction qui, quelle que soit la table, puisse faire la mémo, le Delete, puis le Add en lui passant la valeur à chercher, le champ à modifier et son futur contenu .... Mais bon, je ne vois pas bien comment.

    J'avais pensé parcourir les champs de la table et leur type moyennant un for ... each, puis stocker les valeurs dans des variables, mais comment fait-on pour déclarer des variables dont le type est dans une variable ??

    t="String"
    Dim a as contenu(t) .... !t ??

    Merci de votre aide ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 25
    Dernier message: 03/05/2007, 15h40
  2. [VBA-W] Impossible de lancer une macro via AddIns.Add
    Par massif dans le forum VBA Word
    Réponses: 1
    Dernier message: 06/09/2006, 15h52
  3. INSERT/UPDATE via DBLink
    Par Wilk dans le forum Oracle
    Réponses: 1
    Dernier message: 15/03/2006, 14h51
  4. [VBA/Excel] Formule via macro
    Par UNi[FR] dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/10/2005, 15h11
  5. Evenement sur UPDATE, INSERT, DELETE
    Par papouAlain dans le forum Langage SQL
    Réponses: 6
    Dernier message: 23/12/2004, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo