Requete Update problème !

Résolu
Bonjour,

Je suis nouveau sur le forum j'espère que je poste bien au bon endroit !

Alors je vous montre un bout de code (le contexte ne me semble pas très important pour ma question masi si besoin je le detaillerai)
Pour info quand même, projectnumber est de type intger; dans ma table Correspondances, champ1 est de type intger et champ2 est de type OUI/NON

Private Sub updateEdit()

Dim i As Integer

For i = 0 To DMax("projectNumber", "Projet")
If Me![sfmTestListeProjet]![ProjectNumber] = i Then
CurrentDb.Execute "Update Correspondances Set champ2 = True WHERE champ1 = " + i
End If
Next i
End Sub

Le problème c'est que j'ai une erreur de type Erreur d'execution 13 : Incompatibilité de type.

J'ai testé avec
CurrentDb.Execute "Update Correspondances Set champ2 = True WHERE champ1 = 1"
Et ça marche sans problème.

Je ne comprend pas ce qui ne vas pas. Si quelqu'un pouvait m'aider je serais très reconnaisssant.

Merçi d'avance

6 réponses

  1. Re,

    il faut rafraichir l'affichage de votre formulaire a la fin de votre boucle.
    1. En fait c'est bon , je m'y prenais super mal pour parcourir mon sous formulaire. Voila mon nouveau code

      Private Sub caseSelected()
      
          Dim i As Integer
          Dim rsProj As DAO.Recordset
          Set rsProj = Me.sfmCorrespondanceProjet.Form.Recordset
      
          Do While Not rsProj.EOF
              i = rsProj("ProjectNumber")
              CurrentDb.Execute "Update Correspondances Set champ2 = True WHERE champ1 =  " & i & ";"
              rsProj.MoveNext
          Loop
      
      End Sub

      Le problème de ce code c'est que je l'appelle sur le clique d'un bouton. Il m'update le sous fomulaire relié à la table Correspondances, mais les case a cocher ne se cochent pas automatiquement. C'est assez étrange, il faut que je passe ma souris sur la case pour qu'elle se coche (sans cliker).
      Quelqu'un serait me dire pourquoi et comment réparer ça ?
      1. Bonjour,

        Me![sfmTestListeProjet]![ProjectNumber] est-ce un champ de formulaire ??? Comment est rempli ce formulaire
        1. Merci beaucoup f894009, ta syntaxe marche à merveille, mais je ne peut pas en dire autant de mon code. J'aimerais que mon code a chaque i, parcourt tous les Me![sfmTestListeProjet]![ProjectNumber]. Or la des qu'il en trouve 1, il s'arrête. J'ai l'impression que pour parcourir tous mes projectNumber qui sont dans mon sousformulaire il faut que je pâsse par un recoidset.

          Est ce bien le cas ? Si oui comment dois je m'y prendre (j'ai tenté quelques trucs mais j'ai vraiment du mal avec les recordsets...) . OU y a-t-il une autre solution ?

          Merci d'avance !
          1. Bonjour,

            CurrentDb.Execute "Update Correspondances Set champ2 = True WHERE champ1 ='" & i & "';"
            1. Juste à propose de cette structure, elle marche très bien pour i INTEGER. Cependant elle ne marche pas pour les String, j'ai essayé diférentes combinaisons sans succès. Y a-t-il aussi une syntaxe simple de la forme précédente ?