OVH Cloud OVH Cloud

Réponse SQL vers Etat ou table

2 réponses
Avatar
Pascal02
Bonjour à vous tous,

Je ne sais plus ou j'avais récupéré cette routine (en tout cas excellente!)
qui bouclait sur des arguments provenant de controles et ajoutés en boucle
auantant que de besoin pour extraire des infos filtrées !

L'ennui c'est qu'elle affiche la réponse SQL dynamiquement dans un
sous-formulaire
et que je voudrais qu'à l'affichage des infos plus ou moins filtrées je
puissent sur
un clic de bouton envoyer la réponse SQL vers un état ou vers une table.

J'espère bien m'être expliqué. Le code ci-dessous est plus clair... lui !

merci par avance !
PASCAL

//////////////////////////////////////////// DEBUT CODE
///////////////////////////////////////

' Utilise l'ordre de la base pour les comparaisons de chaînes.
Option Compare Database
Option Explicit

Private Sub AjouteràWhere(ValeurChamp As Variant, NomChamp _
As String, MonCritère As String, NbrArg As Integer)

' Crée le critère pour la clause WHERE.

If ValeurChamp <> "" Then
' Ajoute "et" si aucun critère existe.
If NbrArg > 0 Then
MonCritère = MonCritère & " And "
End If

' Ajoute le critère au critère existant.
' Entoure la valeur de ValeurChamp et l'astérisque de points
' d'exclamations.
MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) & _
ValeurChamp & Chr(42) & Chr(39))

' Augmente le compteur d'argument.
NbrArg = NbrArg + 1
End If

End Sub
----------------------------------------------------------------------
Private Sub DisableControl()

' Si activé, désactive le contrôle dans la section détail après
' avoir changé le critère de sélection.

Dim Tmp As Variant

If Me![Sous-Formulaire_Affichage_Global].Enabled Then
Tmp = ActiveContrôles("Detail", False)
End If

End Sub
----------------------------------------------------------------------
Private Sub Afficher_listing_Click()

' Crée une clause WHERE en utilisant le critère recherche entré
' par l'utilisateur et définit la propriété Source (RecordSource)
' du sous-formulaire Trouver les clients.

Dim MonSQL As String, MonCritère As String, MonJeuEnreg As _
String
Dim NbrArg As Integer
Dim Tmp As Variant

' Initialise le compteur d'argument.
NbrArg = 0

' Initialise l'instruction SELECT.
MonSQL = "SELECT * FROM [Table_Requetes] WHERE "
MonCritère = ""

' Utilise les valeurs entrées dans les zones de texte de l'en-tête de
' formulaire
' pour créer les critères de la clause WHERE.

' vous pouvez ajouter d'autres conditions avec le m^me type de
' ligne ci-dessous

AjouteràWhere [Recherche le champ1], "[CHAMP1]", _
MonCritère, NbrArg
AjouteràWhere [Recherche le champ2], "[CHAMP2]", _
MonCritère, NbrArg
AjouteràWhere [Recherche le champ3], "[CHAMP3]", _
MonCritère, NbrArg
AjouteràWhere [Recherche la champ4], "[CHAMP4]", _
MonCritère, NbrArg

' Si aucun critère n'est spécifié, renvoie tous les enregistrements.
If MonCritère = "" Then
MonCritère = "True"
End If

' Crée l'instruction SELECT.
MonJeuEnreg = MonSQL & MonCritère

' Défini la propriété RecordSource du Sous-Formulaire
Me![Sous-Formulaire_Affichage_Global].Form.RecordSource = _
MonJeuEnreg

' Si aucun enregistrement ne correspond aux critères, affiche un message.
' Active le bouton Effacer.
If Me![Sous-Formulaire_Affichage_Global].Form.RecordsetClone._
RecordCount = 0 Then
MsgBox "Aucun enregistrement ne correspond aux critères introduits.", _
48, "Aucun enregistrement trouvé"
Me!Effacer.SetFocus
Else

' Active le contrôle dans la section détail.
Tmp = ActiveContrôles("Detail", True)
' Place le point d'insertion dans le Sous-Formulaire
Me![Sous-Formulaire_Affichage_Global].SetFocus
End If

End Sub
------------------------------------------------------------------------
Private Sub Effacer_Click()

' Efface les contrôles dans l'en-tête de formulaire et retire les
' enregistrements du sous-formulaire.

Dim MonSQL As String
Dim Tmp As Variant

MonSQL = "SELECT * FROM [Table_Requetes] WHERE False"

' efface les zones de recherche.
Me![Recherche le champ1] = Null
Me![Recherche le champ2] = Null
Me![Recherche le champ3] = Null
Me![Recherche le champ4] = Null

' Réinitialise la propriété RecordSource du sous-formulaire pour _
' retirer les enregistrements.
Me![Sous-Formulaire_Affichage_Global].Form.RecordSource = MonSQL

' Place le point d'insertion dans le zone de texte Recherche la société.
Me![Recherche le champ1].SetFocus

End Sub

2 réponses

Avatar
Pascal02
Bonsoir

Vraiment, pas une petite aide !
J'ai mis trop de code ou mal tournée ma question ?

;-)
siou palait, huuuum !
PASCAL


"Pascal02" a écrit dans le message de
news:3fcc7dfb$0$2389$
Bonjour à vous tous,

Je ne sais plus ou j'avais récupéré cette routine (en tout cas
excellente!)

qui bouclait sur des arguments provenant de controles et ajoutés en boucle
auantant que de besoin pour extraire des infos filtrées !

L'ennui c'est qu'elle affiche la réponse SQL dynamiquement dans un
sous-formulaire
et que je voudrais qu'à l'affichage des infos plus ou moins filtrées je
puissent sur
un clic de bouton envoyer la réponse SQL vers un état ou vers une table.

J'espère bien m'être expliqué. Le code ci-dessous est plus clair... lui !

merci par avance !
PASCAL

//////////////////////////////////////////// DEBUT CODE
///////////////////////////////////////

' Utilise l'ordre de la base pour les comparaisons de chaînes.
Option Compare Database
Option Explicit

Private Sub AjouteràWhere(ValeurChamp As Variant, NomChamp _
As String, MonCritère As String, NbrArg As Integer)

' Crée le critère pour la clause WHERE.

If ValeurChamp <> "" Then
' Ajoute "et" si aucun critère existe.
If NbrArg > 0 Then
MonCritère = MonCritère & " And "
End If

' Ajoute le critère au critère existant.
' Entoure la valeur de ValeurChamp et l'astérisque de points
' d'exclamations.
MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) & _
ValeurChamp & Chr(42) & Chr(39))

' Augmente le compteur d'argument.
NbrArg = NbrArg + 1
End If

End Sub
----------------------------------------------------------------------
Private Sub DisableControl()

' Si activé, désactive le contrôle dans la section détail après
' avoir changé le critère de sélection.

Dim Tmp As Variant

If Me![Sous-Formulaire_Affichage_Global].Enabled Then
Tmp = ActiveContrôles("Detail", False)
End If

End Sub
----------------------------------------------------------------------
Private Sub Afficher_listing_Click()

' Crée une clause WHERE en utilisant le critère recherche entré
' par l'utilisateur et définit la propriété Source (RecordSource)
' du sous-formulaire Trouver les clients.

Dim MonSQL As String, MonCritère As String, MonJeuEnreg As _
String
Dim NbrArg As Integer
Dim Tmp As Variant

' Initialise le compteur d'argument.
NbrArg = 0

' Initialise l'instruction SELECT.
MonSQL = "SELECT * FROM [Table_Requetes] WHERE "
MonCritère = ""

' Utilise les valeurs entrées dans les zones de texte de l'en-tête de
' formulaire
' pour créer les critères de la clause WHERE.

' vous pouvez ajouter d'autres conditions avec le m^me type de
' ligne ci-dessous

AjouteràWhere [Recherche le champ1], "[CHAMP1]", _
MonCritère, NbrArg
AjouteràWhere [Recherche le champ2], "[CHAMP2]", _
MonCritère, NbrArg
AjouteràWhere [Recherche le champ3], "[CHAMP3]", _
MonCritère, NbrArg
AjouteràWhere [Recherche la champ4], "[CHAMP4]", _
MonCritère, NbrArg

' Si aucun critère n'est spécifié, renvoie tous les enregistrements.
If MonCritère = "" Then
MonCritère = "True"
End If

' Crée l'instruction SELECT.
MonJeuEnreg = MonSQL & MonCritère

' Défini la propriété RecordSource du Sous-Formulaire
Me![Sous-Formulaire_Affichage_Global].Form.RecordSource = _
MonJeuEnreg

' Si aucun enregistrement ne correspond aux critères, affiche un message.
' Active le bouton Effacer.
If Me![Sous-Formulaire_Affichage_Global].Form.RecordsetClone._
RecordCount = 0 Then
MsgBox "Aucun enregistrement ne correspond aux critères introduits.", _
48, "Aucun enregistrement trouvé"
Me!Effacer.SetFocus
Else

' Active le contrôle dans la section détail.
Tmp = ActiveContrôles("Detail", True)
' Place le point d'insertion dans le Sous-Formulaire
Me![Sous-Formulaire_Affichage_Global].SetFocus
End If

End Sub
------------------------------------------------------------------------
Private Sub Effacer_Click()

' Efface les contrôles dans l'en-tête de formulaire et retire les
' enregistrements du sous-formulaire.

Dim MonSQL As String
Dim Tmp As Variant

MonSQL = "SELECT * FROM [Table_Requetes] WHERE False"

' efface les zones de recherche.
Me![Recherche le champ1] = Null
Me![Recherche le champ2] = Null
Me![Recherche le champ3] = Null
Me![Recherche le champ4] = Null

' Réinitialise la propriété RecordSource du sous-formulaire pour _
' retirer les enregistrements.
Me![Sous-Formulaire_Affichage_Global].Form.RecordSource = MonSQL

' Place le point d'insertion dans le zone de texte Recherche la société.
Me![Recherche le champ1].SetFocus

End Sub




Avatar
Raymond [mvp]
Bonsoir.

c'est vrai que autant de code refroidit un peut l'enthousiasme.
tu trouveras une base exemple sur la page:
http://access.seneque.free.fr/bases_exemples.htm N° 2
permet de créer une table "_export" et un fichier ".txt" avec les champs
sélectionnés d'une table
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Pascal02" a écrit dans le message de
news:3fcce809$0$2381$
Bonsoir

Vraiment, pas une petite aide !
J'ai mis trop de code ou mal tournée ma question ?

;-)
siou palait, huuuum !
PASCAL