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

IHM Discussion :

Ajouter/Modifier Données dans une table


Sujet :

IHM

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

    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Ajouter/Modifier Données dans une table
    Bonjour,

    Je souhaiterais créer un formulaire afin d'ajouter/modifier des données dans une table.

    Cette table comporte 3 champs : Date | Code Chantier | Code Chef

    Mon formulaire est formé de cette manière :

    La date s'inscrit automatiquement dans une zone de texte à l'ouverture du formulaire, on choisit ensuite le chantier dans une liste déroulante, (on peut choisir de lui attribuer un chef, ou laisser vide) et on appuie sur OK (le Me.requery écrit les données dans la table, et la fenetre est ensuite fermée)

    Cette étape crée un nouvel enregistrement dans ma table.
    Cependant je n'ai aucun moyen de modifier cet enregistrement à partir du formulaire. Si je selectionne la même date et le même chantier pour ensuite modifier le code chef attribué, cela me crée un nouvel enregistrement sans modifier celui déjà créé.

    Que faire, donc, pour résoudre ce probleme sachant que mon couple Date/Code Chantier est unique pour chaque enregistrement ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Bonjour Waals.

    Tu peux ouvrir ton formulaire en mode modification, soit par code VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "monFormulaire", , "", "date=#" & Me.date.Value & "# AND [code chantier]='" & Me.<code chantier>.Value & "'", acFormEdit
    Soit par un Macro, où tu mets tes condition WHERE...

  3. #3
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 175
    Points : 193
    Points
    193
    Par défaut
    Bonjour,
    qu'entendez-vous par:
    Citation Envoyé par Waals Voir le message
    Que faire, donc, pour résoudre ce probleme sachant que mon couple Date/Code Chantier est unique pour chaque enregistrement ?
    Si le couple Date/Code Chantier est unique (clé primaire), il n'est techniquement pas possible d'avoir des doublons

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé de mettre une clé primaire sur les 2 premiers champs, mais dans ce cas là, il ne me créé aucun nouvel enregistrement. Il modifie sans cesse le premier enregistrement.

    Ce que je souhaite avoir : Il peut y avoir plusieurs fois la même date, plusieurs fois le même chantier, mais jamais à la fois la même date et le même chantier.

    >Marc_27 : Je ne vois pas trop comment me debrouiller avec ce morceau de code. Il faut que le formulaire puisse aussi ajouter des enregistrements si le couple Date/Chantier n'existe pas.

  5. #5
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 175
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par Waals Voir le message
    Ce que je souhaite avoir : Il peut y avoir plusieurs fois la même date, plusieurs fois le même chantier, mais jamais à la fois la même date et le même chantier.
    Une clé primaire sur les deux éléments permet d'arriver à un tel résultat.

    En ce qui concerne le fait que ça ne te créé pas d'enregistrement, je dirais qu'il y a une erreur de conception

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    En ce qui concerne le fait que ça ne te créé pas d'enregistrement, je dirais qu'il y a une erreur de conception
    Je pense qu'ils ne sont pas des vrais cles, ils ont cette propriété ensemble...
    s'il met les deux champs comme cle primaire, ils ne pouront pas être dupliques individualement dans la table, même si l'autre champ est différent, et dans ce cas il pourrait mettre que un enregistrement par jour (ou que un chantier), à cause de ne pas avoir une violation de cle.

    >Marc_27 : Je ne vois pas trop comment me debrouiller avec ce morceau de code.
    Concernant le code, il serait à mettre dans l'événement sur click du bouton d'ouverture de ton formulaire...

    Il faut que le formulaire puisse aussi ajouter des enregistrements si le couple Date/Chantier n'existe pas.
    C'est vrai qui avec mon code tu ne pourras faire que les modifications, pas des ajouts.
    Pour avoir l'option après l'ouverture du formulaire (ajout ou modification), je pense qu'il serait plus facile avec des formulaires independents (non liés à ta table).

    Pour faire avec des forms liés je ne suis pas sure de comment le faire.

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

    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    J'arrive parfaitement à ajouter des enregistrements en les tapants dans la table, mais en passant par mon formulaire, rien à faire. Il reste encore et toujours sur la premiere ligne.

    J'ai mis les differents champs dans la "Source Controle" des propriétés de chaque zone de texte/liste déroulante, et ai ajouté un bouton de validation ayant pour code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Valider_Click()
    Me.Requery
    End Sub
    Cela devrait pourtant fonctionner non ? (Sachant que j'ai posé une clé primaire sur Date et code chantier)

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Bonjour Waals.

    Tu dises que avec une cle primaire dans ton champ <Chantier> t'arrive à avoir deux enregistrements avec la même valeur (dans le champ <chantier>), en les tapant directement sur ta table?

    Normalement tu ne devrais pas pouvoir le faire, parce que on ne peut pas avoir des doublons dans un champ cle primaire...

    Sinon, une solution possible (mais pas testé) serait faire quelque chose jor
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Valider_Click()
    If DCount("[Code Chef]", "taTable", "[Date]=#" & Me.<Date>.Value & "# AND [Code chantier]='" & Me.<Code chantier>.Value & "'")>0 then
         'Modification avec un recordset
    else
         Me.Requery 'pour l'ajout d'un nouveau
    End If
    End Sub

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Bon voici ce que j'ai tenté :

    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
    Private Sub Valider_Click()
    Dim db As DAO.Database
    Dim cle As String
    Dim sql As String
    Dim MaTable As Recordset
     
    Set MaTable = CurrentDb.OpenRecordset("AttribChefJ", dbOpenDynaset)
    'Set db = CurrentDb
    cle = Me.sousChantier.Value & Me.Date.Value
    Me.cle = cle
     
     
    MaTable.FindFirst "[cle] = '" & cle & "'"
    If Not MaTable.NoMatch Then
    MaTable.Delete
    MsgBox ("yop")
    End If
    MaTable.AddNew
    MaTable("cle") = cle
    MaTable("Chef") = Me.Chef
    MaTable("DateJ") = Me.Date
    MaTable("Chantier") = Me.Chantier
    MaTable.Update
    MaTable.Close
    End Sub
    Ma clé primaire (champs "cle") étant la concaténation des champs "Chantiers" et "DateJ", elle se doit d'etre unique.

    L'ajout d'enregistrements dans la base se déroule parfaitement, mais lorsque je souhaite en modifier un (MaTable.delete puis MaTable.addNew), j'obtiens une magnifique erreur 3188 : "impossible de mettre a jour; actuellement verrouillé(e) par une autre session sur cette machine."

    (En cliquant sur "débogage", ma ligne MaTable.delete est surlignée)

    Je sens que je suis à 2 doigt d'y arriver, que faut il faire pour que cette erreur ne se produise pas sachant qu'aucune autre session n'est ouverte ?

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Je crois qu'il se produit parce que ton formulaire est lié à la table, et lorsqu'il ouvre l'enregistrement reste bloqué aux modifications...

    J'ai des formulaires avec lesquels je fais des ajouts/ modifs comme tu veux, mais je prefere d'utiliser un formulaire independent pour ne pas avoir ce probleme. T'as déjà pensé à faire ça? Tu peux charger les donnés que tu veux à l'ouverture du formulaire avec de DAO et les ajouts/ modifs tu fais aussi avec DAO.

    Depuis quelque temps je n'utilise que les formulaires independents, je crois que j'ai beaucoup plus de controle sur des actions comme ça...

  11. #11
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 386
    Points : 19 809
    Points
    19 809
    Billets dans le blog
    66
    Par défaut
    Salut,

    Peux-tu préciser comment tu ouvres ce formulaire et aussi le code que tu utilises pour l'ouvrir ?

    A+

Discussions similaires

  1. VB.net Ajout de données dans une table
    Par cyberSpace dans le forum VB.NET
    Réponses: 11
    Dernier message: 26/04/2011, 12h33
  2. [AC-2007] Ajouter des données dans une table vide
    Par othke dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 08/04/2010, 19h16
  3. Access/VBA Ajouter des données dans une table !
    Par vto59 dans le forum VBA Access
    Réponses: 10
    Dernier message: 04/06/2009, 15h18
  4. requêtes ajout plusieurs données dans une table
    Par COLOMBAT dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/04/2008, 17h27
  5. [MySQL] Ajouter des données dans une table avec la cmd update
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 25/09/2007, 19h54

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