Modification d'une table à partir d'un formulaire.

maxmusix -  
 maxmusix -
Bonjour, je suis actuellement en stage et ma principale mission et de reprendre un projet Plant 4D, access. Je souhaiterai à partir d'un formulaire simple ( 2 listes déroulantes et un bouton) modifier les champs d'une colonne de ma table ayant pour valeur "300@277@40".

Voici mon code non fonctionnel rien ne se passe à l'exécution, la table n'est pas modifiée.


Private Sub Commande295_Click()

Dim modif As DAO.Recordset

'Modifiable306 est ma liste déroulante
If Modifiable306.Value = "300@277@40" Then

    'Ouverture de la table nomTable
    DoCmd.OpenTable "nomTable", acViewNormal, acEdit
     
    'Création d'un recordset, de type dbOpenTable : Modification en direct
    Set modif = CurrentDb.OpenRecordset("SELECT colonne1 FROM nomTable where colonne1='300@277@40'", [dbOpenDynaset])
     
    'On se place sur le premier enregistrement
    modif.MoveFirst
    
    'Tant que l'on atteint pas la fin du recordset
    While Not modif.EOF
        'Mode édition
        modif.Edit
        'Condition de changement de donnée
        Dim lField As DAO.Field
        For Each lField In modif.Fields
            If lField.Value = "300@277@40" Then lField.Value = 10
        Next
        'Mise à jour de la table
        modif.Edit
        'Passage au champ suivant
        modif.MoveNext
    Wend
    
    'Fermeture du recordset
    modif.Close
    Set modif = Nothing
    
End If

End Sub



Merci d'avance pour votre aide, cordialement.

2 réponses

  1. ryko1820 Messages postés 1633 Date d'inscription   Statut Membre Dernière intervention   310
     
    Hello,

    peut-être que le champ n'est pas modifiable ?

    MSDN préconise de tester la valeur Recordset.Updatable avant de lire et écrire dans le champ d'un objet DAO Recordset.

    Si ça peut t'aider.
    0
    1. maxmusix
       
      Merci de ta réponse ryko1820, effectivement j'ai oublié de tester l'état de mon recordset.

      J'ai donc voulu tester celle ci néanmoins je tombe sur une erreur '91' : "Variable objet ou Variable de block With non définie"

      Voici ce que j'ai ajouté:

      
       'Condition de changement de donnée
              Dim lField As DAO.Field
              Dim test As Boolean
      
              'L'erreur ce trouve ici 
              test = lField.DataUpdatable
              If test = False Then MsgBox ("non modiable")
      
      


      J'ai recherché la syntaxe exacte sur msdn, visiblement je passe à côté de quelque chose.

      merci d'avance
      0
  2. maxmusix
     
    Bonjour, Je me pose la question: ne serait-il pas plus simple d'exécuter une requête de mise a jour sur pression du bouton?

    Du style :

    Update NomTABLE SET Colonne1 = 10 WHERE Colonne1 = "300@277@40"
    

    Ici il y à une erreur de syntaxe.

    merci d'avance, cordialement
    0