Re: Construction SQL + calcul CDbl() ? Forum Microsoft ACCESS
[ Envoyer un message ] [ Forum access ] [ F.A.Q. ] [ Archives ]
(3 visiteurs)

Forum Microsoft ACCESS Modification: 12/8/2008
Création: 21/3/2002

Programmation, Trucs et astuces sur Microsoft ACCESS.

 
2008 messages déposés

Re: Construction SQL + calcul CDbl() ?

Envoi de Gdal le 15 Novembre 2004 18:59:36:

Réponse à: Re: Construction SQL + calcul CDbl() ? envoi de roland le 15 Novembre 2004 08:19:20:

rebonjour,

J'ai un peu plus de temps que ce midi pour faire mon descriptif.

Donc dans le formulaire, on a 2 listes modifiables, 2 champs textes et un bouton.

La liste LST_A est utilisée pour que l'utilisateur précise l'emplacement de la recherche.
Dans celle-ci, il y a 5 colonnes:
1ère colonne => Descriptif
2éme colonne => Nom de la table ou il faudra faire la recherche
3éme colonne => Nom du champ de la table ou il faudra faire la recherche
4éme colonne => Type 1, paramètre utilisé lors de la recherche (Cdbl(, #, ...)
5éme colonne => Type 2, paramètre utilisé lors de la recherche, en fait il termine le type 1 ( ),#, ...)
Liste des valeurs:
---------------------------------
"Descriptif";"Nom_Tbl";"Nom_Chp_Tbl";"Type_1";"Type_2";"Date";"Tbl_Cuve";"Date";CDbl(;);"Heure";"Tbl_Cuve";"Heure";#;#;"Quantité";"Tbl_Cuve";"Qte_litre";Replace(;", "","", ""."")";"Prix au litre";"Tbl_Cuve";"Prix_litre";Replace(;", "","", ""."")";"Total";"Tbl_Cuve";"Total";Replace(;", "","", ""."")"
-----------------------------------------

La liste LST_B est utilisée pour que l'utilisateur précise le mode de sa recherche (égale, compris entre, commençant par, finssant par, contenant, ...).
Dans celle-ci, j'ai mis 3 colonnes:
1ère colonne => Descriptif
2éme colonne => Type 1, paramètre utilisé lors de la recherche (=, BETWEEN, *, ...)
3éme colonne => Type 2, paramètre utilisé lors de la recherche, en fait il termine le type 1 ( AND, *, ...)
Liste des valeurs:
---------------------------------
"Descriptif";"Type_1";"Type_2";"égalent à";" = ";"";"comprisent entre";" BETWEEN ";" AND ";"commençant par";" = * ";"";"finissant par";" = ";"*"
-----------------------------------------

Les 2 champs textes sont paramètrés (masque de saisie, visible ou non, ...) suivant le choix des deux premières listes.

Maintenant la construction de la requête qui me pose problème.
---------------------------------
'Sélection de tous les champs de la table
Sql_Resultat = "SELECT " & Me.rech_dans.Column(1) & ".*"

'Sélection de la table
Sql_Resultat = Sql_Resultat & " FROM " & Me.rech_dans.Column(1)

'Sélection de la clause WHERE
'Table + Champ de recherche
Sql_Resultat = Sql_Resultat & " WHERE "

Sql_Resultat = Sql_Resultat & Me.rech_dans.Column(1) & "." & Me.rech_dans.Column(2)

'Sélection du comparateur
'Me.rech_valeur.column(1) donne = ou BETWEEN ou =*
Sql_Resultat = Sql_Resultat & Me.rech_valeur.Column(1)

'Sélection en fonction du type du critère (date, heure, chiffre, texte, ...)
'Me.rech_dans.column(3) donne Cdbl( ou # ou Replace(
Sql_Resultat = Sql_Resultat & Me.rech_dans.Column(3)

'Sélection du 1er critère
Sql_Resultat = Sql_Resultat & Me.rech_critere1

'Sélection en fonction du type du critère (date, heure, chiffre, texte, ...)
'Me.rech_dans.column(4) donne ) ou # ou ",", ".")
Sql_Resultat = Sql_Resultat & Me.rech_dans.Column(4)

Sql_Resultat = Sql_Resultat & ";"
-----------------------------------------
En mettant msgbox "" & sql_resultat à la fin j'obtiens:
---------------
SELECT Tbl_Cuve.* FROM Tbl_Cuve WHERE Tbl_Cuve.Date = CDbl(11/12/2004)
---------------------------------
Ce qui me paraît malgrés moi bien logique...

Au début dans la liste LST_A, j'avais mis CDbl(, Replace( entre "", mais même enlevé le problème est le même...

Je pense qu'en procédent ainsi j'ai plusieurs avantages:
+ Formulaire de recherche général pouvant servir à toute la base, il suffit juste de modifier les valeurs de la liste LST_A.
+ Si je rajoute un champ dans la table, je n'ai juste qu'à modifier les valeurs de la liste LST_A
Incovénient je ne gère pas les jointures. Je me pencherait dessus à la fin...

Merci du coup de mains.

Gdal


Réponses:


Répondre

Pseudo:
(limité à 25 caractères)
E-Mail:
Cochez cette case pour être averti à l'adresse ci-dessus d'une réponse sur ce fil de discussion

Sujet: Re: Construction SQL + calcul CDbl() ?

Commentaires:

Lien optionnel URL:
Titre du lien:
Image optionnelle URL:

Créer un blog aminaute gratuitement et facilement


Alerter Rezoweb si ce message est illégal

Créez votre Forum Rezoweb gratuitement !

Vous pouvez rechercher un mot ou une expression
dans les messages indexés par Google :

Créez votre Forum gratuit Rezoweb