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 :

Copier des enregistrements en fonction de certains criteres


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Copier des enregistrements en fonction de certains criteres
    Bonjour,

    j'essaye de faire une requete sous Acces mais celle ci ne fonctionne pas (vous vous en serez douté sinon la question ne se poserait pas).

    Je voudrais mettre à jours une table (ici appelé tbl_DCR) avec une autre table (tbl_Extract_Suprem). Pour cela, il faut que je controle avant si les 7 premier caractere de "SB_N°" dans la tbl_DCR est égale au " SB Number" de ma tbl_Extract_Suprem ainsi que "SB_rev" de ma tbl_DCR est égale à "SB Revision" de ma tbl_Extract_Suprem. Si ces deux conditions sont remplis, alors je peux faire la mise à jours.
    Pour le moment il me met "syntax error in UPDATE statement" or je ne vois pas quel est mon erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub Command27_Click()
       Dim db As DAO.Database
       Dim sQuery As String
       Set db = CurrentDb
     
     
     
     
    sQuery = "UPDATE tbl_DCR " & _
       "set MID(tbl_DCR.SB_N°, 1, 7) = [tbl_Extract_Suprem.SB Number]," & _
            "[tbl_DCR.SB_rev] = [tbl_Extract_Suprem.SB Revision], " & _
            "[tbl_DCR.DM/DFM] = [tbl_Extract_Suprem.DFM Name]," & _
            "[tbl_DCR.DM/DFM_WorkCenter] = [tbl_Extract_Suprem.D(F)M Work center], " & _
            "[tbl_DCR.SB_Designer] = [tbl_Extract_Suprem.SB Prep Resp]," & _
            "[tbl_DCR.SB_Designer_WorkCenter] = [tbl_Extract_Suprem.SB Designer Work center] " & _
            "[tbl_DCR.SB_Author] = [tbl_Extract_Suprem.Author name]," & _
            "[tbl_DCR.SB_Author_WorkCenter] = [tbl_Extract_Suprem.SB author leader Work center] " & _
       " FROM tbl_DCR INNER JOIN tbl_Extract_Suprem ON MID(tbl_DCR.SB_N°, 1, 7) = [tbl_Extract_Suprem.SB Number] and [tbl_DCR.SB_rev] = [tbl_Extract_Suprem.SB Revision] ;"
     
     
     
     
    'éxécution de la transaction
       On Error GoTo err_insert
        DBEngine.Workspaces(0).BeginTrans
            db.Execute sQuery, dbFailOnError
        DBEngine.Workspaces(0).CommitTrans
     
     MsgBox "Procédure effectuée avec succès..", vbOKOnly
    Exit Sub
     
    'si erreur
    err_insert:
    'annulation de la transaction
        DBEngine.Workspaces(0).Rollback
        MsgBox Err.Description
     
    End Sub
    Si quelqu'un pouvait m'aider dans mon probleme je lui en serais grandement reconnaissant.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    À mon avis ton problème vient de la jointure, UPDATE et jointure ne font pas bon ménage.

    as-tu essayer de créer cette requête dans l'éditeur de requête ? Cela devrait te permettre de valider ma suspicion. Après il faudra voir comment on peut arriver au résultat voulu.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 621
    Points : 56 867
    Points
    56 867
    Billets dans le blog
    40
    Par défaut
    salut,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    sQuery = "UPDATE tbl_DCR " & _
       "set MID(tbl_DCR.SB_N°, 1, 7) = [tbl_Extract_Suprem.SB Number]," & _
            "[tbl_DCR.SB_rev] = [tbl_Extract_Suprem.SB Revision], " & _
            "[tbl_DCR.DM/DFM] = [tbl_Extract_Suprem.DFM Name]," & _
            "[tbl_DCR.DM/DFM_WorkCenter] = [tbl_Extract_Suprem.D(F)M Work center], " & _
            "[tbl_DCR.SB_Designer] = [tbl_Extract_Suprem.SB Prep Resp]," & _
            "[tbl_DCR.SB_Designer_WorkCenter] = [tbl_Extract_Suprem.SB Designer Work center] " & _
            "[tbl_DCR.SB_Author] = [tbl_Extract_Suprem.Author name]," & _
            "[tbl_DCR.SB_Author_WorkCenter] = [tbl_Extract_Suprem.SB author leader Work center] " & _
       " FROM tbl_DCR INNER JOIN tbl_Extract_Suprem ON MID(tbl_DCR.SB_N°, 1, 7) = [tbl_Extract_Suprem.SB Number] and [tbl_DCR.SB_rev] = [tbl_Extract_Suprem.SB Revision] ;"

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci marot_r et f-leb de vous etre manifesté.

    @marot_r : lorsque tu parle de l'edditeur de requete c'est lorsqu'on créé une requete sous la fenetre Access? (et non sous VBA?)
    @f-leb : "set MID(tbl_DCR.SB_N°, 1, 7) = [tbl_Extract_Suprem.SB Number]" il est vrai qu'en y réfléchissant, ce n'est pas correct de l'avoir mis dans la fonction "set" alors que je veux juste m'en servir pour vérifier l'égalité.

    Peut on sous une requete de ce type ne prendre que le 7 premiers caracteres d'une chaine et vérifier son égalité avec un autre champ? Si oui, comment faut il procéder et quel est la fonction à utiliser?

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 621
    Points : 56 867
    Points
    56 867
    Billets dans le blog
    40
    Par défaut
    bonjour,

    Citation Envoyé par Jaffix Voir le message
    @f-leb : "set MID(tbl_DCR.SB_N°, 1, 7) = [tbl_Extract_Suprem.SB Number]" il est vrai qu'en y réfléchissant, ce n'est pas correct de l'avoir mis dans la fonction "set" alors que je veux juste m'en servir pour vérifier l'égalité.
    justement, as-tu essayé en supprimant ce premier Set ? Le 2ème Set peut aussi être supprimé a priori.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    @marot_r : lorsque tu parle de l'edditeur de requete c'est lorsqu'on créé une requete sous la fenetre Access? (et non sous VBA?)
    Absolument, la syntaxe du SQL d'Access peux être assez complexe, il est beaucoup plus simple de la faire écrire par Access que d'essayer de la deviner. L'éditeur de requête permet généralement en quelques clics et glisser déplacer de faire ta requête, puis en changeant l'affichage de voir le SQL généré.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/12/2008, 13h23
  2. Réponses: 3
    Dernier message: 05/12/2008, 12h13
  3. Réponses: 4
    Dernier message: 15/08/2008, 17h38
  4. Recherche des enregistrements en fonction des paramètres
    Par infoctet dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/01/2007, 09h51
  5. Réponses: 2
    Dernier message: 27/07/2006, 07h46

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