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

1 réponse

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

comment avez-vous defini rs1.

Si c'est une simple mise a jour, utilsez un recordset avec edit et update.
0
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
Maude_84
 
je veux mettre a jour tous les enregistrements (plus petite valeur de la clé à la plus grande valeur de la clé).
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
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