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

Parametrage de champs pour recherche

23 réponses
Avatar
djeaty
Hello...

J'ai crée un formulaire avec un champ texte qui me permet de rechercher un
enregistrement d'un table qui sera afficheé sous sa forme de formulaire.
Pour ce faire j'ai simplement ajouter un bouton "ouvrir un formulaire" et
j'y ai indiquer les champs qui doivent etre similaire.

Afin d'obliger l'utilisateur a inscrire une valeur dans le champ text, j'ai
inscrit dans la propriété du champ text, sous "valide si" "Est Pas Null"
Cela fonctionne mais si l'utilisateur veut fermer le formulaire sans y avoir
écrit qqch, il ne peut pas !!! Comment faire ?

Deuxième question: Comment faire pour que l'utilisateur ne puisse pas
modifierl'enregistrement ouvert après la recherche ?

Et dernière question: est-il possible de mettre 2 ou 3 zone de text à
remplir afin d'affiner la recherche ?

C'est des problème tout bete mais j'ai commencer a utiliser Access il y
seulement 4 jours alors... :-/

Voici la copie du code que j'ai jusque a présent si jamais:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Texte0] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub

10 réponses

1 2 3
Avatar
J-Pierre
Bonjour,

1-N'utilise pas les propriétés de ton champ texte, mais contrôle si ce champ texte a bien été renseigné par l'utilisateur
quand il clique sur ton bouton

If IsNull(Me.monChamp) Or Me.monChamp ="" Then
MsgBox "Vous n'avez pas renseigné le champ Toto",,"ERREUR"
Exit Sub
End If

2-Pour la MAJ, propriétés du formulaire, onglet Données, autoriser ou interdire....

3- Oui, c'est possible, il suffit de mettre les critères appropriés dans la requête sourcedu formulaire qui présente les
résultats de ta recherche, syntaxe:
[Forms]![monForm]![monChamp]
ou bien de compléter ton champ stLinkCriteria, si tu débutes, donne-nous les noms des contrôles dans ton formulaire, le nom
des champs dans ta table, précise s'ils sont alpha ou numériques, on te rédigera ça.

J-Pierre

"djeaty" a écrit dans le message de news:

Hello...

J'ai crée un formulaire avec un champ texte qui me permet de rechercher un
enregistrement d'un table qui sera afficheé sous sa forme de formulaire.
Pour ce faire j'ai simplement ajouter un bouton "ouvrir un formulaire" et
j'y ai indiquer les champs qui doivent etre similaire.

Afin d'obliger l'utilisateur a inscrire une valeur dans le champ text, j'ai
inscrit dans la propriété du champ text, sous "valide si" "Est Pas Null"
Cela fonctionne mais si l'utilisateur veut fermer le formulaire sans y avoir
écrit qqch, il ne peut pas !!! Comment faire ?

Deuxième question: Comment faire pour que l'utilisateur ne puisse pas
modifierl'enregistrement ouvert après la recherche ?

Et dernière question: est-il possible de mettre 2 ou 3 zone de text à
remplir afin d'affiner la recherche ?

C'est des problème tout bete mais j'ai commencer a utiliser Access il y
seulement 4 jours alors... :-/

Voici la copie du code que j'ai jusque a présent si jamais:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Texte0] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub




Avatar
pgz
Bonjour,

Question 1 . En début de procédure "Sub Bouton_Search_Click()", vérifier la
valeur du contrôle : If IsNull(Me.Texte0) Then exit sub
Remarque : tu pourrais attribuer des vrais noms à tes contrôles.

Question 2 . Remplacer "DoCmd.OpenForm stDocName, , , stLinkCriteria" par
DoCmd.OpenForm stDocName, , , stLinkCriteria,acFormReadOnly

Question 3. Oui.

Bon courage,

PGZ
--
pgz
_____________________________




Hello...

J'ai crée un formulaire avec un champ texte qui me permet de rechercher un
enregistrement d'un table qui sera afficheé sous sa forme de formulaire.
Pour ce faire j'ai simplement ajouter un bouton "ouvrir un formulaire" et
j'y ai indiquer les champs qui doivent etre similaire.

Afin d'obliger l'utilisateur a inscrire une valeur dans le champ text, j'ai
inscrit dans la propriété du champ text, sous "valide si" "Est Pas Null"
Cela fonctionne mais si l'utilisateur veut fermer le formulaire sans y avoir
écrit qqch, il ne peut pas !!! Comment faire ?

Deuxième question: Comment faire pour que l'utilisateur ne puisse pas
modifierl'enregistrement ouvert après la recherche ?

Et dernière question: est-il possible de mettre 2 ou 3 zone de text à
remplir afin d'affiner la recherche ?

C'est des problème tout bete mais j'ai commencer a utiliser Access il y
seulement 4 jours alors... :-/

Voici la copie du code que j'ai jusque a présent si jamais:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Texte0] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub




Avatar
djeaty
Merci J-Pierre, Merci pgz,

J'ai intégré vos code ca marche super.

Pour la question 3 voici les données:

Dans mon formulaire de recherche, qui s'appelle "PO search" j'ai plusieurs
champs de texte correspondant chacun à 1 critère de recherche qui me sert à
ouvrir le ou les enregistrementle(s) concerné du formulaire "PO".

Ces champs sont: "Search by Aircraft" (Celui-ci fonctionne déjà, c'est celui
que j'ai crée moi), "Search by PO Number", "Search by PO issuer", "Search by
Maintenance Center", "Search by Date" (pour celui ci, j'aimerai que
l'utilisateur ai une plage de date à entrer, genre entre 00.00.0000 et
00.00.0000) et finalement "Search by Title" (pour celui ci je sais pas si il
est possible de rentrer un mot à rechercher dans une zone mémo du formulaire
"PO". Les données à rechercher sont toutes dans le formulaire "PO" donc dans
le table "PO". Et les noms des champs de la table correspondent aux noms des
champs dans le formulaire "PO search" sans le "Search by"

Ils sont tous de type "texte" sauf le champ "Title" qui est de type "Mémo"

Ce que je cherche à faire c'est que si l'on remplit plus que 1 critère de
recherche, cela ouvre le ou les enregistrements qui contiennent TOUT les
citères. Donc une recherche de type "et". Et si possible qu'un message genre
"Merci de modifier les citère de recherche" apparaissent si aucun
enregistrement sont trouvé....

Merci bOcoup bOcoup.....

Mon code actuel:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

If IsNull(Me.Search_by_Aircraft) Or Me.Search_by_Aircraft = "" Then
MsgBox "Please indicate Aircraft Registration", , "Error"
Exit Sub
End If





Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Search by Aircraft] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly


Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub







Bonjour,

1-N'utilise pas les propriétés de ton champ texte, mais contrôle si ce champ texte a bien été renseigné par l'utilisateur
quand il clique sur ton bouton

If IsNull(Me.monChamp) Or Me.monChamp ="" Then
MsgBox "Vous n'avez pas renseigné le champ Toto",,"ERREUR"
Exit Sub
End If

2-Pour la MAJ, propriétés du formulaire, onglet Données, autoriser ou interdire....

3- Oui, c'est possible, il suffit de mettre les critères appropriés dans la requête sourcedu formulaire qui présente les
résultats de ta recherche, syntaxe:
[Forms]![monForm]![monChamp]
ou bien de compléter ton champ stLinkCriteria, si tu débutes, donne-nous les noms des contrôles dans ton formulaire, le nom
des champs dans ta table, précise s'ils sont alpha ou numériques, on te rédigera ça.

J-Pierre

"djeaty" a écrit dans le message de news:

Hello...

J'ai crée un formulaire avec un champ texte qui me permet de rechercher un
enregistrement d'un table qui sera afficheé sous sa forme de formulaire.
Pour ce faire j'ai simplement ajouter un bouton "ouvrir un formulaire" et
j'y ai indiquer les champs qui doivent etre similaire.

Afin d'obliger l'utilisateur a inscrire une valeur dans le champ text, j'ai
inscrit dans la propriété du champ text, sous "valide si" "Est Pas Null"
Cela fonctionne mais si l'utilisateur veut fermer le formulaire sans y avoir
écrit qqch, il ne peut pas !!! Comment faire ?

Deuxième question: Comment faire pour que l'utilisateur ne puisse pas
modifierl'enregistrement ouvert après la recherche ?

Et dernière question: est-il possible de mettre 2 ou 3 zone de text à
remplir afin d'affiner la recherche ?

C'est des problème tout bete mais j'ai commencer a utiliser Access il y
seulement 4 jours alors... :-/

Voici la copie du code que j'ai jusque a présent si jamais:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Texte0] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub









Avatar
J-Pierre
Bonsoir,

Je ne m'attendais pas à ça :-) Tant pis pour moi, je m'y colle. Je considère que tous les champs de recherche doivent être
renseignés. Pour le champ de type memo, je ne souviens pas si on peut faire une sélection, je crois que oui.
Les champs tels [Aircraft] sont les noms des champs dans ta table.
Les champs tels Me![Texte0] sont les noms des champs dans ton formulaire.

stLinkCriteria = "[Aircraft] = '" & Me![Texte0] & "'" & _
" AND [Search by PO Number] = '" & Me![Texte1] & "'" & _
" AND [Search by Date] >= #" & Me![Texte2] & "#" & _
" AND [Search by Date] <= #" & Me![Texte3] & "#" & _
" AND [Search by Title] = '" & Me![Texte4] & "'"

Pour bien contrôler la valeur de stLinkCriteria, avant d'ouvrir ton formulaire, tu fais
MsgBox stLinkCriteria
et tu contrôles les erreurs de syntaxe :-) en particulier les espaces ou les ' manquants.

Si un champ, par exemple [Search by PO Number] n'est pas obligatoire, ton code devient (ce qui implique que Aircraft, lui, est
obligatoire):

stLinkCriteria = "[Aircraft] = '" & Me![Texte0] & "'"

If Not IsNull Me.[Texte1] And Me.[Texte1] <> "" Then
stLinkCriteria = stLinkCriteria & " AND [Search by PO Number] = '" & Me![Texte1] & "'"
End If
........
MsgBox stLinkCriteria
DoCmd.OpenForm

J-Pierre

"djeaty" a écrit dans le message de news:

Merci J-Pierre, Merci pgz,

J'ai intégré vos code ca marche super.

Pour la question 3 voici les données:

Dans mon formulaire de recherche, qui s'appelle "PO search" j'ai plusieurs
champs de texte correspondant chacun à 1 critère de recherche qui me sert à
ouvrir le ou les enregistrementle(s) concerné du formulaire "PO".

Ces champs sont: "Search by Aircraft" (Celui-ci fonctionne déjà, c'est celui
que j'ai crée moi), "Search by PO Number", "Search by PO issuer", "Search by
Maintenance Center", "Search by Date" (pour celui ci, j'aimerai que
l'utilisateur ai une plage de date à entrer, genre entre 00.00.0000 et
00.00.0000) et finalement "Search by Title" (pour celui ci je sais pas si il
est possible de rentrer un mot à rechercher dans une zone mémo du formulaire
"PO". Les données à rechercher sont toutes dans le formulaire "PO" donc dans
le table "PO". Et les noms des champs de la table correspondent aux noms des
champs dans le formulaire "PO search" sans le "Search by"

Ils sont tous de type "texte" sauf le champ "Title" qui est de type "Mémo"

Ce que je cherche à faire c'est que si l'on remplit plus que 1 critère de
recherche, cela ouvre le ou les enregistrements qui contiennent TOUT les
citères. Donc une recherche de type "et". Et si possible qu'un message genre
"Merci de modifier les citère de recherche" apparaissent si aucun
enregistrement sont trouvé....

Merci bOcoup bOcoup.....

Mon code actuel:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

If IsNull(Me.Search_by_Aircraft) Or Me.Search_by_Aircraft = "" Then
MsgBox "Please indicate Aircraft Registration", , "Error"
Exit Sub
End If





Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Search by Aircraft] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly


Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub







Bonjour,

1-N'utilise pas les propriétés de ton champ texte, mais contrôle si ce champ texte a bien été renseigné par l'utilisateur
quand il clique sur ton bouton

If IsNull(Me.monChamp) Or Me.monChamp ="" Then
MsgBox "Vous n'avez pas renseigné le champ Toto",,"ERREUR"
Exit Sub
End If

2-Pour la MAJ, propriétés du formulaire, onglet Données, autoriser ou interdire....

3- Oui, c'est possible, il suffit de mettre les critères appropriés dans la requête sourcedu formulaire qui présente les
résultats de ta recherche, syntaxe:
[Forms]![monForm]![monChamp]
ou bien de compléter ton champ stLinkCriteria, si tu débutes, donne-nous les noms des contrôles dans ton formulaire, le nom
des champs dans ta table, précise s'ils sont alpha ou numériques, on te rédigera ça.

J-Pierre

"djeaty" a écrit dans le message de news:

Hello...

J'ai crée un formulaire avec un champ texte qui me permet de rechercher un
enregistrement d'un table qui sera afficheé sous sa forme de formulaire.
Pour ce faire j'ai simplement ajouter un bouton "ouvrir un formulaire" et
j'y ai indiquer les champs qui doivent etre similaire.

Afin d'obliger l'utilisateur a inscrire une valeur dans le champ text, j'ai
inscrit dans la propriété du champ text, sous "valide si" "Est Pas Null"
Cela fonctionne mais si l'utilisateur veut fermer le formulaire sans y avoir
écrit qqch, il ne peut pas !!! Comment faire ?

Deuxième question: Comment faire pour que l'utilisateur ne puisse pas
modifierl'enregistrement ouvert après la recherche ?

Et dernière question: est-il possible de mettre 2 ou 3 zone de text à
remplir afin d'affiner la recherche ?

C'est des problème tout bete mais j'ai commencer a utiliser Access il y
seulement 4 jours alors... :-/

Voici la copie du code que j'ai jusque a présent si jamais:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Texte0] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub











Avatar
djeaty
Merci J-Pierre.
Désolé c'est vrai que c'etait pas une question toute simple en fait...
Je vais tenter de mettre tout ca en pratique...

Bonne soirée et merci encore


Bonsoir,

Je ne m'attendais pas à ça :-) Tant pis pour moi, je m'y colle. Je considère que tous les champs de recherche doivent être
renseignés. Pour le champ de type memo, je ne souviens pas si on peut faire une sélection, je crois que oui.
Les champs tels [Aircraft] sont les noms des champs dans ta table.
Les champs tels Me![Texte0] sont les noms des champs dans ton formulaire.

stLinkCriteria = "[Aircraft] = '" & Me![Texte0] & "'" & _
" AND [Search by PO Number] = '" & Me![Texte1] & "'" & _
" AND [Search by Date] >= #" & Me![Texte2] & "#" & _
" AND [Search by Date] <= #" & Me![Texte3] & "#" & _
" AND [Search by Title] = '" & Me![Texte4] & "'"

Pour bien contrôler la valeur de stLinkCriteria, avant d'ouvrir ton formulaire, tu fais
MsgBox stLinkCriteria
et tu contrôles les erreurs de syntaxe :-) en particulier les espaces ou les ' manquants.

Si un champ, par exemple [Search by PO Number] n'est pas obligatoire, ton code devient (ce qui implique que Aircraft, lui, est
obligatoire):

stLinkCriteria = "[Aircraft] = '" & Me![Texte0] & "'"

If Not IsNull Me.[Texte1] And Me.[Texte1] <> "" Then
stLinkCriteria = stLinkCriteria & " AND [Search by PO Number] = '" & Me![Texte1] & "'"
End If
.........
MsgBox stLinkCriteria
DoCmd.OpenForm

J-Pierre

"djeaty" a écrit dans le message de news:

Merci J-Pierre, Merci pgz,

J'ai intégré vos code ca marche super.

Pour la question 3 voici les données:

Dans mon formulaire de recherche, qui s'appelle "PO search" j'ai plusieurs
champs de texte correspondant chacun à 1 critère de recherche qui me sert à
ouvrir le ou les enregistrementle(s) concerné du formulaire "PO".

Ces champs sont: "Search by Aircraft" (Celui-ci fonctionne déjà, c'est celui
que j'ai crée moi), "Search by PO Number", "Search by PO issuer", "Search by
Maintenance Center", "Search by Date" (pour celui ci, j'aimerai que
l'utilisateur ai une plage de date à entrer, genre entre 00.00.0000 et
00.00.0000) et finalement "Search by Title" (pour celui ci je sais pas si il
est possible de rentrer un mot à rechercher dans une zone mémo du formulaire
"PO". Les données à rechercher sont toutes dans le formulaire "PO" donc dans
le table "PO". Et les noms des champs de la table correspondent aux noms des
champs dans le formulaire "PO search" sans le "Search by"

Ils sont tous de type "texte" sauf le champ "Title" qui est de type "Mémo"

Ce que je cherche à faire c'est que si l'on remplit plus que 1 critère de
recherche, cela ouvre le ou les enregistrements qui contiennent TOUT les
citères. Donc une recherche de type "et". Et si possible qu'un message genre
"Merci de modifier les citère de recherche" apparaissent si aucun
enregistrement sont trouvé....

Merci bOcoup bOcoup.....

Mon code actuel:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

If IsNull(Me.Search_by_Aircraft) Or Me.Search_by_Aircraft = "" Then
MsgBox "Please indicate Aircraft Registration", , "Error"
Exit Sub
End If





Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Search by Aircraft] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly


Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub







Bonjour,

1-N'utilise pas les propriétés de ton champ texte, mais contrôle si ce champ texte a bien été renseigné par l'utilisateur
quand il clique sur ton bouton

If IsNull(Me.monChamp) Or Me.monChamp ="" Then
MsgBox "Vous n'avez pas renseigné le champ Toto",,"ERREUR"
Exit Sub
End If

2-Pour la MAJ, propriétés du formulaire, onglet Données, autoriser ou interdire....

3- Oui, c'est possible, il suffit de mettre les critères appropriés dans la requête sourcedu formulaire qui présente les
résultats de ta recherche, syntaxe:
[Forms]![monForm]![monChamp]
ou bien de compléter ton champ stLinkCriteria, si tu débutes, donne-nous les noms des contrôles dans ton formulaire, le nom
des champs dans ta table, précise s'ils sont alpha ou numériques, on te rédigera ça.

J-Pierre

"djeaty" a écrit dans le message de news:

Hello...

J'ai crée un formulaire avec un champ texte qui me permet de rechercher un
enregistrement d'un table qui sera afficheé sous sa forme de formulaire.
Pour ce faire j'ai simplement ajouter un bouton "ouvrir un formulaire" et
j'y ai indiquer les champs qui doivent etre similaire.

Afin d'obliger l'utilisateur a inscrire une valeur dans le champ text, j'ai
inscrit dans la propriété du champ text, sous "valide si" "Est Pas Null"
Cela fonctionne mais si l'utilisateur veut fermer le formulaire sans y avoir
écrit qqch, il ne peut pas !!! Comment faire ?

Deuxième question: Comment faire pour que l'utilisateur ne puisse pas
modifierl'enregistrement ouvert après la recherche ?

Et dernière question: est-il possible de mettre 2 ou 3 zone de text à
remplir afin d'affiner la recherche ?

C'est des problème tout bete mais j'ai commencer a utiliser Access il y
seulement 4 jours alors... :-/

Voici la copie du code que j'ai jusque a présent si jamais:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Texte0] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub
















Avatar
djeaty
Salut J-Pierre,

Voila, après des heures de combat acharné, d'essais, et surtout grace à ton
aide, j'ai réussi à créer le formulaire de recherche que je désirais. Enfin
presque...

Comme tu peux dans le voir dans mon code plus bas, j'ai du modifier le code
que tu m'avais donné pour un champ non-obligatoire et j'ai du enlever les "#"
dans le code concernant les dates...

J'ai réussi à contourner le fait de devoir laisser dans ma "stLinkCriteria"
un champ non controlé par un "If Not IsNull" en ajoutant a mon formulaire de
recherche un champ non visible à valeur constante identique a un champ a
valeur constante de mon enregistrement a rechercher :-)

Il me reste juste 2 soucis:

Le premier c'est que le critère de recherche "Title" ne permet pas de
marquer un mot contenu dans le champ de type "mémo" de l'enregistrement
recherché. Il doit etre identique... Comment faire ? J'ai essayé de mettre
des "*" mais sans succès.

Et le deuxième (qui me sera très utile aussi pour d'autre formulaires de ma
base) c'est que lorsque j'ouvre un formulaire, cela soit directement un
nouvel enregistrement qui apparaisse, et non pas le dernier
enregistrement......

As-tu un idée pour ces 2 cas ?

Merci

Djeaty



Bonsoir,

Je ne m'attendais pas à ça :-) Tant pis pour moi, je m'y colle. Je considère que tous les champs de recherche doivent être
renseignés. Pour le champ de type memo, je ne souviens pas si on peut faire une sélection, je crois que oui.
Les champs tels [Aircraft] sont les noms des champs dans ta table.
Les champs tels Me![Texte0] sont les noms des champs dans ton formulaire.

stLinkCriteria = "[Aircraft] = '" & Me![Texte0] & "'" & _
" AND [Search by PO Number] = '" & Me![Texte1] & "'" & _
" AND [Search by Date] >= #" & Me![Texte2] & "#" & _
" AND [Search by Date] <= #" & Me![Texte3] & "#" & _
" AND [Search by Title] = '" & Me![Texte4] & "'"

Pour bien contrôler la valeur de stLinkCriteria, avant d'ouvrir ton formulaire, tu fais
MsgBox stLinkCriteria
et tu contrôles les erreurs de syntaxe :-) en particulier les espaces ou les ' manquants.

Si un champ, par exemple [Search by PO Number] n'est pas obligatoire, ton code devient (ce qui implique que Aircraft, lui, est
obligatoire):

stLinkCriteria = "[Aircraft] = '" & Me![Texte0] & "'"

If Not IsNull Me.[Texte1] And Me.[Texte1] <> "" Then
stLinkCriteria = stLinkCriteria & " AND [Search by PO Number] = '" & Me![Texte1] & "'"
End If
.........
MsgBox stLinkCriteria
DoCmd.OpenForm

J-Pierre

"djeaty" a écrit dans le message de news:

Merci J-Pierre, Merci pgz,

J'ai intégré vos code ca marche super.

Pour la question 3 voici les données:

Dans mon formulaire de recherche, qui s'appelle "PO search" j'ai plusieurs
champs de texte correspondant chacun à 1 critère de recherche qui me sert à
ouvrir le ou les enregistrementle(s) concerné du formulaire "PO".

Ces champs sont: "Search by Aircraft" (Celui-ci fonctionne déjà, c'est celui
que j'ai crée moi), "Search by PO Number", "Search by PO issuer", "Search by
Maintenance Center", "Search by Date" (pour celui ci, j'aimerai que
l'utilisateur ai une plage de date à entrer, genre entre 00.00.0000 et
00.00.0000) et finalement "Search by Title" (pour celui ci je sais pas si il
est possible de rentrer un mot à rechercher dans une zone mémo du formulaire
"PO". Les données à rechercher sont toutes dans le formulaire "PO" donc dans
le table "PO". Et les noms des champs de la table correspondent aux noms des
champs dans le formulaire "PO search" sans le "Search by"

Ils sont tous de type "texte" sauf le champ "Title" qui est de type "Mémo"

Ce que je cherche à faire c'est que si l'on remplit plus que 1 critère de
recherche, cela ouvre le ou les enregistrements qui contiennent TOUT les
citères. Donc une recherche de type "et". Et si possible qu'un message genre
"Merci de modifier les citère de recherche" apparaissent si aucun
enregistrement sont trouvé....

Merci bOcoup bOcoup.....

Mon code actuel:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

If IsNull(Me.Search_by_Aircraft) Or Me.Search_by_Aircraft = "" Then
MsgBox "Please indicate Aircraft Registration", , "Error"
Exit Sub
End If





Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Search by Aircraft] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly


Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub







Bonjour,

1-N'utilise pas les propriétés de ton champ texte, mais contrôle si ce champ texte a bien été renseigné par l'utilisateur
quand il clique sur ton bouton

If IsNull(Me.monChamp) Or Me.monChamp ="" Then
MsgBox "Vous n'avez pas renseigné le champ Toto",,"ERREUR"
Exit Sub
End If

2-Pour la MAJ, propriétés du formulaire, onglet Données, autoriser ou interdire....

3- Oui, c'est possible, il suffit de mettre les critères appropriés dans la requête sourcedu formulaire qui présente les
résultats de ta recherche, syntaxe:
[Forms]![monForm]![monChamp]
ou bien de compléter ton champ stLinkCriteria, si tu débutes, donne-nous les noms des contrôles dans ton formulaire, le nom
des champs dans ta table, précise s'ils sont alpha ou numériques, on te rédigera ça.

J-Pierre

"djeaty" a écrit dans le message de news:

Hello...

J'ai crée un formulaire avec un champ texte qui me permet de rechercher un
enregistrement d'un table qui sera afficheé sous sa forme de formulaire.
Pour ce faire j'ai simplement ajouter un bouton "ouvrir un formulaire" et
j'y ai indiquer les champs qui doivent etre similaire.

Afin d'obliger l'utilisateur a inscrire une valeur dans le champ text, j'ai
inscrit dans la propriété du champ text, sous "valide si" "Est Pas Null"
Cela fonctionne mais si l'utilisateur veut fermer le formulaire sans y avoir
écrit qqch, il ne peut pas !!! Comment faire ?

Deuxième question: Comment faire pour que l'utilisateur ne puisse pas
modifierl'enregistrement ouvert après la recherche ?

Et dernière question: est-il possible de mettre 2 ou 3 zone de text à
remplir afin d'affiner la recherche ?

C'est des problème tout bete mais j'ai commencer a utiliser Access il y
seulement 4 jours alors... :-/

Voici la copie du code que j'ai jusque a présent si jamais:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Texte0] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub
















Avatar
djeaty
Oupps j'ai oublé le code....

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click




Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"


stLinkCriteria = "[Controle my reference]=" & "'" & Me![Control my
Reference] & "'"


If Not IsNull(Me.Search_by_PO_Number) And Me.Search_by_PO_Number <> ""
Then
stLinkCriteria = stLinkCriteria & " AND [PO Number] = '" & Me![Search by PO
Number] & "'"
End If

If Not IsNull(Me.Search_by_title) And Me.Search_by_title <> "" Then
stLinkCriteria = stLinkCriteria & " AND [Title] = '" & Me![Search by Title]
& "'"
End If

If Not IsNull(Me.Search_by_Aircraft) And Me.Search_by_Aircraft <> "" Then
stLinkCriteria = stLinkCriteria & " AND [Aircraft] = '" & Me![Search by
Aircraft] & "'"
End If

If Not IsNull(Me.Search_by_date) And Me.Search_by_date <> "" Then
stLinkCriteria = stLinkCriteria & " AND [Date] >= '" & Me![Search by Date] &
"'"
End If

If Not IsNull(Me.Search_by_Date_2) And Me.Search_by_Date_2 <> "" Then
stLinkCriteria = stLinkCriteria & " AND [Date] <= '" & Me![Search by date 2]
& "'"
End If

If Not IsNull(Me.Search_by_Albinati_Aeronautics_Contact) And
Me.Search_by_Albinati_Aeronautics_Contact <> "" Then
stLinkCriteria = stLinkCriteria & " AND [My Reference] = '" & Me![Search by
Albinati Aeronautics Contact] & "'"
End If

DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly

Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub




Bonsoir,

Je ne m'attendais pas à ça :-) Tant pis pour moi, je m'y colle. Je considère que tous les champs de recherche doivent être
renseignés. Pour le champ de type memo, je ne souviens pas si on peut faire une sélection, je crois que oui.
Les champs tels [Aircraft] sont les noms des champs dans ta table.
Les champs tels Me![Texte0] sont les noms des champs dans ton formulaire.

stLinkCriteria = "[Aircraft] = '" & Me![Texte0] & "'" & _
" AND [Search by PO Number] = '" & Me![Texte1] & "'" & _
" AND [Search by Date] >= #" & Me![Texte2] & "#" & _
" AND [Search by Date] <= #" & Me![Texte3] & "#" & _
" AND [Search by Title] = '" & Me![Texte4] & "'"

Pour bien contrôler la valeur de stLinkCriteria, avant d'ouvrir ton formulaire, tu fais
MsgBox stLinkCriteria
et tu contrôles les erreurs de syntaxe :-) en particulier les espaces ou les ' manquants.

Si un champ, par exemple [Search by PO Number] n'est pas obligatoire, ton code devient (ce qui implique que Aircraft, lui, est
obligatoire):

stLinkCriteria = "[Aircraft] = '" & Me![Texte0] & "'"

If Not IsNull Me.[Texte1] And Me.[Texte1] <> "" Then
stLinkCriteria = stLinkCriteria & " AND [Search by PO Number] = '" & Me![Texte1] & "'"
End If
.........
MsgBox stLinkCriteria
DoCmd.OpenForm

J-Pierre

"djeaty" a écrit dans le message de news:

Merci J-Pierre, Merci pgz,

J'ai intégré vos code ca marche super.

Pour la question 3 voici les données:

Dans mon formulaire de recherche, qui s'appelle "PO search" j'ai plusieurs
champs de texte correspondant chacun à 1 critère de recherche qui me sert à
ouvrir le ou les enregistrementle(s) concerné du formulaire "PO".

Ces champs sont: "Search by Aircraft" (Celui-ci fonctionne déjà, c'est celui
que j'ai crée moi), "Search by PO Number", "Search by PO issuer", "Search by
Maintenance Center", "Search by Date" (pour celui ci, j'aimerai que
l'utilisateur ai une plage de date à entrer, genre entre 00.00.0000 et
00.00.0000) et finalement "Search by Title" (pour celui ci je sais pas si il
est possible de rentrer un mot à rechercher dans une zone mémo du formulaire
"PO". Les données à rechercher sont toutes dans le formulaire "PO" donc dans
le table "PO". Et les noms des champs de la table correspondent aux noms des
champs dans le formulaire "PO search" sans le "Search by"

Ils sont tous de type "texte" sauf le champ "Title" qui est de type "Mémo"

Ce que je cherche à faire c'est que si l'on remplit plus que 1 critère de
recherche, cela ouvre le ou les enregistrements qui contiennent TOUT les
citères. Donc une recherche de type "et". Et si possible qu'un message genre
"Merci de modifier les citère de recherche" apparaissent si aucun
enregistrement sont trouvé....

Merci bOcoup bOcoup.....

Mon code actuel:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

If IsNull(Me.Search_by_Aircraft) Or Me.Search_by_Aircraft = "" Then
MsgBox "Please indicate Aircraft Registration", , "Error"
Exit Sub
End If





Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Search by Aircraft] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly


Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub







Bonjour,

1-N'utilise pas les propriétés de ton champ texte, mais contrôle si ce champ texte a bien été renseigné par l'utilisateur
quand il clique sur ton bouton

If IsNull(Me.monChamp) Or Me.monChamp ="" Then
MsgBox "Vous n'avez pas renseigné le champ Toto",,"ERREUR"
Exit Sub
End If

2-Pour la MAJ, propriétés du formulaire, onglet Données, autoriser ou interdire....

3- Oui, c'est possible, il suffit de mettre les critères appropriés dans la requête sourcedu formulaire qui présente les
résultats de ta recherche, syntaxe:
[Forms]![monForm]![monChamp]
ou bien de compléter ton champ stLinkCriteria, si tu débutes, donne-nous les noms des contrôles dans ton formulaire, le nom
des champs dans ta table, précise s'ils sont alpha ou numériques, on te rédigera ça.

J-Pierre

"djeaty" a écrit dans le message de news:

Hello...

J'ai crée un formulaire avec un champ texte qui me permet de rechercher un
enregistrement d'un table qui sera afficheé sous sa forme de formulaire.
Pour ce faire j'ai simplement ajouter un bouton "ouvrir un formulaire" et
j'y ai indiquer les champs qui doivent etre similaire.

Afin d'obliger l'utilisateur a inscrire une valeur dans le champ text, j'ai
inscrit dans la propriété du champ text, sous "valide si" "Est Pas Null"
Cela fonctionne mais si l'utilisateur veut fermer le formulaire sans y avoir
écrit qqch, il ne peut pas !!! Comment faire ?

Deuxième question: Comment faire pour que l'utilisateur ne puisse pas
modifierl'enregistrement ouvert après la recherche ?

Et dernière question: est-il possible de mettre 2 ou 3 zone de text à
remplir afin d'affiner la recherche ?

C'est des problème tout bete mais j'ai commencer a utiliser Access il y
seulement 4 jours alors... :-/

Voici la copie du code que j'ai jusque a présent si jamais:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Texte0] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub
















Avatar
J-Pierre
Bonjour,

Je vois que tu as passé une bonne nuit :-)

D'abord une remarque pour la date. Est-ce que ton champ dans ta table est bien défini comme une date ? Si oui, je mettrais la
main de Pierre à couper qu'il faut utiliser des # comme délimiteurs.

Pour tes deux problèmes:

1-Le critère de recherche "Title": normalement, le code suivant, qui revient à encadrer l'argument de recherche par des
étoiles devrait marcher:
Si ça ne marche pas, essaie avec % à la place de * (% est le caractère générique avec SQL Server, on ne sait jamais)
Pour faire d'autres essais, crée une requête avec l'éditeur, ce sera plus facile.
Enfin, vérifie dans l'aide en ligne, je crois, mais ne suis pas certain, que c'est possible sur un champ mémo.
Et d'autres vont peut-être aussi te répondre.....

If Not IsNull(Me.Search_by_title) And Me.Search_by_title <> "" Then
stLinkCriteria = stLinkCriteria & " AND [Title] = '*" & Me![Search by Title] & "*'"
End If

2-Lorsque j'ouvre un formulaire, cela soit directement un nouvel enregistrement qui apparaisse....
Désolé, je ne me souviens plus, j'ai en-tête quelque chose comme
DoCmd??????? GoTo AcNewRec, mais je n'ai pas trouvé dans l'aide en ligne.
Le mieux serait d'ouvrir un nouveau fil avec cette question spécifique.

J-Pierre

Tu utilises OE6 ? Pendant que tu y es, va dans menu->outils->options->onglet envois, et change les paramètres de texte brut
(mets 126), tes lignes de code ne seront plus coupées intempestivement.

"djeaty" a écrit dans le message de news:

Salut J-Pierre,

Voila, après des heures de combat acharné, d'essais, et surtout grace à ton
aide, j'ai réussi à créer le formulaire de recherche que je désirais. Enfin
presque...

Comme tu peux dans le voir dans mon code plus bas, j'ai du modifier le code
que tu m'avais donné pour un champ non-obligatoire et j'ai du enlever les "#"
dans le code concernant les dates...

J'ai réussi à contourner le fait de devoir laisser dans ma "stLinkCriteria"
un champ non controlé par un "If Not IsNull" en ajoutant a mon formulaire de
recherche un champ non visible à valeur constante identique a un champ a
valeur constante de mon enregistrement a rechercher :-)

Il me reste juste 2 soucis:

Le premier c'est que le critère de recherche "Title" ne permet pas de
marquer un mot contenu dans le champ de type "mémo" de l'enregistrement
recherché. Il doit etre identique... Comment faire ? J'ai essayé de mettre
des "*" mais sans succès.

Et le deuxième (qui me sera très utile aussi pour d'autre formulaires de ma
base) c'est que lorsque j'ouvre un formulaire, cela soit directement un
nouvel enregistrement qui apparaisse, et non pas le dernier
enregistrement......

As-tu un idée pour ces 2 cas ?

Merci

Djeaty



Bonsoir,

Je ne m'attendais pas à ça :-) Tant pis pour moi, je m'y colle. Je considère que tous les champs de recherche doivent être
renseignés. Pour le champ de type memo, je ne souviens pas si on peut faire une sélection, je crois que oui.
Les champs tels [Aircraft] sont les noms des champs dans ta table.
Les champs tels Me![Texte0] sont les noms des champs dans ton formulaire.

stLinkCriteria = "[Aircraft] = '" & Me![Texte0] & "'" & _
" AND [Search by PO Number] = '" & Me![Texte1] & "'" & _
" AND [Search by Date] >= #" & Me![Texte2] & "#" & _
" AND [Search by Date] <= #" & Me![Texte3] & "#" & _
" AND [Search by Title] = '" & Me![Texte4] & "'"

Pour bien contrôler la valeur de stLinkCriteria, avant d'ouvrir ton formulaire, tu fais
MsgBox stLinkCriteria
et tu contrôles les erreurs de syntaxe :-) en particulier les espaces ou les ' manquants.

Si un champ, par exemple [Search by PO Number] n'est pas obligatoire, ton code devient (ce qui implique que Aircraft, lui,
est
obligatoire):

stLinkCriteria = "[Aircraft] = '" & Me![Texte0] & "'"

If Not IsNull Me.[Texte1] And Me.[Texte1] <> "" Then
stLinkCriteria = stLinkCriteria & " AND [Search by PO Number] = '" & Me![Texte1] & "'"
End If
.........
MsgBox stLinkCriteria
DoCmd.OpenForm

J-Pierre

"djeaty" a écrit dans le message de news:

Merci J-Pierre, Merci pgz,

J'ai intégré vos code ca marche super.

Pour la question 3 voici les données:

Dans mon formulaire de recherche, qui s'appelle "PO search" j'ai plusieurs
champs de texte correspondant chacun à 1 critère de recherche qui me sert à
ouvrir le ou les enregistrementle(s) concerné du formulaire "PO".

Ces champs sont: "Search by Aircraft" (Celui-ci fonctionne déjà, c'est celui
que j'ai crée moi), "Search by PO Number", "Search by PO issuer", "Search by
Maintenance Center", "Search by Date" (pour celui ci, j'aimerai que
l'utilisateur ai une plage de date à entrer, genre entre 00.00.0000 et
00.00.0000) et finalement "Search by Title" (pour celui ci je sais pas si il
est possible de rentrer un mot à rechercher dans une zone mémo du formulaire
"PO". Les données à rechercher sont toutes dans le formulaire "PO" donc dans
le table "PO". Et les noms des champs de la table correspondent aux noms des
champs dans le formulaire "PO search" sans le "Search by"

Ils sont tous de type "texte" sauf le champ "Title" qui est de type "Mémo"

Ce que je cherche à faire c'est que si l'on remplit plus que 1 critère de
recherche, cela ouvre le ou les enregistrements qui contiennent TOUT les
citères. Donc une recherche de type "et". Et si possible qu'un message genre
"Merci de modifier les citère de recherche" apparaissent si aucun
enregistrement sont trouvé....

Merci bOcoup bOcoup.....

Mon code actuel:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

If IsNull(Me.Search_by_Aircraft) Or Me.Search_by_Aircraft = "" Then
MsgBox "Please indicate Aircraft Registration", , "Error"
Exit Sub
End If





Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Search by Aircraft] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly


Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub







Bonjour,

1-N'utilise pas les propriétés de ton champ texte, mais contrôle si ce champ texte a bien été renseigné par
l'utilisateur
quand il clique sur ton bouton

If IsNull(Me.monChamp) Or Me.monChamp ="" Then
MsgBox "Vous n'avez pas renseigné le champ Toto",,"ERREUR"
Exit Sub
End If

2-Pour la MAJ, propriétés du formulaire, onglet Données, autoriser ou interdire....

3- Oui, c'est possible, il suffit de mettre les critères appropriés dans la requête sourcedu formulaire qui présente les
résultats de ta recherche, syntaxe:
[Forms]![monForm]![monChamp]
ou bien de compléter ton champ stLinkCriteria, si tu débutes, donne-nous les noms des contrôles dans ton formulaire, le
nom
des champs dans ta table, précise s'ils sont alpha ou numériques, on te rédigera ça.

J-Pierre

"djeaty" a écrit dans le message de news:

Hello...

J'ai crée un formulaire avec un champ texte qui me permet de rechercher un
enregistrement d'un table qui sera afficheé sous sa forme de formulaire.
Pour ce faire j'ai simplement ajouter un bouton "ouvrir un formulaire" et
j'y ai indiquer les champs qui doivent etre similaire.

Afin d'obliger l'utilisateur a inscrire une valeur dans le champ text, j'ai
inscrit dans la propriété du champ text, sous "valide si" "Est Pas Null"
Cela fonctionne mais si l'utilisateur veut fermer le formulaire sans y avoir
écrit qqch, il ne peut pas !!! Comment faire ?

Deuxième question: Comment faire pour que l'utilisateur ne puisse pas
modifierl'enregistrement ouvert après la recherche ?

Et dernière question: est-il possible de mettre 2 ou 3 zone de text à
remplir afin d'affiner la recherche ?

C'est des problème tout bete mais j'ai commencer a utiliser Access il y
seulement 4 jours alors... :-/

Voici la copie du code que j'ai jusque a présent si jamais:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Texte0] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub


















Avatar
Pierre CFI [mvp]
en passant, dès qu'on fait un travail quelconque sur les dates, passer en format US

"#" & Format(Me.champDate,"mm/dd/yyyy") & "#"

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
Access http://www.mpfa.info

"J-Pierre" a écrit dans le message de news: u$NNx%
Bonjour,

Je vois que tu as passé une bonne nuit :-)

D'abord une remarque pour la date. Est-ce que ton champ dans ta table est bien défini comme une date ? Si oui, je mettrais la main
de Pierre à couper qu'il faut utiliser des # comme délimiteurs.

Pour tes deux problèmes:

1-Le critère de recherche "Title": normalement, le code suivant, qui revient à encadrer l'argument de recherche par des étoiles
devrait marcher:
Si ça ne marche pas, essaie avec % à la place de * (% est le caractère générique avec SQL Server, on ne sait jamais)
Pour faire d'autres essais, crée une requête avec l'éditeur, ce sera plus facile.
Enfin, vérifie dans l'aide en ligne, je crois, mais ne suis pas certain, que c'est possible sur un champ mémo.
Et d'autres vont peut-être aussi te répondre.....

If Not IsNull(Me.Search_by_title) And Me.Search_by_title <> "" Then
stLinkCriteria = stLinkCriteria & " AND [Title] = '*" & Me![Search by Title] & "*'"
End If

2-Lorsque j'ouvre un formulaire, cela soit directement un nouvel enregistrement qui apparaisse....
Désolé, je ne me souviens plus, j'ai en-tête quelque chose comme
DoCmd??????? GoTo AcNewRec, mais je n'ai pas trouvé dans l'aide en ligne.
Le mieux serait d'ouvrir un nouveau fil avec cette question spécifique.

J-Pierre

Tu utilises OE6 ? Pendant que tu y es, va dans menu->outils->options->onglet envois, et change les paramètres de texte brut (mets
126), tes lignes de code ne seront plus coupées intempestivement.

"djeaty" a écrit dans le message de news:
Salut J-Pierre,

Voila, après des heures de combat acharné, d'essais, et surtout grace à ton
aide, j'ai réussi à créer le formulaire de recherche que je désirais. Enfin
presque...

Comme tu peux dans le voir dans mon code plus bas, j'ai du modifier le code
que tu m'avais donné pour un champ non-obligatoire et j'ai du enlever les "#"
dans le code concernant les dates...

J'ai réussi à contourner le fait de devoir laisser dans ma "stLinkCriteria"
un champ non controlé par un "If Not IsNull" en ajoutant a mon formulaire de
recherche un champ non visible à valeur constante identique a un champ a
valeur constante de mon enregistrement a rechercher :-)

Il me reste juste 2 soucis:

Le premier c'est que le critère de recherche "Title" ne permet pas de
marquer un mot contenu dans le champ de type "mémo" de l'enregistrement
recherché. Il doit etre identique... Comment faire ? J'ai essayé de mettre
des "*" mais sans succès.

Et le deuxième (qui me sera très utile aussi pour d'autre formulaires de ma
base) c'est que lorsque j'ouvre un formulaire, cela soit directement un
nouvel enregistrement qui apparaisse, et non pas le dernier
enregistrement......

As-tu un idée pour ces 2 cas ?

Merci

Djeaty



Bonsoir,

Je ne m'attendais pas à ça :-) Tant pis pour moi, je m'y colle. Je considère que tous les champs de recherche doivent être
renseignés. Pour le champ de type memo, je ne souviens pas si on peut faire une sélection, je crois que oui.
Les champs tels [Aircraft] sont les noms des champs dans ta table.
Les champs tels Me![Texte0] sont les noms des champs dans ton formulaire.

stLinkCriteria = "[Aircraft] = '" & Me![Texte0] & "'" & _
" AND [Search by PO Number] = '" & Me![Texte1] & "'" & _
" AND [Search by Date] >= #" & Me![Texte2] & "#" & _
" AND [Search by Date] <= #" & Me![Texte3] & "#" & _
" AND [Search by Title] = '" & Me![Texte4] & "'"

Pour bien contrôler la valeur de stLinkCriteria, avant d'ouvrir ton formulaire, tu fais
MsgBox stLinkCriteria
et tu contrôles les erreurs de syntaxe :-) en particulier les espaces ou les ' manquants.

Si un champ, par exemple [Search by PO Number] n'est pas obligatoire, ton code devient (ce qui implique que Aircraft, lui, est
obligatoire):

stLinkCriteria = "[Aircraft] = '" & Me![Texte0] & "'"

If Not IsNull Me.[Texte1] And Me.[Texte1] <> "" Then
stLinkCriteria = stLinkCriteria & " AND [Search by PO Number] = '" & Me![Texte1] & "'"
End If
.........
MsgBox stLinkCriteria
DoCmd.OpenForm

J-Pierre

"djeaty" a écrit dans le message de news:

Merci J-Pierre, Merci pgz,

J'ai intégré vos code ca marche super.

Pour la question 3 voici les données:

Dans mon formulaire de recherche, qui s'appelle "PO search" j'ai plusieurs
champs de texte correspondant chacun à 1 critère de recherche qui me sert à
ouvrir le ou les enregistrementle(s) concerné du formulaire "PO".

Ces champs sont: "Search by Aircraft" (Celui-ci fonctionne déjà, c'est celui
que j'ai crée moi), "Search by PO Number", "Search by PO issuer", "Search by
Maintenance Center", "Search by Date" (pour celui ci, j'aimerai que
l'utilisateur ai une plage de date à entrer, genre entre 00.00.0000 et
00.00.0000) et finalement "Search by Title" (pour celui ci je sais pas si il
est possible de rentrer un mot à rechercher dans une zone mémo du formulaire
"PO". Les données à rechercher sont toutes dans le formulaire "PO" donc dans
le table "PO". Et les noms des champs de la table correspondent aux noms des
champs dans le formulaire "PO search" sans le "Search by"

Ils sont tous de type "texte" sauf le champ "Title" qui est de type "Mémo"

Ce que je cherche à faire c'est que si l'on remplit plus que 1 critère de
recherche, cela ouvre le ou les enregistrements qui contiennent TOUT les
citères. Donc une recherche de type "et". Et si possible qu'un message genre
"Merci de modifier les citère de recherche" apparaissent si aucun
enregistrement sont trouvé....

Merci bOcoup bOcoup.....

Mon code actuel:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

If IsNull(Me.Search_by_Aircraft) Or Me.Search_by_Aircraft = "" Then
MsgBox "Please indicate Aircraft Registration", , "Error"
Exit Sub
End If





Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Search by Aircraft] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly


Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub







Bonjour,

1-N'utilise pas les propriétés de ton champ texte, mais contrôle si ce champ texte a bien été renseigné par l'utilisateur
quand il clique sur ton bouton

If IsNull(Me.monChamp) Or Me.monChamp ="" Then
MsgBox "Vous n'avez pas renseigné le champ Toto",,"ERREUR"
Exit Sub
End If

2-Pour la MAJ, propriétés du formulaire, onglet Données, autoriser ou interdire....

3- Oui, c'est possible, il suffit de mettre les critères appropriés dans la requête sourcedu formulaire qui présente les
résultats de ta recherche, syntaxe:
[Forms]![monForm]![monChamp]
ou bien de compléter ton champ stLinkCriteria, si tu débutes, donne-nous les noms des contrôles dans ton formulaire, le nom
des champs dans ta table, précise s'ils sont alpha ou numériques, on te rédigera ça.

J-Pierre

"djeaty" a écrit dans le message de news:

Hello...

J'ai crée un formulaire avec un champ texte qui me permet de rechercher un
enregistrement d'un table qui sera afficheé sous sa forme de formulaire.
Pour ce faire j'ai simplement ajouter un bouton "ouvrir un formulaire" et
j'y ai indiquer les champs qui doivent etre similaire.

Afin d'obliger l'utilisateur a inscrire une valeur dans le champ text, j'ai
inscrit dans la propriété du champ text, sous "valide si" "Est Pas Null"
Cela fonctionne mais si l'utilisateur veut fermer le formulaire sans y avoir
écrit qqch, il ne peut pas !!! Comment faire ?

Deuxième question: Comment faire pour que l'utilisateur ne puisse pas
modifierl'enregistrement ouvert après la recherche ?

Et dernière question: est-il possible de mettre 2 ou 3 zone de text à
remplir afin d'affiner la recherche ?

C'est des problème tout bete mais j'ai commencer a utiliser Access il y
seulement 4 jours alors... :-/

Voici la copie du code que j'ai jusque a présent si jamais:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Texte0] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub






















Avatar
J-Pierre
Salut Pierre,

Tu as toujours ta main ? :-)

Tu as raison (comme toujours, sans vouloir passer de la pommade).

J'irai même plus loin, pour être parfaitement compatible avec d'autres logiciels (comme SQL Server):
Format(Me.champDate,"yyyy/mm/dd")
Le problème ?
Sur une date style "05/04/2006" et suivant la version de SQL Server utilisée (français/anglais), ce dernier va considérer
qu'on est en avril ou en mai.

Bon, le problème ne se pose que si on passe à ADP.

J-Pierre

"Pierre CFI [mvp]" a écrit dans le message de news:
en passant, dès qu'on fait un travail quelconque sur les dates, passer en format US

"#" & Format(Me.champDate,"mm/dd/yyyy") & "#"

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
Access http://www.mpfa.info

"J-Pierre" a écrit dans le message de news:
u$NNx%
Bonjour,

Je vois que tu as passé une bonne nuit :-)

D'abord une remarque pour la date. Est-ce que ton champ dans ta table est bien défini comme une date ? Si oui, je mettrais
la main de Pierre à couper qu'il faut utiliser des # comme délimiteurs.

Pour tes deux problèmes:

1-Le critère de recherche "Title": normalement, le code suivant, qui revient à encadrer l'argument de recherche par des
étoiles devrait marcher:
Si ça ne marche pas, essaie avec % à la place de * (% est le caractère générique avec SQL Server, on ne sait jamais)
Pour faire d'autres essais, crée une requête avec l'éditeur, ce sera plus facile.
Enfin, vérifie dans l'aide en ligne, je crois, mais ne suis pas certain, que c'est possible sur un champ mémo.
Et d'autres vont peut-être aussi te répondre.....

If Not IsNull(Me.Search_by_title) And Me.Search_by_title <> "" Then
stLinkCriteria = stLinkCriteria & " AND [Title] = '*" & Me![Search by Title] & "*'"
End If

2-Lorsque j'ouvre un formulaire, cela soit directement un nouvel enregistrement qui apparaisse....
Désolé, je ne me souviens plus, j'ai en-tête quelque chose comme
DoCmd??????? GoTo AcNewRec, mais je n'ai pas trouvé dans l'aide en ligne.
Le mieux serait d'ouvrir un nouveau fil avec cette question spécifique.

J-Pierre

Tu utilises OE6 ? Pendant que tu y es, va dans menu->outils->options->onglet envois, et change les paramètres de texte brut
(mets 126), tes lignes de code ne seront plus coupées intempestivement.

"djeaty" a écrit dans le message de news:

Salut J-Pierre,

Voila, après des heures de combat acharné, d'essais, et surtout grace à ton
aide, j'ai réussi à créer le formulaire de recherche que je désirais. Enfin
presque...

Comme tu peux dans le voir dans mon code plus bas, j'ai du modifier le code
que tu m'avais donné pour un champ non-obligatoire et j'ai du enlever les "#"
dans le code concernant les dates...

J'ai réussi à contourner le fait de devoir laisser dans ma "stLinkCriteria"
un champ non controlé par un "If Not IsNull" en ajoutant a mon formulaire de
recherche un champ non visible à valeur constante identique a un champ a
valeur constante de mon enregistrement a rechercher :-)

Il me reste juste 2 soucis:

Le premier c'est que le critère de recherche "Title" ne permet pas de
marquer un mot contenu dans le champ de type "mémo" de l'enregistrement
recherché. Il doit etre identique... Comment faire ? J'ai essayé de mettre
des "*" mais sans succès.

Et le deuxième (qui me sera très utile aussi pour d'autre formulaires de ma
base) c'est que lorsque j'ouvre un formulaire, cela soit directement un
nouvel enregistrement qui apparaisse, et non pas le dernier
enregistrement......

As-tu un idée pour ces 2 cas ?

Merci

Djeaty



Bonsoir,

Je ne m'attendais pas à ça :-) Tant pis pour moi, je m'y colle. Je considère que tous les champs de recherche doivent
être
renseignés. Pour le champ de type memo, je ne souviens pas si on peut faire une sélection, je crois que oui.
Les champs tels [Aircraft] sont les noms des champs dans ta table.
Les champs tels Me![Texte0] sont les noms des champs dans ton formulaire.

stLinkCriteria = "[Aircraft] = '" & Me![Texte0] & "'" & _
" AND [Search by PO Number] = '" & Me![Texte1] & "'" & _
" AND [Search by Date] >= #" & Me![Texte2] & "#" & _
" AND [Search by Date] <= #" & Me![Texte3] & "#" & _
" AND [Search by Title] = '" & Me![Texte4] & "'"

Pour bien contrôler la valeur de stLinkCriteria, avant d'ouvrir ton formulaire, tu fais
MsgBox stLinkCriteria
et tu contrôles les erreurs de syntaxe :-) en particulier les espaces ou les ' manquants.

Si un champ, par exemple [Search by PO Number] n'est pas obligatoire, ton code devient (ce qui implique que Aircraft,
lui, est
obligatoire):

stLinkCriteria = "[Aircraft] = '" & Me![Texte0] & "'"

If Not IsNull Me.[Texte1] And Me.[Texte1] <> "" Then
stLinkCriteria = stLinkCriteria & " AND [Search by PO Number] = '" & Me![Texte1] & "'"
End If
.........
MsgBox stLinkCriteria
DoCmd.OpenForm

J-Pierre

"djeaty" a écrit dans le message de news:

Merci J-Pierre, Merci pgz,

J'ai intégré vos code ca marche super.

Pour la question 3 voici les données:

Dans mon formulaire de recherche, qui s'appelle "PO search" j'ai plusieurs
champs de texte correspondant chacun à 1 critère de recherche qui me sert à
ouvrir le ou les enregistrementle(s) concerné du formulaire "PO".

Ces champs sont: "Search by Aircraft" (Celui-ci fonctionne déjà, c'est celui
que j'ai crée moi), "Search by PO Number", "Search by PO issuer", "Search by
Maintenance Center", "Search by Date" (pour celui ci, j'aimerai que
l'utilisateur ai une plage de date à entrer, genre entre 00.00.0000 et
00.00.0000) et finalement "Search by Title" (pour celui ci je sais pas si il
est possible de rentrer un mot à rechercher dans une zone mémo du formulaire
"PO". Les données à rechercher sont toutes dans le formulaire "PO" donc dans
le table "PO". Et les noms des champs de la table correspondent aux noms des
champs dans le formulaire "PO search" sans le "Search by"

Ils sont tous de type "texte" sauf le champ "Title" qui est de type "Mémo"

Ce que je cherche à faire c'est que si l'on remplit plus que 1 critère de
recherche, cela ouvre le ou les enregistrements qui contiennent TOUT les
citères. Donc une recherche de type "et". Et si possible qu'un message genre
"Merci de modifier les citère de recherche" apparaissent si aucun
enregistrement sont trouvé....

Merci bOcoup bOcoup.....

Mon code actuel:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

If IsNull(Me.Search_by_Aircraft) Or Me.Search_by_Aircraft = "" Then
MsgBox "Please indicate Aircraft Registration", , "Error"
Exit Sub
End If





Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Search by Aircraft] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly


Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub







Bonjour,

1-N'utilise pas les propriétés de ton champ texte, mais contrôle si ce champ texte a bien été renseigné par
l'utilisateur
quand il clique sur ton bouton

If IsNull(Me.monChamp) Or Me.monChamp ="" Then
MsgBox "Vous n'avez pas renseigné le champ Toto",,"ERREUR"
Exit Sub
End If

2-Pour la MAJ, propriétés du formulaire, onglet Données, autoriser ou interdire....

3- Oui, c'est possible, il suffit de mettre les critères appropriés dans la requête sourcedu formulaire qui présente
les
résultats de ta recherche, syntaxe:
[Forms]![monForm]![monChamp]
ou bien de compléter ton champ stLinkCriteria, si tu débutes, donne-nous les noms des contrôles dans ton formulaire,
le nom
des champs dans ta table, précise s'ils sont alpha ou numériques, on te rédigera ça.

J-Pierre

"djeaty" a écrit dans le message de news:

Hello...

J'ai crée un formulaire avec un champ texte qui me permet de rechercher un
enregistrement d'un table qui sera afficheé sous sa forme de formulaire.
Pour ce faire j'ai simplement ajouter un bouton "ouvrir un formulaire" et
j'y ai indiquer les champs qui doivent etre similaire.

Afin d'obliger l'utilisateur a inscrire une valeur dans le champ text, j'ai
inscrit dans la propriété du champ text, sous "valide si" "Est Pas Null"
Cela fonctionne mais si l'utilisateur veut fermer le formulaire sans y avoir
écrit qqch, il ne peut pas !!! Comment faire ?

Deuxième question: Comment faire pour que l'utilisateur ne puisse pas
modifierl'enregistrement ouvert après la recherche ?

Et dernière question: est-il possible de mettre 2 ou 3 zone de text à
remplir afin d'affiner la recherche ?

C'est des problème tout bete mais j'ai commencer a utiliser Access il y
seulement 4 jours alors... :-/

Voici la copie du code que j'ai jusque a présent si jamais:

Option Compare Database

Private Sub Bouton_Search_Click()
On Error GoTo Err_Bouton_Search_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "PO"

stLinkCriteria = "[Aircraft]=" & "'" & Me![Texte0] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Bouton_Search_Click:
Exit Sub

Err_Bouton_Search_Click:
MsgBox Err.Description
Resume Exit_Bouton_Search_Click

End Sub


























1 2 3