Boucle sur les enrégistrements du champ "clé primaire"
Résolu
Maude_84
-
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
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
-
Bonjour,
comment avez-vous defini rs1.
Si c'est une simple mise a jour, utilsez un recordset avec edit et update.-
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'. -
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) -
-
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 -
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
-