OVH Cloud OVH Cloud

fonction

8 réponses
Avatar
jamillou
Bonjour,

Existerait-il une fonction pr=E9d=E9finie en VB pour donner le=20
N=B0 (ou la position) d'un enregistrement dont le champ Truc=20
a la valeur 5? (Le champ Truc est un Num=E9ro automatique)
Je sais qu'on y arrive en faisant une boucle sur le jeu=20
d'enregistrements, on fait courrir un compteur jusqu'=E0 ce=20
que l'on trouve celui dont le champ Truc =E0 la valeur 5.
Par avance merci de l'info
V=E9ro

8 réponses

Avatar
Emmanuel DURAND
Je suppose qu'on parle de recordset?
dans ce cas, il faut faire un Find sur le champ Truc.
Sinon, je ne comprends pas le contexte.
Avatar
Jean-Marc
"" a écrit dans
le message de news:115301c4d631$f4a8a0d0$
Bonjour,



Existerait-il une fonction prédéfinie en VB pour donner le
N° (ou la position) d'un enregistrement dont le champ Truc
a la valeur 5? (Le champ Truc est un Numéro automatique)
Je sais qu'on y arrive en faisant une boucle sur le jeu
d'enregistrements, on fait courrir un compteur jusqu'à ce
que l'on trouve celui dont le champ Truc à la valeur 5.
Par avance merci de l'info
Véro



Hello,

Dans un fichier séquentiel ou dans un recordset d'une base
de données?

Dans un fichier séquentiel, ca n'existe pas.
Dans une DB, bien sur ça existe:
on fait soit une clause Where dans la requête, soit on utise
la méthode Find sur le recordset (ce qui revient à faire un
WHERE, d'ailleurs).

Si tu peux préciser un tout petit peu (dans le cas d'une base,
préciser DAO ou ADO ou autre) ?

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Avatar
jamilloux Véronique
Bonjour,

Merci de répondre.
Effectivement je parle recordset.
J'ai un formulaire basé sur une table dans lequel je
propose de recherche une enregistrement sur la valeur du
champ Truc. Et donc je pensais utiliser la methode
docmd.gotorecord qui demande en paramètre un N°
d'enregistrement.
Donc je vais essayer doCmd.findrecord .
Merci de la suggestion
Bonne journée
Véronique
-----Message d'origine-----
Je suppose qu'on parle de recordset?
dans ce cas, il faut faire un Find sur le champ Truc.
Sinon, je ne comprends pas le contexte.


.



Avatar
Véronique Jamilloux
Bonjour,

Merci de l'information, j'utilise des recordset DAO, donc
je vais essayer la méthode doCmd.findRecordset.
Bonne fin de journée
Véronique
-----Message d'origine-----
""


a écrit dans
le message de news:115301c4d631$f4a8a0d0


$
Bonjour,



Existerait-il une fonction prédéfinie en VB pour donner




le
N° (ou la position) d'un enregistrement dont le champ




Truc
a la valeur 5? (Le champ Truc est un Numéro automatique)
Je sais qu'on y arrive en faisant une boucle sur le jeu
d'enregistrements, on fait courrir un compteur jusqu'à ce
que l'on trouve celui dont le champ Truc à la valeur 5.
Par avance merci de l'info
Véro



Hello,

Dans un fichier séquentiel ou dans un recordset d'une


base
de données?

Dans un fichier séquentiel, ca n'existe pas.
Dans une DB, bien sur ça existe:
on fait soit une clause Where dans la requête, soit on


utise
la méthode Find sur le recordset (ce qui revient à faire


un
WHERE, d'ailleurs).

Si tu peux préciser un tout petit peu (dans le cas d'une


base,
préciser DAO ou ADO ou autre) ?

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."


.



Avatar
Pascal B.
Bonjour Véro,

C'est surtout pas FindRecordset !
Mais plutot FindFirst pour trouver un enregistrement précis.

Exemple pour un Recordset de type Dynaset:

Dim RS as Recordset
Dim MaValeur as Integer
Set RS = DB.OpenRecordset("MaTableOuQuery")
RS.FindFirst "MonChamp=" & MaValeur
If RS.NoMatch then
'... (pas trouvé)
Else
'... (trouvé)
End if

Pour un Recordset de type Table, on préférera utiliser la méthode Seek (beaucoup plus rapide):

Dim RS as Recordset
Dim MaValeur as Integer
Set RS = DB.OpenRecordset("MaTable", dbOpenTable)
'Remarque: La PrimaryKey désigne le champs "MonChamp" dans la définition de la table (voir Access)
RS.Index = "PrimaryKey"
RS.Seek "=", MaValeur
If RS.NoMatch then
'... (pas trouvé)
Else
'... (trouvé)
End if

Note: La méthode FindFirst foctionne aussi sur les Tables.
Voir aussi: FindPrevious, FindNext et FindLast dans l'aide

Pascal B.

"Véronique Jamilloux" wrote in message news:9fea01c4d6b9$1d0be870$
Bonjour,

Merci de l'information, j'utilise des recordset DAO, donc
je vais essayer la méthode doCmd.findRecordset.
Bonne fin de journée
Véronique
-----Message d'origine-----
""


a écrit dans
le message de news:115301c4d631$f4a8a0d0


$
Bonjour,



Existerait-il une fonction prédéfinie en VB pour donner




le
N° (ou la position) d'un enregistrement dont le champ




Truc
a la valeur 5? (Le champ Truc est un Numéro automatique)
Je sais qu'on y arrive en faisant une boucle sur le jeu
d'enregistrements, on fait courrir un compteur jusqu'à ce
que l'on trouve celui dont le champ Truc à la valeur 5.
Par avance merci de l'info
Véro



Hello,

Dans un fichier séquentiel ou dans un recordset d'une


base
de données?

Dans un fichier séquentiel, ca n'existe pas.
Dans une DB, bien sur ça existe:
on fait soit une clause Where dans la requête, soit on


utise
la méthode Find sur le recordset (ce qui revient à faire


un
WHERE, d'ailleurs).

Si tu peux préciser un tout petit peu (dans le cas d'une


base,
préciser DAO ou ADO ou autre) ?

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."


.



Avatar
Véronique Jamilloux
Effectivement le findRecordset pointe bien sur
l'enregistrement voulu de la table mais les valeur de cet
enregistrement ne s'affiche pas dans le formulaire lié à
cette table.
En fait j'ai un formulaire lié au champs d'une table et
notament le champ Truc (de type N° auto). Dans ce
formulaire il y a un bouton "rechercher", une boite de
dialogue s'ouvre et tu donne ta valeur du champ Truc.
J'utilisais alors le méthode "docmd.GotoRecord" qui
demande un N° d'enregistrement. D'où mon problème car dans
ma table la valeur du champ Truc n'est pas égale au N° de
l'enregistrement dans la table. En effet Truc peut avoir
pour valeur 25 et être le 20 ième enregistrement, s'il y a
eu des suppressions d'enregistrement.
Voilà pourquoi je cherche le moyen de trouver le N° d'un
enregistrement dont le champ Truc à une valeur précise.
L'avantage de la méthode "docmd.GotoRecord" est que le
pointeur de table se positionne sur l'enregistrement voulu
et donc la valeur des champs est bien affichée par le
formulaire.
Je vais donc étudier le findFirst
Merci de ton aide
A+
Véronique
-----Message d'origine-----
Bonjour Véro,

C'est surtout pas FindRecordset !
Mais plutot FindFirst pour trouver un enregistrement


précis.

Exemple pour un Recordset de type Dynaset:

Dim RS as Recordset
Dim MaValeur as Integer
Set RS = DB.OpenRecordset("MaTableOuQuery")
RS.FindFirst "MonChamp=" & MaValeur
If RS.NoMatch then
'... (pas trouvé)
Else
'... (trouvé)
End if

Pour un Recordset de type Table, on préférera utiliser la


méthode Seek (beaucoup plus rapide):

Dim RS as Recordset
Dim MaValeur as Integer
Set RS = DB.OpenRecordset("MaTable", dbOpenTable)
'Remarque: La PrimaryKey désigne le champs "MonChamp"


dans la définition de la table (voir Access)
RS.Index = "PrimaryKey"
RS.Seek "=", MaValeur
If RS.NoMatch then
'... (pas trouvé)
Else
'... (trouvé)
End if

Note: La méthode FindFirst foctionne aussi sur les Tables.
Voir aussi: FindPrevious, FindNext et FindLast dans l'aide

Pascal B.

"Véronique Jamilloux"


wrote in message
news:9fea01c4d6b9$1d0be870$
Bonjour,

Merci de l'information, j'utilise des recordset DAO, donc
je vais essayer la méthode doCmd.findRecordset.
Bonne fin de journée
Véronique
-----Message d'origine-----
""


a écrit dans
le message de news:115301c4d631$f4a8a0d0


$
Bonjour,



Existerait-il une fonction prédéfinie en VB pour donner




le
N° (ou la position) d'un enregistrement dont le champ




Truc
a la valeur 5? (Le champ Truc est un Numéro automatique)
Je sais qu'on y arrive en faisant une boucle sur le jeu
d'enregistrements, on fait courrir un compteur jusqu'à






ce
que l'on trouve celui dont le champ Truc à la valeur 5.
Par avance merci de l'info
Véro



Hello,

Dans un fichier séquentiel ou dans un recordset d'une


base
de données?

Dans un fichier séquentiel, ca n'existe pas.
Dans une DB, bien sur ça existe:
on fait soit une clause Where dans la requête, soit on


utise
la méthode Find sur le recordset (ce qui revient à faire


un
WHERE, d'ailleurs).

Si tu peux préciser un tout petit peu (dans le cas d'une


base,
préciser DAO ou ADO ou autre) ?

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."


.





.



Avatar
christophe-pasde
Bonjour,

Ce que tu cherches c'est la valeur de la clef primaire (en général les
N° auto ça sert à ça).

Donc regarde la méthode seek de l'objet recordset comme te la montré Pascal.

Christophe

Véronique Jamilloux a écrit :
Effectivement le findRecordset pointe bien sur
l'enregistrement voulu de la table mais les valeur de cet
enregistrement ne s'affiche pas dans le formulaire lié à
cette table.
En fait j'ai un formulaire lié au champs d'une table et
notament le champ Truc (de type N° auto). Dans ce
formulaire il y a un bouton "rechercher", une boite de
dialogue s'ouvre et tu donne ta valeur du champ Truc.
J'utilisais alors le méthode "docmd.GotoRecord" qui
demande un N° d'enregistrement. D'où mon problème car dans
ma table la valeur du champ Truc n'est pas égale au N° de
l'enregistrement dans la table. En effet Truc peut avoir
pour valeur 25 et être le 20 ième enregistrement, s'il y a
eu des suppressions d'enregistrement.
Voilà pourquoi je cherche le moyen de trouver le N° d'un
enregistrement dont le champ Truc à une valeur précise.
L'avantage de la méthode "docmd.GotoRecord" est que le
pointeur de table se positionne sur l'enregistrement voulu
et donc la valeur des champs est bien affichée par le
formulaire.
Je vais donc étudier le findFirst
Merci de ton aide
A+
Véronique

-----Message d'origine-----
Bonjour Véro,

C'est surtout pas FindRecordset !
Mais plutot FindFirst pour trouver un enregistrement



précis.

Exemple pour un Recordset de type Dynaset:

Dim RS as Recordset
Dim MaValeur as Integer
Set RS = DB.OpenRecordset("MaTableOuQuery")
RS.FindFirst "MonChamp=" & MaValeur
If RS.NoMatch then
'... (pas trouvé)
Else
'... (trouvé)
End if

Pour un Recordset de type Table, on préférera utiliser la



méthode Seek (beaucoup plus rapide):

Dim RS as Recordset
Dim MaValeur as Integer
Set RS = DB.OpenRecordset("MaTable", dbOpenTable)
'Remarque: La PrimaryKey désigne le champs "MonChamp"



dans la définition de la table (voir Access)

RS.Index = "PrimaryKey"
RS.Seek "=", MaValeur
If RS.NoMatch then
'... (pas trouvé)
Else
'... (trouvé)
End if

Note: La méthode FindFirst foctionne aussi sur les Tables.
Voir aussi: FindPrevious, FindNext et FindLast dans l'aide

Pascal B.

"Véronique Jamilloux"



wrote in message
news:9fea01c4d6b9$1d0be870$

Bonjour,

Merci de l'information, j'utilise des recordset DAO, donc
je vais essayer la méthode doCmd.findRecordset.
Bonne fin de journée
Véronique

-----Message d'origine-----
""



a écrit dans

le message de news:115301c4d631$f4a8a0d0



$

Bonjour,



Existerait-il une fonction prédéfinie en VB pour donner





le

N° (ou la position) d'un enregistrement dont le champ





Truc

a la valeur 5? (Le champ Truc est un Numéro automatique)
Je sais qu'on y arrive en faisant une boucle sur le jeu
d'enregistrements, on fait courrir un compteur jusqu'à







ce

que l'on trouve celui dont le champ Truc à la valeur 5.
Par avance merci de l'info
Véro



Hello,

Dans un fichier séquentiel ou dans un recordset d'une



base

de données?

Dans un fichier séquentiel, ca n'existe pas.
Dans une DB, bien sur ça existe:
on fait soit une clause Where dans la requête, soit on



utise

la méthode Find sur le recordset (ce qui revient à faire



un

WHERE, d'ailleurs).

Si tu peux préciser un tout petit peu (dans le cas d'une



base,

préciser DAO ou ADO ou autre) ?

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."


.





.








Avatar
Je viens de regarder la méthode "seek". Je ne peux pas
l'utiliser car d'après la doc :
"Vous ne pouvez utiliser la méthode Seek avec une table
liée car il est impossible d'ouvrir des tables liées comme
des objets Recordset de type Table."
Je pense que la méthode qui pourrait être utilisée c'est
doCmd.GoToRecord mais il me faut savoir comment en fait
pour trouver, dans une table, le N° d'enregistrement dont
le champ Truc à une valeur précise.
Merci encore de ton aide
Véronique
-----Message d'origine-----
Bonjour,

Ce que tu cherches c'est la valeur de la clef primaire


(en général les
N° auto ça sert à ça).

Donc regarde la méthode seek de l'objet recordset comme


te la montré Pascal.

Christophe

Véronique Jamilloux a écrit :
Effectivement le findRecordset pointe bien sur
l'enregistrement voulu de la table mais les valeur de




cet
enregistrement ne s'affiche pas dans le formulaire lié




à
cette table.
En fait j'ai un formulaire lié au champs d'une table et
notament le champ Truc (de type N° auto). Dans ce
formulaire il y a un bouton "rechercher", une boite de
dialogue s'ouvre et tu donne ta valeur du champ Truc.
J'utilisais alors le méthode "docmd.GotoRecord" qui
demande un N° d'enregistrement. D'où mon problème car




dans
ma table la valeur du champ Truc n'est pas égale au N°




de
l'enregistrement dans la table. En effet Truc peut




avoir
pour valeur 25 et être le 20 ième enregistrement, s'il




y a
eu des suppressions d'enregistrement.
Voilà pourquoi je cherche le moyen de trouver le N°




d'un
enregistrement dont le champ Truc à une valeur précise.
L'avantage de la méthode "docmd.GotoRecord" est que le
pointeur de table se positionne sur l'enregistrement




voulu
et donc la valeur des champs est bien affichée par le
formulaire.
Je vais donc étudier le findFirst
Merci de ton aide
A+
Véronique

-----Message d'origine-----
Bonjour Véro,

C'est surtout pas FindRecordset !
Mais plutot FindFirst pour trouver un enregistrement



précis.

Exemple pour un Recordset de type Dynaset:

Dim RS as Recordset
Dim MaValeur as Integer
Set RS = DB.OpenRecordset("MaTableOuQuery")
RS.FindFirst "MonChamp=" & MaValeur
If RS.NoMatch then
'... (pas trouvé)
Else
'... (trouvé)
End if

Pour un Recordset de type Table, on préférera utiliser






la

méthode Seek (beaucoup plus rapide):

Dim RS as Recordset
Dim MaValeur as Integer
Set RS = DB.OpenRecordset("MaTable", dbOpenTable)
'Remarque: La PrimaryKey désigne le champs "MonChamp"



dans la définition de la table (voir Access)

RS.Index = "PrimaryKey"
RS.Seek "=", MaValeur
If RS.NoMatch then
'... (pas trouvé)
Else
'... (trouvé)
End if

Note: La méthode FindFirst foctionne aussi sur les






Tables.
Voir aussi: FindPrevious, FindNext et FindLast dans






l'aide

Pascal B.

"Véronique Jamilloux"



wrote in message
news:9fea01c4d6b9$1d0be870$

Bonjour,

Merci de l'information, j'utilise des recordset DAO,






donc
je vais essayer la méthode doCmd.findRecordset.
Bonne fin de journée
Véronique

-----Message d'origine-----
""



a écrit dans

le message de news:115301c4d631$f4a8a0d0



$

Bonjour,



Existerait-il une fonction prédéfinie en VB pour










donner

le

N° (ou la position) d'un enregistrement dont le champ





Truc

a la valeur 5? (Le champ Truc est un Numéro










automatique)
Je sais qu'on y arrive en faisant une boucle sur le










jeu
d'enregistrements, on fait courrir un compteur










jusqu'à

ce

que l'on trouve celui dont le champ Truc à la valeur










5.
Par avance merci de l'info
Véro



Hello,

Dans un fichier séquentiel ou dans un recordset d'une



base

de données?

Dans un fichier séquentiel, ca n'existe pas.
Dans une DB, bien sur ça existe:
on fait soit une clause Where dans la requête, soit on



utise

la méthode Find sur le recordset (ce qui revient à








faire

un

WHERE, d'ailleurs).

Si tu peux préciser un tout petit peu (dans le cas








d'une

base,

préciser DAO ou ADO ou autre) ?

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."


.





.








.