Instruction findfirst. please help!!!!

Résolu
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 - 11 avril 2006 à 10:29
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 - 14 avril 2006 à 15:22
Bonjour tout le monde!
J'ai un petit probleme j'ai crée des listes modifiables dans un formulaire pour les deux premiers qui sont des valeurs numériques j'arrive à filtrer les valeurs de manière à disposer de la ligne voulue.
Ensuite les deux autres sont du type texte qui ne fonctionne pas j'ai l'erreur suivante:
Microsoft jet ne reconnait pas 'articleBT' comme nom de champ ou expression correcte.

Voila le code:
Private Sub ModifiableBT_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[BT]=" & Me![ModifiableBT]
Me.Filter = "[BT]= " & Me![ModifiableBT]
Me.FilterOn = True
End Sub

J'ai essayé de faire Cstr histoire d'être sur qu'il le considère en texte toujours l'erreur donc si quelqu'un peut m'aider.
Merci d'avance.
A voir également:

45 réponses

penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
13 avril 2006 à 15:08
Non t'inquietes :) il ya bien des enregistremnts qui doivent obéir à mon critere!

je vois le truc en sql c'est ca qu'il veut faire:

select * from [select ... "il selectionne les différentes tables] as periodicdatabase 'qui est le form'
where [écartmtbur>35]

le soucis enfin je pense c'est que dans les champs sélectionnés il n'ya pa mes controles crées énumérés que ce qu'il yavait a la base.

Et je v'lais savoir comment les integrer est ce necessaire ou pas???
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
13 avril 2006 à 15:51
Je viens de comprendre ce que tu veux faire, et je cherche! tic-tac, tic-tac

tout cela vient du fait que, dans la fenêtre filtres avancés, la liste ne contient pas des contrôles du formulaire, mais des champs de la table qui est la source de données du formulaire, donc des champs sources de données.
Si tu forces le filtre en mettant un nom de champ de saisie (textbox ou zone de texte modifiable), Access croit que c'est un paramètre nommé.

à+

rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
13 avril 2006 à 16:02
T'as tout pigé c'est ca!!!
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
13 avril 2006 à 16:06
Toi , t'as cherché à m'embrouiller,

Private Sub CriticalRCN_Click()
Dim critere As Integer
Dim rs As Object
critere = InputBox("entrez le seuil critique souhaité en %")
Set rs = Me.Recordset.Clone
<STRIKE>Me.Filter = "ecartMTBUR >= " & critere</STRIKE>
' ecartMTBUR , c'est le nom d'un contrôle sur ton formulaire? pas le nom d'un
'champ dans ta table? ce que tu construis là (concatènes) c'est un bout de
'requete SQL, et il est du format " NomTable.NomChampDeTable > = valeur"
'donc " NomTable.NomChampDeTable >= " & TonForm .ecartMTBUR
'ou version Access :
' " [NomTable].[NomChampDeTable] > = " & [TonForm]![ecartMTBUR]
Me.FilterOn = True
End Sub

mais on m'la fait pas à moi, je suis pas né du dernier CPE :)

je sais que tu vas répondre par une question!



rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
13 avril 2006 à 16:28
aie aie aie!!! comment te dire.........j'ai absolument rien capté à ta remarque
NomTable.NomChampDeTable >= " & TonForm .ecartMTBUR :( !!!
c'est plutot nomform.nomcontroledeform> =" & mon critere que je veux

au fait je vois pas ce que tu veux dire???

a+ ds le bus!
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
13 avril 2006 à 16:30
et pr repondre a ta question ecartmtbur est bien le nom de mon controle crée!
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
13 avril 2006 à 16:47
la, la, la

tu dois comprendre que formulaire (même si c'est l'impression que cela te donne), mais que tu dois filtrer ta source de donnéestable ou requete select qui sert de source à ton formulaire), en ne prenant que les enregistrements dont le champ (colonne de la source) est >= à une valeur qui correspond à la valeur d'un contrôle de ton formulaire.

pour filtrer une source, ça se passe en SQL , et SQL dit :

NomTable.NomChampDeTable > = expression

donc, si tu le fais en code, et que tu souhaites remplacer expression par la valeur du contrôle ecartMTBUR de ton formulaire, tu écris :

NomTable.NomChampDeTable >= " & CDbl( TonForm .ecartMTBUR.Text)

et si tu souhaites remplacer expression par la valeur de la variable critere de ton code, tu écris :

NomTable.NomChampDeTable > = " & CDbl(critere)

mais, si c'est un mélange des 2 qu'il te faut, tu as un problème! et tu me repose une question! et tu en profiteras pour répondre à celle-ci :

comment est rempli ton contrôle TonForm.ecartMTBUR?

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
13 avril 2006 à 17:21
ecartmtbur est rempli par le générateur d'expression en fonction de deux controles sources d'une table j'ai avec un tas de IIf réussi à obtenir mes valeurs souhaitées:

IIF (extractionM6ssdb_SommeDeSommeDeUnsch_Removals]= 0 Ou [extractionMssdb_SommeDeSommeDeUnsch_Removals]=0;"none define";VraiFaux([Unsch6]<[Unsch];(Abs(100*((1-([MTBUR6

Mais je comprends bien ce que tu dis c'est que je peux faire mes filtres sur les champs sources sous la forme:
NomTable .NomChampDeTable > = " & CDbl(critere)

Mais pour te reformuler le tout, mon besoin est de faire un filtre sur le controle ecart que j'ai crée et non pas sur un controle source de la table comme tu le suggeres.
Mais d'abord est ce possible??

Un truc du genre, sortir tous les enregistrments tq ecart >25 par exemple.

A+!
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
13 avril 2006 à 17:50
Bah non, malheureusement, pas comme ça (enfin, ça n'engage que moi et ce que je comprend du besoin), c'est pour que je t'ennuie avec ça!

c'est bien, t'as bûché pour ta 1ère solution, mais elle devient peut-être gênante, ou indispensable.

En fait, si ecart est le résultat d'un calcul qui n'a pu être effectué qu'une fois qu'on a parcouru tout les éléments d'un ensemble R, on peut filtrer, grâce à ecart, les éléments d'un ensemble R2 si et seulement s'ils possèdent l'information ecart (chaque enregistrement de R2) ou un lien avec cette information.

Je ne dis pas ! je dis qu'il faut leur donner ecarten disant ça, j'essaie de mettre en évidence qu'il faut faire le calcul qui te donne ecart, pour chaque enregistrement de l'ensemble R2, et l'ajouter en temps que colonne [virutelle, il n'y a pas besoin d'ajouter un colonne de table, puisque c'est un recordset, virtuel donc])

Donc, s'il est possible (fonctionnellement, parce que techniquement oui, pas de problème, mais fonctionnellement, je ne sais pas, toi tu le sais) de leur faire exécuter le calcul, alors tu pourras faire ton filtre.

Alors réfléchis-y, ou explique moi les tenants et aboutissants de ton calcul (mais pas ton calcul tout seul dans son coin, ton calcul et son rapport avec ce recordset que tu cherches à filtrer).

See you later,


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
13 avril 2006 à 17:59
donc si je comprend bien il faut que je prenne les résultats de ecart les mettent ds un tableau par vba et ensuite faire le filtre sur ce tableau est ce le principe?
comment lié le filtre fait sur le tableau avec mon formulaire aps ca reste une autre question.

La je dois aller en réunion malheureusment donc je te post l'etat des choses dés que je peut see u later

Arvedecchi!!
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
13 avril 2006 à 18:22
non, non, pas de tableaux VBA,

En SQL, ça ferais comme ça

SELECT C1, C2, C3, <ExpressionCalcul> As ecartMTBUR
FROM Table
WHERE ecartMTBUR = <ExpressionCritere>

après, il faut savoir quoi mettre dans <ExpressionCalcul> pour que chaque enregistrement est un résultat caractérisé (qui le concerne quoi).

donc si c'est faisable en SQL, autant lui laisser le faire, et continuer à fonctionner comme tu le fais (avec des sources de données).

je ne peux pas t'en dire plus, je ne sais pas comment est constitué ton calcul.

PS: j'ai vu tes posts, mais je ne les ai pas tous lus!

auf wieder sehen, kamarade!

Herr VBlogn
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
14 avril 2006 à 10:57
bonjour mister RV!
j'ai regardé les choses de plus prés la méthode par sql me semblait trés ingénieuse cependant vu l'étendu des expressions l'erreur était trés probable.
J'ai donc réfléchi et je me suis dit pourquoi pas faire une requete selection qui me donnerait les memes données qu'il ya sur mon form et aprés faire en plus dans cette requete where ecart>= critere?
Mais si cela est possible et tu me le diras comment faire le rapport avec mon form
c'est a dire comment faire que mes données de la requete soit celle de mon form???

Va con dios hermano!
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
14 avril 2006 à 11:18
Salut penny05,
s'il te plait, dessines-moi un tableau :)

à quoi elles ressemblent tes données du formulaire? (juste un extrait, si ça tiens dans un tableau, ou dans un ligne)
Si tes données sont des résultats de calculs effectués sur un ensemble R de données, il existe en SQL des fonctions d'agrégats qui permettent de faire des calculs regroupés sur des agrégats.

Par exemple, liste de tous les messages des membres du site, avec, à chaque rupture de membre (c'est pas quand un membre craque :), c'est quand on passe à un nouveau membre, on appelle ça un regroupement par membre), le total de ses messages, et la moyenne des messages dont la réponse est acceptée, et à la fin, le total de tous les messages, et la moyenne générale d'acceptation des réponses.
Et tout ça dans une seule liste (un seul recordset).

d'ailleurs, pour ce genre de requêtes, tu peux aussi faire fumer le forum de http://www.sqlfr.com (toujours du CodeS-SourceS by Nix).

zài jiàn


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
14 avril 2006 à 11:40
Je vais essayer de faire mieux que du Rembrandt mais c'est pas gagné d'avance voila le tableau que j'ai détaillé:


<COLGROUP>
<COL style=\"WIDTH: 60pt\" span=19 width=80>
<COL style=\"WIDTH: 50pt; mso-width-source: userset; mso-width-alt: 2450\" width=67>
<COL style=\"WIDTH: 60pt\" width=80>

----

adN
,
atataz
,
Ordo
,
BT
,
heures
,
Unsch
,
Rmv
,
MTBF
,
MTBUR
,
heures
,
Unsch6
,
Rmv6
,
MTBUR6
,
MTBF6
,
ecartMTBUR
,
ecartMTBF
,
heures12
,
Unsch12
,
Rmv12
,
MTBUR12
,
MTBF12
,
----

545,
28,
abcd,
edfr,
45850,
222,
224,
145545,
4552,
34820,
0,
0,
7868,
575657,
57,
45,
35010,
12,
47,
454588,
45453

ensuite je t'explique les deux ecart doivent etre filtrer et sont la différence entre mtbur et mtbur6 pour le premier et mtbf et mtbf6 pour le 2eme. leur expression sont complexes parce qu'en fonction des rmv et unsch il peu etre none define d'ou l'utilisation des IIf ds le générateur d'expression.

J'arrive a faire actuellemnt une requete selection en créant dessus ces memes champs qui me donneexcatement le meme resultat.
et je me disai que peu etre que si je reproduit la meme en sql sur vba je pourrai si possible lier la requete qui possede les memes champs que mon form à mon form et faire le filtre.

What u think about?!
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
14 avril 2006 à 11:51
Right guy,

ouvres ta requête sélection en mode modification, et fais comme pour le filtre (menu Affichage>>Mode SQL).
Ensuite fais-voir à quoi ça ressemble.

PS : ne colle pas la requête obtenue telle quelle, essaies de mettre des retours chariot/saut de lignes
(parce que le scroll horizontal, pour lire, c'est pas pratique)
en fait, je me demande pourquoi tu as besoin du formulaire, en intermédiaire (en résultat final, je vois, mais en
intermédiaire, non), c'est pour cela que je voudrais voir la reqûete.
PS2 : ton formulaire s'affiche en mode Continu, Feuille de Données ou Normal?


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
14 avril 2006 à 12:56
Voila la requete sql de ma selection qui me donne tout attention c'est du lourd!!!

SELECT extractionMssdb.RCN, extractionMssdb.ata, extractionMssdb.Ordo, extractionMssdb.BT,
extractionMssdb.[SommeDeSommeDeOperational Hours],
extractionMssdb.[SommeDeSommeDeRemovals_IC1/2],
extractionMssdb.SommeDeSommeDeUnsch_Removals,
'le premier calcul
IIf([extractionMssdb]![SommeDeSommeDeUnsch_Removals]=0,999999,
[extractionMssdb]![SommeDeSommeDeOperational Hours]/[extractionMssdb]![SommeDeSommeDeUnsch_Removals])
AS MTBUR,
'le deuxieme calcul
IIf([extractionMssdb]![SommeDeSommeDeRemovals_IC1/2]=0,999999,
[extractionMssdb]![SommeDeSommeDeOperational Hours]/[extractionMssdb]![SommeDeSommeDeRemovals_IC1/2])
AS MTBF,

'selection d'une autre table
extractionM6ssdb.[SommeDeSommeDeOperational Hours],
extractionM6ssdb.SommeDeSommeDeUnsch_Removals,
extractionM6ssdb.[SommeDeSommeDeRemovals_IC1/2],

'le calcul fait sur cette table
IIf([extractionM6ssdb]![SommeDeSommeDeUnsch_Removals]=0,999999,
[extractionM6ssdb]![SommeDeSommeDeOperational Hours]/[extractionM6ssdb]![SommeDeSommeDeUnsch_Removals])
AS MTBUR6,

'le deuxieme calcul
IIf([extractionM6ssdb]![SommeDeSommeDeRemovals_IC1/2]=0,999999,
[extractionM6ssdb]![SommeDeSommeDeOperational Hours]/[extractionM6ssdb]![SommeDeSommeDeRemovals_IC1/2])
AS MTBF6,

'le premier écart
IIf([extractionM6ssdb]![SommeDeSommeDeUnsch_Removals]=0 Or
[extractionMssdb]![SommeDeSommeDeUnsch_Removals]=0,"none define",
IIf([extractionM6ssdb]![SommeDeSommeDeUnsch_Removals]<[extractionMssdb]![SommeDeSommeDeUnsch_Removals],
(Abs(100*((1-([MTBUR6]/[MTBUR]))))),(Abs(100*(1-([MTBUR]/[MTBUR6]))))))
AS ecartmtbur,

'le deuxieme écart
IIf([extractionM6ssdb]![SommeDeSommeDeRemovals_IC1/2]=0 Or
[extractionMssdb]![SommeDeSommeDeRemovals_IC1/2]=0,"none define",
IIf([extractionM6ssdb]![SommeDeSommeDeRemovals_IC1/2]<[extractionMssdb]![SommeDeSommeDeRemovals_IC1/2],
Abs(100*((1-([MTBF6]/[MTBF])))),Abs(100*(1-([MTBF]/[MTBF6])))))
AS ecartmtbf,
'la troisieme table
extractionM12ssdb.[SommeDeSommeDeOperational Hours],
extractionM12ssdb.SommeDeSommeDeUnsch_Removals,
extractionM12ssdb.[SommeDeSommeDeRemovals_IC1/2],
'le calcul affecté
IIf([extractionM12ssdb]![SommeDeSommeDeUnsch_Removals]=0,999999,
[extractionM12ssdb]![SommeDeSommeDeOperational Hours]/[extractionM12ssdb]![SommeDeSommeDeUnsch_Removals])
AS MTBUR12,
'le 2eme calcul
IIf([extractionM12ssdb]![SommeDeSommeDeRemovals_IC1/2]=0,999999,
[extractionM12ssdb]![SommeDeSommeDeOperational Hours]/[extractionM12ssdb]![SommeDeSommeDeRemovals_IC1/2])
AS MTBF12, *
'il exprime la relation entre les tablesFROM (extractionMssdb INNER JOIN extractionM6ssdb ON extractionMssdb.RCN extractionM6ssdb.RCN) INNER JOIN extractionM12ssdb ON extractionM6ssdb.RCN extractionM12ssdb.RCN;

Voila le tout, moi je serai tenté de rajouter where écartmtbur >= [] à la fin mais ca marche pas et la j'aurai mon filtre restera a voir comment lier ces résultats a ceux du form ou ils sont.

A+ on the bus!!
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
14 avril 2006 à 13:32
dac,

essaies ça :

SELECT * FROM (ta requete de la mort) WHERE ecartmtbur >= [ce que tu veux];

ou, un peu plus lisible, tu mets des ALIAS à tous les champs qui n'en ont pas encore (et essaies d'être
cohérent dans la convention de nommage, ne prends pas forcément la mienne, mais choisis-en une
qui permet qu'aucun doute ne soit permis quant à la nature d'une données, et à sa famille),
tu enregistres la requête, et tu fais une autre requête comme suit :

SELECT
Rcn, Ata, Ordo, Bt,
M0_Sdsd_Oh , M0_Sdsd_Ri , M0_Sdsd_Ur , M0_Tbur , M0_Tbf,
M6_Sdsd_Oh , M6_Sdsd_Ri , M6_Sdsd_Ur , M6_Tbur , M6_Tbf,
M12_Sdsd_Oh , M12_Sdsd_Ri , M12_Sdsd_Ur , M12_Tbur , M12_Tbf,
Mx_Tbur_Ecart,
Mx_Tbf_Ecart
,
FROM
req_TaRQdeLaMort
WHERE
req_TaRQdeLaMort.Mx_Tbur_Ecart > = TaValeur ;

PS : tu peux prendre cette requête comme source de données de ton formulaire!
sayonara,


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
14 avril 2006 à 13:55
par contre je peux pas faire essai.ecartmtbur >= [critere] il me demande de rentrer la valueur
de essai.ecartmtbur apparemt il le reconnait pas comme champ de la sélection.
Comment faire qu'il le reconnaisse comme champ?

Autre question si je veux faire sur mon form
aprés un click sur bouton filtrer tu penses que du
runsql (requete de la mort) ca peut marcher?

Drrass VVikii!! merci
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
14 avril 2006 à 14:35
Bon, bon,

ouvres ton créateur de requête Access, choisis, non pas une table, mais ta requête de la mort.
Sélectionnes des champs (en autres ecartmtbur) de la requête de la mort, et passes ta nouvelle requête en mode SQL.
Comment nomme-t-il le champ ecartmtbur?

Après, les autres questions, va falloir que tu penses à les arrêter,
Y'en a marre des autres questions!

Normalement, un sujet = un problème et une solution (voire plusieurs solutions).
Il faut :
- penser à ceux qui utilisent le moteur de recherche (et pour qui cette solution est foutue)
- penser à ceux qui maintiennent le site (et là, on gave la base, je sais bien que Nix a un
serveur tout neuf, mais on n'est pas obligé de le fusiller tout de suite, il faut l'amortir,
d'autant que ni toi, ni moi ne sommes "membre du club", on n'a pas mis la main à la poche)
- penser à chercher un peu plus tout seul (je sais que tu cherches un peu tout seul, mais j'ai
dit un peu plus!)
- penser à me rendre la possibilité de m'occuper des autres (et de moi-même, parce que
je le vaux bien).

t'es faché? non, alors je continues :)

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
14 avril 2006 à 14:51
faché non suis nul a ce truc doonc si je dois morfler pour y arriver why not!
pour ta remarque t'inquietes j'avais fait ca pour voir et il le nomme effectivement essai.mtbur et essai.mtbf

mais dans l'autre sql ce c.. ne veut pas quand je le rajoute a la fin
that's the pb i'm askin for the solution...

see u
0
Rejoignez-nous