Boucle sur les enrégistrements du champ "clé primaire"

Résolu
Maude_84 -  
 Maude_84 -
Bonjour,
Voilà, je veux faire une boucle du genre:
For i = a To b
'avec a= le plus petite valeur du champ clé primaire
'b= la plus grande valeur du champ clé primaire

Comment désigner a et b?

je fais cette boucle pour mettre à jour le champ "test" de ma table Tbl
MyString = DLookup("[test]", "Tbl", "[clef]=" & i)
MyPrefix = BAGO
tt = "S" & MyPrefix & MyString & "AVAN.M"

rs1.Fields("test") = tt

1 réponse

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    comment avez-vous defini rs1.

    Si c'est une simple mise a jour, utilsez un recordset avec edit et update.
    0
    1. Maude_84
       
      Bonjour, j'ai défini rs1 comme un Recordset

      la mise à jour se fait quand je fixe la valeur de a et b de ma boucle, juste entre les deux valeurs 'a' et ' b.'
      tout le champ test n'est pas mis à jour parce que le 'a' que je donne n'est pas la plus petie valeur et le 'b' n'est pas la plus grande.
      je cherche alors le plus grand intervalle qui pourra me permettre de remplir totalement mon champ 'test'.
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      la mise à jour se fait quand je fixe la valeur de a et b de ma boucle, juste entre les deux valeurs 'a' et ' b.'

      et

      je cherche alors le plus grand intervalle qui pourra me permettre de remplir totalement mon champ 'test'.

      pas la meme chose, soit vous voulez mettre a jour les enregistrements dont la cle va de 'a' a 'b' ou vous voulez mettre a jour tous les enregistrements (plus petite valeur cle a plus grande valeur cle)
      0
    3. Maude_84
       
      je veux mettre a jour tous les enregistrements (plus petite valeur de la clé à la plus grande valeur de la clé).
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re

      pour tester je prends un bouton, adapter a votre contexte,

      Private Sub Commande5_Click()
      Dim db As Database, rs1 As Recordset, MyPrefix

      MyPrefix = BAGO
      Set db = CurrentDb
      Set rs1 = db.OpenRecordset("Tbl", dbOpenTable)
      'recordset non vide
      If Not rs1.EOF And Not rs1.EOF Then
      rs1.MoveFirst
      Do While Not rs1.EOF
      rs.Edit
      rs.Fields("test") = "S" & MyPrefix & rs.Fields("test") & "AVAN.M"
      rs.Update
      rs1.MoveNext
      Loop
      End If
      End Sub
      0
    5. Maude_84
       
      bonjour,
      je ne peux pas utiliser ce code dans mon script.
      Voici ce que j'ai pu écrire, [clef] est le champ de ma clé primaire.

        Dim db As Database
      Dim rs1 As Recordset
      Dim rs2 As Recordset
      Dim i, a, b As Long
      Dim MyString As Variant
      Dim MyPrefix As Variant
      Dim tt As String

      'boucle sur la clé primaire
      a = DMin("[clef]", "Avancement")
      b = DMax("[clef]", "Avancement")
      For i = a To b
      MyString = DLookup("[holeID]", "Avancement", "[clef]=" & i)

      MyPrefix = BAGO

      tt = "S" & MyPrefix & Mid(MyString, 4, 4) & Right(MyString, 1) & "AVAN.M"

      'ecriture champ tt
      rs1.Fields("holeID") = tt

      'mise a jour
      rs1.Update
      Next i
      End Sub
      0