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.
A voir également:

2 réponses

ryko1820 Messages postés 1677 Date d'inscription   Statut Membre Dernière intervention   276
 
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
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
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