Comment faire pour passer à l'enregistrement suivant dans MS Access
Je suis nouveau dans MS access 2007 de programmation..
Je veux obtenir des informations de la base de données un par un.Mais le code que j'utilise n'est pas l'exécution de cette. Si je suis sur le premier disque, puis il va directement vers le dernier enregistrement qui je ne veux pas. Je veux le prendre au prochain record..
Voici mon code:
Private Sub MoveNextBttn_Click()
Dim db As Database
Set db = CurrentDb
Dim str As String
str = "SELECT * FROM Table_Emp_Info"
Dim rst As Recordset
Set rst = db.OpenRecordset(str)
Dim xxx As Integer
xxx = 1
'If the recordset is empty, exit.
If rst.EOF Then
Exit Sub
End If
Do Until rst.EOF
Emp_ID_Text.Value = rst.Fields("EmpID")
Rowsource_Designation.Value = rst.Fields("Designation")
RowSource_Dept.Value = rst.Fields("Dept")
DOJ_Text.Value = rst.Fields("Date_Of_Joining")
rst.MoveNext
'xxx = xxx + 1
Loop
rst.Close
End Sub
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser un lié formulaire au lieu d'un indépendant forme.
Il semble que vous essayez de réinventer fonctionnalités qui sont intégrées dans l'Accès. Pour modifier votre formulaire à partir d'un formulaire indépendant à une forme liée procédez de la manière suivante:
SELECT * FROM Table_Emp_Info
dans la propriété RecordSource (vous pouvez aussi tout simplement entrerTable_Emp_Info
pour lier le formulaire directement à la requête de la table sous-jacente).Maintenant vous pouvez simplement utiliser l'5 boutons en bas à gauche de votre formulaire de naviguer dans vos dossiers. De gauche à droite, les boutons vont vous prendre pour le Premier, Précédent, Suivant, Dernier, ou un Nouveau record.
Pour plus d'informations, effectuez une recherche sur "ms access sous forme liée".
Votre code à l'air bon, mais vous écrivez les valeurs de
Table_Emp_Info
aux mêmes endroits à chaque itération:Cela rend les emplacements de portefeuille les valeurs de la dernière ligne à la fin de la boucle. Était-ce votre intention, ou avez-vous voulez quelque chose de différent?
Modifier
À en juger par votre commentaire, vous avez envie de faire une étape à travers les n-uplets de
Table_Emp_Info
. Dans ce cas, vous ne voulez pas de la boucle, le clic doit faire l'rst.MoveNext
et mettre à jour les champs où les données sont affichées.Quelque chose comme ça pourrait fonctionner, mais un avertissement est en place: je sais presque rien sur la façon dont le modèle d'Accès aux œuvres.
Il me semble que vous devriez être à l'aide d'une seule instruction SQL UPDATE à faire la mise à jour, au lieu de marcher par le biais d'un formulaire et d'un jeu d'enregistrements et de copier les données d'enregistrement par enregistrement.
Cependant, vous ne donnez pas assez d'informations pour me fournir des échantillons de SQL, car il n'y a aucun moyen pour moi de savoir comment votre destination formulaire se rapporte à votre source de données.
Il se pourrait que vous êtes en train de créer de nouveaux enregistrements et de copier les données dans le jeu d'enregistrements, auquel cas vous pouvez utiliser une instruction SQL INSERT au lieu d'une mise à JOUR, mais il n'y a simplement pas assez d'informations ici.
De CÔTÉ:
Par la façon dont, en tant que gardien de la clause d'interdire l'exécution de la boucle lorsque le jeu d'enregistrements ne retourne rien, la méthode habituelle dans DAO est de vérifier si le jeu d'enregistrements .Recordcount se trouve dans la est 0:
Vous avez réellement ne voulez pas SORTIR, parce que vous n'avez pas fermé votre jeu si vous n'.
Essayer de faire cela avant de faire la boucle: