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
|

|