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

Résolu/Fermé
Maude_84 - 25 oct. 2013 à 14:21
 Maude_84 - 28 oct. 2013 à 14:40
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
25 oct. 2013 à 16:22
Bonjour,

comment avez-vous defini rs1.

Si c'est une simple mise a jour, utilsez un recordset avec edit et update.
0
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
25 oct. 2013 à 16:55
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
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
25 oct. 2013 à 17:31
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
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