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 :

Pb avec utilisation UPDATEsous VBA


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 98
    Points : 44
    Points
    44
    Par défaut Pb avec utilisation UPDATEsous VBA
    Je souhaite effectuer la mise à jour d'un champ de type boolean ( actif) contenu dans une table [Lien piece teinte] :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [quote]selectionpiece = Me.[typepiece].Column(0)
    supprimeteinte = Me.[listesuppression].Column(1)
    DoCmd.RunSQL "Update [Lien piece teinte] Set [actif] = False where ([codepiece] = 'selectionpiece') And ([Idteinte] = 'supprimeteinte')"[/quote]
    les champs codepiece et idteinte sont des champs de cette table (entier long) et les variables selectionpiece et supprimeteinte sont des variables de type integer.
    J'ai le message d'erreur suivant :"type de données incompatible dans l'expression du critére"

    Aprés bien des recherches je coince, à préciser que je débute dans le maniement de ce type de fonction, aprés tout on est là pour apprendre

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    1- tu mets des quotes (') avec des champs de type Long ... ça ne colle pas.
    2- tu inclues des variables par leur nom dans la chaine et non par leur valeur.
    cas typique : http://cafeine.developpez.com/access...ugprint/#LVI-A

    essaie comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "Update [Lien piece teinte] Set [actif] = False where ([codepiece] = " & selectionpiece & ") And ([Idteinte] =  " & supprimeteinte & ")"
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 98
    Points : 44
    Points
    44
    Par défaut
    OK avec ta réponse j'ai débeugué mon pb, à cela j'ajoute une petite question : comment faire si je dois mettre à jour 2 autres champs avec les mêmes conditions dans la même table, faut-il tripler ce code ou peut -on accumuler plusieurs set ??
    merci pour tout je vais voir sur ton lien pour continuer à apprendre

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Tu peux le faire d'un coup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "UPDATE MaTable Set MonChamp1 = 1, MonChamp2 = 2, MonChamp3 = 1 WHERE MonChampCritere = " & UneVariable
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 98
    Points : 44
    Points
    44
    Par défaut
    J'ai un soucis avec cette déclaration, lorsque je lance ce programme il me demande de renseigner jour et heure par l'intermédiaire d'une msgbox alors que je les associe avec les fonctions DATE et TIME

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    jour = Date
    heure = Time

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DoCmd.SetWarnings False
    DoCmd.RunSQL "Update [Lien piece teinte] Set [actif] = False, [Dataesaisie]=jour, [heuresaisie]=heure where ([codepiece] = " & selectionpiece & ") And ([Idteinte] =  " & supprimeteinte & ")"
    DoCmd.SetWarnings True

  6. #6
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Citation Envoyé par Cafeine
    tu inclues des variables par leur nom dans la chaine et non par leur valeur.
    Caféine a portée la solution à ce problème lors de son premier message. Il s'agit du 2.
    Je te conseille de suivre le lien qu'il t'a donné afin de comprendre et corriger ton erreur. Il te suffit de concaténer tes variables à l'intérieur de la chaîne de caractère comme montré dans le lien qu'il t'a donné.
    J'aime les gâteaux.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 98
    Points : 44
    Points
    44
    Par défaut
    OK j'ai lu avec attention le lien mais par contre n'est pas celui que j'atends je viens de m'en rendre compte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DoCmd.SetWarnings False
    DoCmd.RunSQL "Update [Lien piece teinte] Set [actif] = False, [Dataesaisie]='jour', [heuresaisie]= 'heure' where ([codepiece] = " & selectionpiece & ") And ([Idteinte] =  " & supprimeteinte & ")"
    DoCmd.SetWarnings True
    Voila ce qu'il se passe :
    étape 1 : je crée uln lien avec une heure et une date Id n°135 -> pas de pb
    étape 2 : quand je souhaite le modifer avec les lignes de programme précédentes, il en crée une autre N°136 avec la date de la modif ainsi que le bonne heure et la ligne précédente il supprime la date et l'heure


    Malgré mes lectures attentives du lien indiqué je tourne en rond

  8. #8
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Tu cumules les sources d'erreur avec les dates dans ton SQL (regarder la FAQ)

    et tu continues de mettre des variables à l'intérieur d'une chaine ...

    pour t'en convaincre essaie ça ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toto = "Jean-Claude"
    msgbox "0 + 0 = la tete à toto"
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toto = "Jean-Claude"
    msgbox "0 + 0 = la tete à " & toto
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



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

Discussions similaires

  1. [XL-2013] Suppression de doublons dans un classeur Excel avec utilisation d'une macro VBA
    Par gblassel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/06/2014, 16h18
  2. [XL-2002] Affichage avec utilisation checkbox vba Excel
    Par couc86 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 21/04/2011, 15h04
  3. Utilisation de template word avec ADO en VBA
    Par 24 faubourg dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/12/2005, 19h41
  4. TForm dans une DLL avec utilisation d'Interface
    Par guedelmalin dans le forum Langage
    Réponses: 13
    Dernier message: 17/06/2005, 11h58
  5. prob avec utilisation de package
    Par martijan dans le forum Modules
    Réponses: 13
    Dernier message: 11/07/2003, 09h37

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