Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Récupération champs d'une table

5 réponses
Avatar
JV
Bonjour,

Je souhaite récupérer la valeur des champs d'un enregistrement d'une table.

Pour récupérer un champ, il y a l'instruction Dlookup.

Pour récupérer tous les champs de l'enregistrement, y a-t-il une méthode
plus simple que la suivante qui déroule toute la table :
Set db = CurrentDb()
Set rst = db.OpenRecordset("Clients")
Do While Not rst.EOF
If rst![No] = no_client Then
no = rst![No]
nom_client = rst![Nom_client]
prenom = rst![Prenom]
rue = rst![Rue]
rue_complement = rst![Rue_complement]
code_postal = rst![Code_postal]
ville = rst![Ville]
pays = rst![Pays]
Exit Do
End If
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Set db = Nothing

Merci d'avance.

5 réponses

Avatar
3stone
Salut,

JV wrote:
Je souhaite récupérer la valeur des champs d'un enregistrement d'une
table.

Pour récupérer un champ, il y a l'instruction Dlookup.

Pour récupérer tous les champs de l'enregistrement, y a-t-il une
méthode plus simple que la suivante qui déroule toute la table :




Oui, renseigner une source au formulaire...
pourquoi cela n'en est-il pas ainsi ?


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



Set db = CurrentDb()
Set rst = db.OpenRecordset("Clients")
Do While Not rst.EOF
If rst![No] = no_client Then
no = rst![No]
nom_client = rst![Nom_client]
prenom = rst![Prenom]
rue = rst![Rue]
rue_complement = rst![Rue_complement]
code_postal = rst![Code_postal]
ville = rst![Ville]
pays = rst![Pays]
Exit Do
End If
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Set db = Nothing

Merci d'avance.


Avatar
jero
Salut,
Qques autres méthodes :
Sub Méthode2(NumEnreg As Long)
Dim Db As DAO.Database, Rst As DAO.Recordset
Set Db = CurrentDb()
Set Rst = Db.OpenRecordset("SELECT * Clients WHERE [No]=" & NumEnreg)
With Rst
Code_Postal = ![Code_Postal]
Ville = ![Ville]
Pays = ![Pays]
.Close
End With
Set Rst = Nothing
Set Db = Nothing
End Sub

Sub Méthode3(NumEnreg As Long)
Dim Db As DAO.Database, Rst As DAO.Recordset
Set Db = CurrentDb()
Set Rst = Db.OpenRecordset("Clients")
With Rst
.Index = "PrimaryKey"
.Seek "=", NumEnreg
If Not .NoMatch Then
Code_Postal = ![Code_Postal]
Ville = ![Ville]
Pays = ![Pays]
End If
.Close
End With
Set Rst = Nothing
Set Db = Nothing
End Sub

Sub Méthode4(NumEnreg As Long)
Dim Db As DAO.Database, Rst As DAO.Recordset, Critère As String
Set Db = CurrentDb()
Set Rst = Db.OpenRecordset("SELECT * FROM Clients")
Critère = "[No]=" & NumEnreg
With Rst
.FindFirst (Critère)
If Not .NoMatch Then
Code_Postal = ![Code_Postal]
Ville = ![Ville]
Pays = ![Pays]
End If
.Close
End With
Set Rst = Nothing
Set Db = Nothing
End Sub
Note : la méthode la plus rapide est la n°3 (avec un index)

"3stone" a écrit dans le message de news:
%
Salut,

JV wrote:
Je souhaite récupérer la valeur des champs d'un enregistrement d'une
table.

Pour récupérer un champ, il y a l'instruction Dlookup.

Pour récupérer tous les champs de l'enregistrement, y a-t-il une
méthode plus simple que la suivante qui déroule toute la table :




Oui, renseigner une source au formulaire...
pourquoi cela n'en est-il pas ainsi ?


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



Set db = CurrentDb()
Set rst = db.OpenRecordset("Clients")
Do While Not rst.EOF
If rst![No] = no_client Then
no = rst![No]
nom_client = rst![Nom_client]
prenom = rst![Prenom]
rue = rst![Rue]
rue_complement = rst![Rue_complement]
code_postal = rst![Code_postal]
ville = rst![Ville]
pays = rst![Pays]
Exit Do
End If
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Set db = Nothing

Merci d'avance.





Avatar
JV
Merci à tous les deux

"jero" <~ a écrit dans le message de news:

Salut,
Qques autres méthodes :
Sub Méthode2(NumEnreg As Long)
Dim Db As DAO.Database, Rst As DAO.Recordset
Set Db = CurrentDb()
Set Rst = Db.OpenRecordset("SELECT * Clients WHERE [No]=" & NumEnreg)
With Rst
Code_Postal = ![Code_Postal]
Ville = ![Ville]
Pays = ![Pays]
.Close
End With
Set Rst = Nothing
Set Db = Nothing
End Sub

Sub Méthode3(NumEnreg As Long)
Dim Db As DAO.Database, Rst As DAO.Recordset
Set Db = CurrentDb()
Set Rst = Db.OpenRecordset("Clients")
With Rst
.Index = "PrimaryKey"
.Seek "=", NumEnreg
If Not .NoMatch Then
Code_Postal = ![Code_Postal]
Ville = ![Ville]
Pays = ![Pays]
End If
.Close
End With
Set Rst = Nothing
Set Db = Nothing
End Sub

Sub Méthode4(NumEnreg As Long)
Dim Db As DAO.Database, Rst As DAO.Recordset, Critère As String
Set Db = CurrentDb()
Set Rst = Db.OpenRecordset("SELECT * FROM Clients")
Critère = "[No]=" & NumEnreg
With Rst
.FindFirst (Critère)
If Not .NoMatch Then
Code_Postal = ![Code_Postal]
Ville = ![Ville]
Pays = ![Pays]
End If
.Close
End With
Set Rst = Nothing
Set Db = Nothing
End Sub
Note : la méthode la plus rapide est la n°3 (avec un index)

"3stone" a écrit dans le message de news:
%
> Salut,
>
> JV wrote:
>> Je souhaite récupérer la valeur des champs d'un enregistrement d'une
>> table.
>>
>> Pour récupérer un champ, il y a l'instruction Dlookup.
>>
>> Pour récupérer tous les champs de l'enregistrement, y a-t-il une
>> méthode plus simple que la suivante qui déroule toute la table :
>
>
> Oui, renseigner une source au formulaire...
> pourquoi cela n'en est-il pas ainsi ?
>
>
> --
> A+
> Pierre (3stone) Access MVP
> Perso: http://www.3stone.be/
> MPFA: http://www.mpfa.info/ (infos générales)
>
>
>
>> Set db = CurrentDb()
>> Set rst = db.OpenRecordset("Clients")
>> Do While Not rst.EOF
>> If rst![No] = no_client Then
>> no = rst![No]
>> nom_client = rst![Nom_client]
>> prenom = rst![Prenom]
>> rue = rst![Rue]
>> rue_complement = rst![Rue_complement]
>> code_postal = rst![Code_postal]
>> ville = rst![Ville]
>> pays = rst![Pays]
>> Exit Do
>> End If
>> rst.MoveNext
>> Loop
>> rst.Close
>> Set rst = Nothing
>> Set db = Nothing
>>
>> Merci d'avance.
>




Avatar
Mehdi HAMMADI
Bonjour M. Pierre,
Je ne comprend pas ce que vous voulez dire par renseigner une source au
formulaire
Merci de m'orienter un peut plus.

Cordialement
MehdiH
__________________________________

"3stone" a écrit dans le message de groupe de
discussion : #
Salut,

JV wrote:
Je souhaite récupérer la valeur des champs d'un enregistrement d'une
table.

Pour récupérer un champ, il y a l'instruction Dlookup.

Pour récupérer tous les champs de l'enregistrement, y a-t-il une
méthode plus simple que la suivante qui déroule toute la table :




Oui, renseigner une source au formulaire...
pourquoi cela n'en est-il pas ainsi ?


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



Set db = CurrentDb()
Set rst = db.OpenRecordset("Clients")
Do While Not rst.EOF
If rst![No] = no_client Then
no = rst![No]
nom_client = rst![Nom_client]
prenom = rst![Prenom]
rue = rst![Rue]
rue_complement = rst![Rue_complement]
code_postal = rst![Code_postal]
ville = rst![Ville]
pays = rst![Pays]
Exit Do
End If
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Set db = Nothing

Merci d'avance.





Avatar
Michel__D
Bonjour,

Si tu ne comprends pas; laisse tomber c'est plus simple.

PS: Avant que l'on t'oriente, pose toi la question de ce que tu cherche
à faire, tu auras alors un début de réponse.

Mehdi HAMMADI a écrit :
Bonjour M. Pierre,
Je ne comprend pas ce que vous voulez dire par renseigner une source
au formulaire
Merci de m'orienter un peut plus.

Cordialement
MehdiH
__________________________________

"3stone" a écrit dans le message de groupe de
discussion : #
Salut,

JV wrote:
Je souhaite récupérer la valeur des champs d'un enregistrement d'une
table.

Pour récupérer un champ, il y a l'instruction Dlookup.

Pour récupérer tous les champs de l'enregistrement, y a-t-il une
méthode plus simple que la suivante qui déroule toute la table :




Oui, renseigner une source au formulaire...
pourquoi cela n'en est-il pas ainsi ?


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)