recherche comparative vba - VB/VBA/VBS - Programmation
Marsh Posté le 22-03-2005 à 15:57:30
Re,
Pour un poste, il existe une ou plusieurs capacités requises ?
Marsh Posté le 22-03-2005 à 16:21:37
il y a plusieurs type de contraintes avec 5 criteres et c est sous access merci a vous d'y avoir preté attention
Marsh Posté le 22-03-2005 à 16:22:51
exemple:
5 niveau D B N Q et J
et environ 8 criteres comme lecture ecriture calcul...
du style quoi...
Marsh Posté le 24-03-2005 à 10:07:47
J'ai avancé dans mes pistes...
j'ai crée une table temporaire qui reprends les valeur des postes en fonction de notre selection de poste... cela nous servira de reference... pour l'instant ca fonctionne...
maintenant je voudrait comparer ces memes valeurs dans la table de mes pretendant...
petit hic c'est que je suis novice et que je sais pas comment appliquer ma logique en vba....
voila comment je voudrait proceder:
tout d'abord comprarer pour TOUS les pretendants les champs identique a ceux du postes.
EX: si pour le poste 1 on a comme niveau B pour la lecture Q pour l'ecriture...
je souhaiterai selectionner tous les pretendants qui repondent a la condition suivante:
accepté si valeur inferieure egale ou superieure et ceci pour tous les criteres. Si un individu est recalé pour 1 critere (ex calcul) alors le pretendant est rejeté...
voila j'espere avoir été assez clair et j'espere que des solutions existent....
PS: Pour les 5 niveau voir ci-dessus...
Marsh Posté le 24-03-2005 à 14:04:09
bon pour ceux qui veulent bien m'aider voila comment je procede:
DoCmd.RunSQL "CREATE TABLE table_temp (col1 VARCHAR, col2 VARCHAR)",0
' Je remplis la table ainsi créé grace a ma requete SQL contenue dans ma_requete
DoCmd.RunSQL "INSERT INTO table_temp (col1, col2) " & ma_requete_SQL & "",0
je test ce qu'il y a dans ma table_temp
If [table_temp]![col1] = " " Then
valuecol1 = "And (([pretendant]![col1] = '*' or '') "
ElseIf [table_temp]![Lecture] = "D" Then
valuecol1 = "And ([pretendant]![col1] = 'D' or '' or 'B')"
ElseIf [table_temp]![col1] = "B" Then
valuecol1 = "And ([pretendant]![col1] = 'B' or 'C' or 'N')"
ElseIf [table_temp]![col1] = "N" Then
valuecol1 = "And ([pretendant]![col1] = 'N' or 'B' or 'Q')"
ElseIf [table_temp]![col1] = "Q" Then
valuecol1 = "And ([pretendant]![col1] = 'Q' or 'N' or 'J')"
ElseIf [table_temp]![col1] = "J" Then
valuecol1 = "And ([pretendant]![col1] = 'J' or 'Q')"
End If
ENSUITE:
select * from [pretendant] INNER JOIN blabla ON blabla = blabla where (blabla) " & valuecol1
malheureusement pour mes if ca fonctionne pas...
y'a pas un truc du style currentdb?????
Marsh Posté le 25-03-2005 à 09:50:59
c'est a croire que je me repond tout seul je vous fais partager car ca peut servir a quelqu'un (comme on m'a deja aidé alors j'en fais autant...)
bon j'ai encore modifié j'ai retiré la table temporaire et je travail avec des recordset...
cependant quand j'ai un champ vide j'ai un message d'erreur...
je veux attibuer la valeur du champ lecture de mon recordset sur une string que j'ai appelé rstlecture
rstLecture = rst.[Lecture]
mais si rst.[Lecture] est vide alors il me met un message d'erreur:
"NO ITEM FOUND" j'ai un peu cherché et je suis tombé sur quelquechose tu style .NOMATCH mais j'arrive pas a l'utiliser...
je voudrait faire un test sur le recordset: s'il est vide j'attribue a rstLecture = " "
sinon
rstLecture = rst.[Lecture]
voila help!!!!!
Marsh Posté le 25-03-2005 à 10:03:12
attend je t'explique....
j'ai un formulaire sur lequel j'ai une liste deroulante...
je selectionne un poste. et je veux qu'il m'affiche toutes les personnes suceptible de correspondre au poste.
j'ai 2 tables 1 pour les pretendant et l'autre pour les postes. dans chacunes des 2tables il y a des criteres du style lecture ecriture...
je fais un recordset sur la table poste.(je selectionne tout)
puis je crée un requete sur ma table des pretendant selon ce que j'aurai recupéré du recordset.
exemple pour le poste 1 Lecture = B
rstLecture = rst.[Lecture]
alors ma_requete= "select * from pretendant where lecture = " & rstlecture
mais si rst.[Lecture] est vide il me met no item found! donc comment je peux faire pour lui dire de prendre " " s'il n'a pas d'item?
Marsh Posté le 25-03-2005 à 11:13:07
j'ai un autre message concernant la meme ligne...
il met met utilisation du null incorrecte
Marsh Posté le 22-03-2005 à 14:52:44
Alors voila je sais pas comment expliquer...
je suis en train de faire un formulaire de recherche.
j'ai d'un coté des postes et d'un autre des pretendant au postes...
chacune des deux table sont constitué differemment sauf sur certain critere commun aux deux...
je m'explique: dans la table des pretendant il y a les capacité qu'il a et dans l'autre table des poste il y a la capacité a avoir pour etre a ce poste...
cependant les critere sont distingués par des lettres qui ne se suivent pas... j'ai une vague idée de ce qu'il doit etre fait mais mes connaissance en vba ne sont pas si poussée que ca...
il faudrait(du moins c est ce que je pense) faire un boucle qui compare pour le critere du poste selectionné avec tous les critere des pretendant. par exemple les criteres sont du style : D B N Q et J avec comme ordre D > B > N > Q > J
voila si vous pouviez m'eclairer ce serait tres sympas...
j'ai quelques piste mais je penses que vous y aurait deja pensé (avec un while, et une double boucle if ou for)
merci