|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2008 Messages : 27 ![]() |
Bonjour,
J'ai une base de donnée sous OObase qui comprends : - Une base - Un formulaire - Plusieurs requêtes - Plusieurs rapports Mon problème actuel interviens au niveau des requêtes, je n'arrive pas a faire une recherche à choix multiples. Ex : >> Si "cloture 1" = 'vraie' alors j'attrape la valeur "date 1" et/ou >> Si "cloture 2" = 'vraie' alors j'attrape la valeur "date 2" et/ou >> Si "cloture 3" = 'vraie' alors j'attrape la valeur "date 3" etc etc... Ceci dans mes nombreuses fiches que comprens ma base. En ce moment je suis obligé de faire une requête pour chaque recherche, dans la première : >> Si "cloture 1" = 'vraie' alors j'attrape la valeur "date 1". Puis dans une autre : >> Si "cloture 2" = 'vraie' alors j'attrape la valeur "date 2". etc etc... Vous comprennez donc que c'est très long au vue du nombre de champ a tester et je dirrait même que c'est très difficile par la suite de faire un rapport lisible avec un minimum de trie (par date par ex.) Voila, je suis ouvert à toute vos aides et conseils que vous pouvez m'apporter. Et si vous avez besoin de plus d'informations n'hésitez pas. Cordialement, Guillaume M. |
|
|
00
|
|
|
#2 | ||||
|
Membre actif
![]() Inscription : décembre 2004 Messages : 169 ![]() |
Bonjour Guillaume,
J'ai du mal à comprendre ton problème et je pense que d'autres ont la même difficulté d'où l'absence de réponse à ta question. Je vais tenter d'y répondre quand même. Voyons... 1) OObase je connais, seulement : - soit tu utilises la base de données intégrée à OpenOffice.org et dans ce cas, tu publies dans le mauvais forum. - soit tu utilises réellement un pilote ODBC pour accéder à une base SQLite et dans ce cas, il nous faut plus de précision sur ce pilote (sa provenance et la version de SQLite). - soit tu utilises une autre solution que je ne connais pas et je suis preneur ! 2) Si tu utilises SQLite, il y a une solution qui passe par l'utilisation de la commande "CASE ... WHEN ... THEN ... ELSE ... END" dans la requête. Cette commande est ultra puissante mais peu de monde l'utilise car elle ne ressemble à rien de connu dans le SQL habituel. Je vais créer une base pour te faire un exemple : Code :
Sélection d'une colonne selon les cas : Code :
Si tu es sur SQLite, alors ce type de commande SQL doit pouvoir résoudre en partie ton problème. a+ |
||||
|
|
00
|
|
|
#3 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2008 Messages : 27 ![]() |
Bonjour,
Mon problème n'est pas facile à exposer je m'en excuse. Pour le premier point, je n'utilise pas la base de données OObase (non adapté) mais un pilote ODBC comme tu le stipule. Citation:
Code :
SELECT "NUM", "date_2", "cloture_2" FROM "BaseODBC" WHERE ( ( "cloture_2" = 1 ) ) J'ai l'impression que les requêtes que je fais sous OObase ne peuvent pas être sur plusieurs lignes (de programmation) ou sur plusieurs critères (de sélection). Est-ce une fausse idée que je me suis faite ? Je peux te transmettre mes lignes de codes (non fonctionnel car erreur) que je souhaiterai mettre en pratique. Code :
Je te remercie et j'attends vivement ta réponse. Cordialement Guillaume M. |
|||
|
|
00
|
|
|
#4 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2008 Messages : 27 ![]() |
Bonjour,
Tout d'abord, Bigane, je souhaiterai savoir si tu n'a pas fait une erreur ici Citation:
Pour ce qui est de l'exemple de requête que tu m'as fourni : je l'ai adapté à ma base et à mes besoins et cela me donne ceci. Code :
A mon niveau je ne veux pas voir les fiches qui ne sont pas concerné et donc qui n'ont aucune donnée dans leur colonne "Date" qui leurs son associé. J'ai passé à travers le problème de façon bête et méchante, j'ai ajouté un trie par "Date" décroissante Et après il me suffira que couper mon tableau une fois le rapport édité. Je te joins par MP le formulaire de ma base de donnée ça t'aidera sûrement à comprendre un peu mieux graphiquement ce que je recherche. Cordialement, Guillaume M. |
|||
|
|
00
|
|
|
#5 | ||||||||||
|
Membre actif
![]() Inscription : décembre 2004 Messages : 169 ![]() |
Bonsoir Guillaume,
1) réponse à ton dernier mail : non je n'ai pas fait d'erreur, le cas 1 passe avant le cas 3 et termine le select. En gros, en pseudo code cela donnerait : si cloture_1 alors Date_1 sinon si cloture_2 alors Date_2 sinon si cloture_3 alors Date_3 sinon NULL Ce qui explique la ligne "2|2008/07/04" uniquement. 2) Difficile de bien comprendre ton besoin mais je peux te proposer quelques pistes. En premier, je vais optimiser un peu ta requête (pour la présentation seulement : pas besoin de mettre des guillemets pour désigner tes colonnes s'il n'y a pas d'espace, tu peux oublier le AS si le nom de la colonne de résultat est le même que celui dans la table) : Code :
3) En fait, on peut imaginer une vue qui te retourne la date la plus ancienne (ou la plus récente) d'une fiche à condition qu'elle ait au moins une clôture sinon, cette date sera NULL. L'intérêt de la vue c'est que tu peux l'interroger comme une table depuis ton moteur ODBC sans avoir à faire des requêtes complexes. Voyons... je me permet de créer une table d'essais pour te montrer cet exemple : Code :
Code :
Code :
Et voici les résultats de quelques requêtes simples : Code :
a+ |
||||||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com