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

[Résolu/Fermé]
Signaler
-
 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

Messages postés
16045
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 octobre 2021
1 548
Bonjour,

comment avez-vous defini rs1.

Si c'est une simple mise a jour, utilsez un recordset avec edit et update.
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
Messages postés
16045
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 octobre 2021
1 548
Bonjour,

Voici ce que j'ai pu écrire, [clef] est le champ de ma clé primaire. peut pas marcher,
rs1 n'est "rempli", et s'il l'etait, vous ne pourriez pas modifier un seul enregistrement, car pour cela il faut faire un update sur l'enregistrement [clef]=" & i

Pourquoi vous ne pouvez pas utiliser le code que j'ai ecrit, cela couvre tous les enregistrements de la table et pas besoin d'en connaitre le min et max du champ clef ????
En utilisant le code que vous avez écrit, je ne saurai plus comment avoir MyString, puisqu'il dépend de la valeur de la clé primaire donc mon i.

MyString = DLookup("[holeID]", "Avancement", "[clef]=" & i)

Alors comment avoir my string en utilisant votre code?
Messages postés
16045
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 octobre 2021
1 548
Re,

comme vous changez de nom de champ a chaque fois, cette ligne fait le boulot

rs.Fields("test") = "S" & MyPrefix & rs.Fields("test") & "AVAN.M"

donc

rs1.Fields("holeID") = "S" & MyPrefix & rs1.Fields("holeID") & "AVAN.M"

ca fait ce que vous attendez !!!!

je vais vous commenter le code que je vous ai ecrit et vous comprendrez peut-etre .

Private Sub Commande5_Click()
Dim db As Database, rs1 As Recordset, MyPrefix
'votre prefixe
MyPrefix = BAGO
'base courrante
Set db = CurrentDb
'remplissage recordset
Set rs1 = db.OpenRecordset("Avancement", dbOpenTable)
'recordset non vide
If Not rs1.EOF And Not rs1.EOF Then
'positionnement sur le premier enregistrement
rs1.MoveFirst
'boucle debut a fin du recordset
Do While Not rs1.EOF
'positionement en edition de l'enrgitrement en cours
rs1.Edit
'ecriture du champ
rs1.Fields("holeID") = "S" & MyPrefix & rs1.Fields("holeID") & "AVAN.M"
'mise a jour de l'enregistrement en cours
rs1.Update
'avance d'un enregistrement
rs1.MoveNext
Loop
End If
End Sub

A+