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 :

Mise à jour Table Access


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 45
    Points
    45
    Par défaut Mise à jour Table Access
    Bonjour,

    J'aimerai procéder à la mise à jour de ma table Access, à partir d'une autre table.

    Pour cela, je veux supprimer la ligne à modifier et la remplacer par la ligne à jour (suivant des conditions) qui se situe dans la seconde table.

    J'ai réussi à programmer la suppression de la ligne mais je ne vois pas comment faire pour la remplacer par l'autre ligne.

    Merci pour la'ide que vous pourrez m'apporter.

    30avril1989

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Il faut faire une requete d'ajout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO TableDestination (ChampDestination1, ChampDesctination2, ... ChampDestinationX) SELECT ChampSource1, ChampSource2, ... ChampSourceX FROM TableSource;
    Attention : les champs destinations et les champs sources doivent :
    • etre en nombres egaux
    • etre dans le meme ordre
    • avoir des format compatibles(sinon, prevoir la conversion dans la partie SELECT)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 45
    Points
    45
    Par défaut
    Re,

    Merci pour ton aide!

    Mais j'ai des erreurs de compilations au niveau des instructions.

    Voici mon code:

    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
    Private Sub Commande6_Click()
    Dim X As DAO.Recordset
    Set X = CurrentDb.OpenRecordset("Parc voiture")
     
    If [Mise à jour].[Statut] = "occasion" Or [Mise à jour].[Statust] = "Nouveauté" Then
    X.Edit
     
    DELETE [Parc Voiture].* FROM [Parc hélico];
     
    INSERT INTO [Parc Voiture] (Modèle, Numéro de série, énergie, Statut) SELECT Modèle, Numéro de série, énergie, statut FROM Mise à jour;
     
    X.Update
    X.MoveNext
    X.Close
     
    End Sub

    Merci pour l'aide que vous pourrez m'apporter.

    30avril1989

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Tout d'abord, nous allons essayer de ne pas mettre de blancs (les remplacer par "_") ni d'accents dans les noms de tables et de champs...

    Ensuite, il va falloir mettre un peu de logique dans tout ca... Pourriez vous expliquer la structure des tables utilisees ?

    Et enfin, nous essayerons d'arriver au resultat recherche

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 45
    Points
    45
    Par défaut
    Merci pour ta réponse!

    Mes deux tables sont composées des champs suivants:

    Modèle
    Numéro de série
    Energie
    Statut

    Ma table "Parc voiture" est la table qui regroupe tous les véhicules de mon parc.

    Ma deuxième table ("Mise à jour") permet de mettre à jour ma table "Parc voiture". Si "statut" de la table "Mise à jour" est "Nouveauté" ou "Accidenté", et que le modèle et le numéro de série de la voiture correspondent à une voiture présente dans le "Parc Voiture"(condition que j'ai oublié d'insérer dans mon programme), on supprime la ligne correspondante dans la table "Parc Voiture" et on la remplace par la ligne mise à jour de la table "Mise à jour".

    Sinon, on ajoute la ligne. (non présent dans le code)

    J'espère avoir été un peu plus clair!

    Merci de ton aide.

    30avril1989

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Voici du code qui devrait t'aider :
    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
    Private Sub Commande6_Click()
     
    Dim Rs0     As DAO.Recordset
    Dim Rs1     As DAO.Recordset
     
    ' Definir les recordsets
    Set Rs0 = CurrentDb.OpenRecordset("SELECT * FROM Mise_a_jour WHERE Statut IN ('Nouveaute', 'Accidente');", dbOpenSnapshot)
    Set Rs1 = CurrentDb.OpenRecordset("SELECT * FROM Parc_voiture;", dbOpenDynaset)
     
    ' Boucler sur Mise_a_jour
    While Not Rs0.EOF
        ' Rechercher l'enregistrement dans Parc_voiture
        Rs1.FindFirst ("Modele='" & Rs0.Fields("Modele").Value & "' AND Numero_de_serie = '" & Rs0.Fields("Numero_de_serie").Value & "'")
        ' Si l'enregistrement n'est pas trouve dans Parc_Voiture, l'ajouter avec ses cles
        If Rs1.NoMatch Then
            Rs1.AddNew
            Rs1.Fields("Modele").Value = Rs0.Fields("Modele").Value
            Rs1.Fields("Numero_de_serie").Value = Rs0.Fields("Numero_de_serie").Value
        Else
        ' Sinon, l'editer pour modification
            Rs1.Edit
        End If
        Rs1.Fields("Energie").Value = Rs0.Fields("Energie").Value
        Rs1.Fields("Statut").Value = Rs0.Fields("Statut").Value
        ' Mettre a jour Parc_voiture
        Rs1.Update
        ' Passer a l'enregistrement suivant de Mise_a_jour
        Rs0.MoveNext
    Wend
    ' On ferme tout et on libere la memoire
    Rs1.Close
    Rs0.Close
    Set Rs1 = Nothing
    Set Rs0 = Nothing
     
    End Sub

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 45
    Points
    45
    Par défaut
    Bonjour,

    Merci pour ton aide!

    Mais lors de certaines exécutions, voivi le message qui apparait:

    Erreur d'éxécution '3022':
    Modifications non effectués: risque de doublons dans champs index, clé principale ou relation interdisant les doublons. Modifier les données des champs contenant les doublons, enlevez ou redéfinnisez l'index pour permettre les doublons et recommencez.

    Je ne vois pas ce que je dois modifier pour que l'exécution se fasse correctement.

    Merci pour l'aide que vous pourrez m'apporter.

    30avril1989

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Ce message signifie certainement que dans la table mise a jour (Parc_voiture), l'un des champs (ou plusieurs d'entre-eux) sont declares comme index sans doublons et que la mise a jour entrainerait qu'il y aurait un doublon dans cette cle unique.

Discussions similaires

  1. mise à jour table Access
    Par lokura dans le forum Access
    Réponses: 2
    Dernier message: 09/02/2012, 18h01
  2. [XL-2007] Mise à jour table access depuis Excel
    Par daimadoshi dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/09/2011, 15h15
  3. Mise à jour Table Access
    Par 30avril1989 dans le forum VBA Access
    Réponses: 7
    Dernier message: 29/04/2010, 11h01
  4. Mise à jour Tables access via Datagridview
    Par Apocalyptico dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/02/2010, 14h17
  5. Mise à jour table Access en SQL
    Par KrSt94 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/06/2007, 09h47

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