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 :

Problème de modification de tables via un formulaire


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 18
    Points : 12
    Points
    12
    Par défaut Problème de modification de tables via un formulaire
    Bonjour je viens solliciter votre attention car j'ai remarqué quelques mauvais points dans mon projet aux-quels je ne trouve pas de réponses, je dois mettre à jour une table en fonction des champs de mon formulaire( Une zone de texte, une liste et un bouton).

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Dim rst As DAO.Recordset
    Dim rst2 As DAO.Recordset
    Dim plan As String
    Dim zone As String
    Dim str1 As String
    Dim str2 As String
    Dim SQL As String
     
    zone = Texte312.Value
    plan = Modifiable297.Value
     
    'Ici on selectionne l'ID correspondant au nom de plan dans la table DRAWINGLIST
    Set rst = CurrentDb.OpenRecordset( _
      "SELECT [DRAWINGID] FROM [DRAWINGLIST] WHERE [NAME] = 'PLP1305143-A1'", _
      dbOpenSnapshot) ' Problème n°1 ici
     
    str1 = rst("DRAWINGID")
    MsgBox "L'ID est " & str1
    rst.Close
    Set rst = Nothing
     
    'Ici on selectionne les ID correspondant au numéro de plan sélectionné précédement
    Set rst2 = CurrentDb.OpenRecordset( _
      "SELECT [ID] FROM [COMPONENTS] WHERE [DRAWINGID] = " & CStr(str1) & "", _
      dbOpenSnapshot)
      str2 = rst2("ID")
      MsgBox "L'ID est " & str2
      With rst2   'Faire des actions sur le recordset
                    ' Trouver première occurrence
            Do While Not .NoMatch                                  'Probleme n°2 ici 
                SQL = "UPDATE SOLODATA SET SOLODATA.TAG1=zone where SOLODATA.SOLODATALINK=str2"
                DoCmd.RunSQL SQL
            Loop
        End With
     
    'str2 = rst2("ID")
    MsgBox "L'ID est " & str2
    rst2.Close
    Set rst2 = Nothing
    Voici les quelques points qui me pose problème:

    1- Dans mon premier recorset je suis obligé de rentrer une valeur en dur ('PLP1305143-A1') sinon une erreur survient: "Type de données incompatible dans l'expression du critère".

    2- Probleme majeur: je ne sais pas vraiment comment modifier tout les champs concerné par mon 2eme recorset, actuellement il modifie juste le premier champs concerné.

    3- Lors de l'éxécution une fenetre s'ouvre redemandant la valeur de ma variable "zone" et de "str2" ce qui est embetant à remplir pour des milliers de champs concerné.


    merci d'avance, cordialement

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Après m'être cassé la tête j'ai enfin trouvé une solution qui pour l'instant fonctionne:

    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
     
    Dim rst As DAO.Recordset
    Dim plan As Integer
    Dim zone As String
    Dim str1 As String
    Dim total As String
     
    zone = Texte312.Value
    plan = Modifiable297.Value
     
    'Ici on selectionne les ID correspondant au numéro de plan sélectionné précédement
    Set rst = CurrentDb.OpenRecordset( _
      "SELECT [ID] FROM [COMPONENTS] WHERE [DRAWINGID] = " & CStr(plan) & "", _
      dbOpenSnapshot)
     
      'Premier champs concernés
      str1 = rst("ID")
     
      'Moyen de connaitre le nombre de champs total concerné
      rst.MoveLast
      total = rst.RecordCount + str1
      rst.MoveFirst
     
      With rst                                                                  'Faire des actions sur le recordset
            Do While Not .NoMatch                                               'Exécuter changement si trouver
                DoCmd.SetWarnings False                                         'Désactivation des messages de confirmation
                DoCmd.RunSQL "UPDATE SOLODATA SET SOLODATA.TAG1=" & zone & " where SOLODATA.SOLODATALINK=" & str1 & ""
                DoCmd.SetWarnings True                                          'Réactivation des messages de confirmation
                str1 = str1 + 1                                                 'Initialisation du champs suivant
                If total = str1 Then Exit Do                                    'Stop au dernier champs: evite un message d'erreur
                rst.MoveNext                                                    'changement de champs
               Loop
        End With
     
    'fermeture du recordSet
    rst.Close
    Set rst = Nothing
    Merci quand même de votre attention.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Modification du table via un formulaire
    Par ataahualpa dans le forum VBA Access
    Réponses: 6
    Dernier message: 02/10/2014, 11h04
  2. Réponses: 25
    Dernier message: 03/05/2007, 15h40
  3. Modification de tables via requête Access
    Par Norin dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 16/06/2006, 19h49
  4. Recherche dans une table via un formulaire
    Par Z[ee]k dans le forum Access
    Réponses: 3
    Dernier message: 05/06/2006, 11h14
  5. Réponses: 3
    Dernier message: 02/01/2006, 11h53

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