GNT sans publicité, site mobile, fonctionnalitées exclusives...

Access 2010 Filtre sur formulaire et récuperer le filtre dans une table

Le
acn
Bonjour,

Je voudrais récupérer le résultat d'un filtre sur formulaire réalisé avec un bouton "Recherche" et copier le résultat dans une autre table.
Le filtre sur la table Naissances fonctionne très bien, mais je ne sais pas recopier son résultat dans une table nommée Temp_Naissances.
Voici le code du bouton "Recherche"

Private Sub CmdFiltre_Click()
On Error GoTo Err_CmdFiltre_Click
Dim f As String

f = ""

'recherche nom
If Not IsNull(Me.RNom) And Me.RNom <> "" Then
f = "Nom LIKE ""*" & Me.RNom & "*"""
End If

'recherche prenom
If Not IsNull(Me.RPrenom) And Me.RPrenom <> "" Then
If f <> "" Then
f = f & " AND Prenom LIKE ""*" & Me.RPrenom & "*"""
Else
f = "Prenom LIKE ""*" & Me.RPrenom & "*"""
End If
End If

'recherche nom mère
If Not IsNull(Me.RNomM) And Me.RNomM <> "" Then
If f <> "" Then
f = f & " AND Prenom LIKE ""*" & Me.RPrenom & "*"""
f = f & " AND NomM LIKE ""*" & Me.RNomM & "*"""
Else
f = "NomM LIKE ""*" & Me.RNomM & "*"""
End If
End If

'recherche commune
If Not IsNull(Me.RLieu) And Me.RLieu <> "" Then
If f <> "" Then
f = f & " AND Prenom LIKE ""*" & Me.RPrenom & "*"""
f = f & " AND NomM LIKE ""*" & Me.RNomM & "*"""
f = f & " AND Lieu LIKE ""*" & Me.RLieu & "*"""
Else
f = "Lieu LIKE ""*" & Me.RLieu & "*"""
End If
End If

Me.Filter = f
Me.FilterOn = True
Exit_CmdFiltre_Click:
Exit Sub
Err_CmdFiltre_Click:
MsgBox Err.Description
Resume Exit_CmdFiltre_Click
End Sub
Lire les 17 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #22653591
Salut,

acn wrote:
Bonjour,

Je voudrais récupérer le résultat d'un filtre sur formulaire réalisé
avec un bouton "Recherche" et copier le résultat dans une autre table.
Le filtre sur la table Naissances fonctionne très bien, mais je ne
sais pas recopier son résultat dans une table nommée Temp_Naissances.
Voici le code du bouton "Recherche"


<snip>


Crée une requête basée sur la même source que ton formulaire.
Admettons que ton formulaire se nomme "frmSelection"
Puis, tu transforme cette requête en requête de création de table

Il te reste à renseigner le filtre de cette requête de cette manière:
Forms!frmSelection.Filtre

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
acn Hors ligne
Le #22656171
3stone a écrit le 07/10/2010 à 16h27 :
Salut,

acn wrote:
Bonjour,

Je voudrais récupérer le résultat d'un filtre sur
formulaire réalisé
avec un bouton "Recherche" et copier le résultat dans une
autre table.
Le filtre sur la table Naissances fonctionne très bien, mais je ne
sais pas recopier son résultat dans une table nommée
Temp_Naissances.
Voici le code du bouton "Recherche"



<snip>


Crée une requête basée sur la même source que ton
formulaire.
Admettons que ton formulaire se nomme "frmSelection"
Puis, tu transforme cette requête en requête de création de
table

Il te reste à renseigner le filtre de cette requête de cette
manière:
Forms!frmSelection.Filtre

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


Bonjour,
Merci pour cette réponse.
Mais je ne voudrais pas avoir une fenêtre "Entrer une valeur du paramètre qui s'affiche sur chaque filtre.
Mon formulaire est basé sur les données de la table "Naissances" et a 4 champs indépendants RNom... (voir code). J'ai juste à remplir le ou les champs et clicker sur le bouton "Recherche" pour réaliser le filtre. Reste à copier les données de ce filtre dans ma table "Temp_Naissances".
Merci
3stone
Le #22656541
Salut,

acn wrote:
Je voudrais récupérer le résultat d'un filtre sur
formulaire réalisé
avec un bouton "Recherche" et copier le résultat dans une
autre table.
Le filtre sur la table Naissances fonctionne très bien, mais je ne
sais pas recopier son résultat dans une table nommée
Temp_Naissances.
Voici le code du bouton "Recherche"



<snip>


Crée une requête basée sur la même source que ton
formulaire.
Admettons que ton formulaire se nomme "frmSelection"
Puis, tu transforme cette requête en requête de création de
table

Il te reste à renseigner le filtre de cette requête de cette
manière:
Forms!frmSelection.Filtre

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


Bonjour,
Merci pour cette réponse.
Mais je ne voudrais pas avoir une fenêtre "Entrer une valeur du
paramètre qui s'affiche sur chaque filtre.



Je me demande si tu as lu (ou compris) ce que je t'ai expliqué :-/


Mon formulaire est basé sur les données de la table "Naissances" et a
4 champs indépendants RNom... (voir code). J'ai juste à remplir le ou
les champs et clicker sur le bouton "Recherche" pour réaliser le
filtre. Reste à copier les données de ce filtre dans ma table
"Temp_Naissances".



Tu dis avoir un formulaire avec un filtre...
et tu souhaites envoyer les enregistrements filtré dans une table.

- fais ce que j'ai expliqué et tu auras ce résultat !

A moins que tu appelles "filtre" qque chose qui n'en est pas un...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
acn Hors ligne
Le #22656961
3stone a écrit le 08/10/2010 à 13h28 :
Salut,

acn wrote:
Je voudrais récupérer le résultat d'un filtre sur
formulaire réalisé
avec un bouton "Recherche" et copier le résultat dans une
autre table.
Le filtre sur la table Naissances fonctionne très bien, mais je ne
sais pas recopier son résultat dans une table nommée
Temp_Naissances.
Voici le code du bouton "Recherche"




<snip>


Crée une requête basée sur la même source que ton
formulaire.
Admettons que ton formulaire se nomme "frmSelection"
Puis, tu transforme cette requête en requête de création
de
table

Il te reste à renseigner le filtre de cette requête de cette
manière:
Forms!frmSelection.Filtre

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



Bonjour,
Merci pour cette réponse.
Mais je ne voudrais pas avoir une fenêtre "Entrer une valeur du
paramètre qui s'affiche sur chaque filtre.




Je me demande si tu as lu (ou compris) ce que je t'ai expliqué :-/


Mon formulaire est basé sur les données de la table
"Naissances" et a
4 champs indépendants RNom... (voir code). J'ai juste à remplir
le ou
les champs et clicker sur le bouton "Recherche" pour réaliser
le
filtre. Reste à copier les données de ce filtre dans ma table
"Temp_Naissances".




Tu dis avoir un formulaire avec un filtre...
et tu souhaites envoyer les enregistrements filtré dans une table.

- fais ce que j'ai expliqué et tu auras ce résultat !

A moins que tu appelles "filtre" qque chose qui n'en est pas un...

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


Bonjour,

Je ne suis pas un expert en Access.
J'ai bien compris pour créer la requète dont voici le code SQL

SELECT Naissances.Nom, Naissances.Prenom, Naissances.Date, Naissances.PNomP, Naissances.NomM, Naissances.PNomM, Naissances.Lieu, Naissances.Paroisse, Naissances.Canton, Naissances.AN, Naissances.MOIS, Naissances.JOUR, Naissances.Reference, Naissances.Observations, Naissances.INSEE, Naissances.SIGNET INTO Temp_Naissances
FROM Naissances
WHERE (((Naissances.Nom)=[Forms]![Choix_Naissance].[Filtre]) AND ((Naissances.Prenom)=[Forms]![Choix_Naissance].[Filtre]));

Si je remplace Filtre par un nom et que j'exécute la requète cela fonctionne à condition que je remplice les champ sur les boites d'interrogations.
Je ne comprend pas comment utiliser cette requète dans le formulaire sans les boites d'interrogations.
Merci de votreattention à mon problème.
3stone
Le #22663371
Salut,

Il te reste à renseigner le filtre de cette requête de cette
manière:
Forms!frmSelection.Filtre










Je devais dormir et penser à autre chose, lorsque j'ai écris cela ;-/



Si je remplace Filtre par un nom et que j'exécute la requète cela
fonctionne à condition que je remplice les champ sur les boites
d'interrogations.




Crée un bouton sur ton formulaire et colle le code ci-dessous
dans l'événement "sur clic" de ce bouton.

La table T_Temp se créera tout seul et y copiera automatiquement
tous les enregistrements disponibles dans le formulaire, que
ces enregistrements soient filtrés ou non...
Après le clic, les enregistrements sont disponibles dans la table
T_Temp et seront remplacé au prochain clic...

Essaie :

'----------------------------------------------
Dim db As DAO.Database
Dim sFld As String, sQry As String
Dim sF As String, sSrc As String
Dim l As Integer
Dim f As Field
Set db = CurrentDb
'
'/ SQL de création de la table temporaire
If InStr(Me.RecordSource, "Select") Then
'source chaine sql
sF = Me.RecordSource
sSrc = Mid(sF, InStr(1, sF, "From") + 4)
sSrc = Trim(Replace(sSrc, ";", ""))
sF = Replace(sF, sSrc & ".", "")
l = InStr(sF, "From") - 1
sFld = Mid(sF, 7, l - 7)
sQry = "Select Top 1 " & sFld & " Into T_Temp " & Mid(sF, l)
Else
'source est une table
With Me.RecordsetClone
For Each f In .Fields
If Len(sFld) = 0 Then
sFld = f.Name
Else
sFld = sFld & ", " & f.Name
End If
Next f
End With
sQry = "Select TOP 1 " & sFld & " Into T_Temp From " _
& Me.RecordSource & ";"
End If
'/ Création de la table temporaire
With DoCmd
.SetWarnings False
.RunSQL sQry
.SetWarnings True
End With
'// Vider la table temporaire
db.Execute "Delete * From T_Temp"
sQry = ""
'
'// Si le formulaire n'est pas vide
If Me.RecordsetClone.RecordCount > 0 Then
With Me.RecordsetClone
'// Boucler sur les enregistrements du formulaire
Do Until .EOF
'// Créer la requête SQL
sQry = "Insert Into T_Temp (" & sFld & ") Values ("
For Each f In .Fields
If f.Type = dbText Then
sQry = sQry & Chr(34) & f.Value & Chr(34) & ","
Else
sQry = sQry & f.Value & ","
End If
Next f
sQry = Left(sQry, Len(sQry) - 1) & ");"
.MoveNext
db.Execute sQry
Loop
End With
End If
'// Libérer
Set db = Nothing
'-----------------------------------------------------------------

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Publicité
Suivre les réponses
Poster une réponse
Anonyme