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

VBA Access Discussion :

Fonction Update VBA [AC-2010]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    assistant logistique
    Inscrit en
    Mai 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : assistant logistique
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2014
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Fonction Update VBA
    Bonsoir à tous,

    Je sais que la question a déjà due être posée une bonne centaine de fois, mais malgré mes recherches sur google, je ne trouve pas la solution.

    Voici mon problème. Sur une base Access, j'ai (entre autre) une table générale, un formulaire de saisie et un état (extrait d'une requête).
    J'aimerai que sur mon état, lorsque je clique sur la zone de texte "fax" cela me coche une case dans la table, imprime l'état et ferme l'état. Là ou ça coince, c'est au niveau de la case de la table...
    A l'ouverture de l'état, celui-ci demande (via la requête) un numéro Id (numéro automatique) pour n'afficher qu'une seule commande.

    Voici un bout du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DoCmd.RunSQL "update table générale set demande faxée=-1 where ID = '&id&'"""
    
    'Impression sans confirmation
    DoCmd.PrintOut
    
    'Fermeture de l'état
    'DoCmd.Close
    End Sub
    Il met erreur de syntaxe. Je pense que le problème se situe au niveau de la condition WHERE, mais je voudrais que la mise à jour ne se fasse que sur la commande en question.

    Il y aurait à peu près la même manip à faire sur la zone de texte "email", sauf que là pas d'impression mais envoi par mail au destinataire.

  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 006
    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 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Tu es toujours dans le formulaire, la table source est toujours la même. Pourquoi passer par une requête alors que tu as tout pour procéder à la modification : table source, enregistrement bien positionné, champ destination à ta disposition ?!!

    Affecte simplement la valeur true à ton contrôle (ou ton champ).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.moncontrolecaseàcocher.value = true
    Pour info ta requête comporte plus qu'un problème de where. SQL est un langage à part entière qu'il faut connaitre pour l'écrire "from scratch" sinon il faut s'en remettre au générateur de requête. De plus tu mélanges SQL et VBA, il y a le formalisme de VBA qui vient s'y greffer. Pas évident pour un débutant, mais pas insurmontable non plus, il faut juste apprendre les 2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "update [table générale] set [demande faxée]=-1 where ID = " & me.id & ";"
    1) Tu utilises des espaces dans tes noms d'objets (table et champ), cela t'oblige à utiliser systématiquement les crochets dans SQL mais aussi dans VBA. Une erreur commune au début.
    2) les valeurs string(texte) ont besoin de délimiteurs soit ' soit ", pour ce dernier il doit être doublé.
    3) sans espaces sur les opérateurs de concaténation (&) une erreur est détectée car il sert également comme notation de genre.

    Comme tu le vois beaucoup de chose à connaitre au delà du SQL pur.

    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
    Futur Membre du Club
    Homme Profil pro
    assistant logistique
    Inscrit en
    Mai 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : assistant logistique
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2014
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Ça marche!!!!
    Le premier code ne veut pas marcher, il me met "impossible de donner une valeur..."

    Le second fonctionne à merveille.

    Je vais quand même continuer à chercher pourquoi le premier ne veut pas.

    En tous cas, merci beaucoup!!!

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    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 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Le premier ne fonctionne pas :

    Vu le message il ne peut s'agir d'une mauvaise orthographe dans le nom du contrôle.

    Quelques pistes :
    Vérifier si la cas à cocher n'est pas dans un groupe d'option, auquel cas c'est le groupe d'option qu'il faut cibler.
    Cette case à cocher n'est pas lié au champ (contrôle indépendant)
    Cette case à cocher est dans un état et non un formulaire (j'ai peut être mal compris la demande ) par définition les données des états ne sont pas modifiables via les affectations.
    ...
    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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    assistant logistique
    Inscrit en
    Mai 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : assistant logistique
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2014
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    J'ai pris le problème à l'envers. Je voulais qu'en cliquant sur la zone texte fax, cela coche la case sur l'état et dans ma table. Mais par définition, un état affiche... un état des valeurs. Mais pas le contraire. Le souci c'est que je voulais garder la possibilité d'envoyer la commande soit par fax, soit par mail. Et ce choix ne peut se faire (dans ce cas présent) que sur l'étang.
    L'essentiel est que cela fonctionne... Et de comprendre pourquoi la 1ere fonction ne marche pas. Sur le principe de la base, on garde le plus important, à savoir une traçabilité de l'envoi de la commande.
    Encore merci pour les réponses.

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

Discussions similaires

  1. Update VBA et RowID
    Par Sparal dans le forum Access
    Réponses: 7
    Dernier message: 23/03/2006, 12h43
  2. Fonction UPDATE dans un ADOQuery - SQL
    Par yanba dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/03/2006, 13h53
  3. Problème fonction UPDATE
    Par Mael Bo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/02/2006, 15h54
  4. astuce avec fonction update
    Par cubepiege dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/11/2005, 10h54
  5. [Update TQuery]Lenteur de la fonction Update
    Par Eric SAULNIER dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/05/2004, 01h29

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