Bonjour,

Envoyé par
Anddi
Mon problème vient plutôt de l'utilisation de plusieur TQuery au niveau général d'un programme.
C'est justement un petit peu le but des sources que je t'ai donné. Si tu prends un peu de temps pour les étudier tu y découvriras l'unité BDESqlExecute dans le premier des sources. Dans cette unité du trouveras des méthodes permettant de gérer des TQuery de façon dynamique. En effet si ton projet dispose d'un très grand nombre de tables, il ne faut pas créer autant de TQuery qu'il y a de tables car ton applicatif sera alors très gourmand en ressources.
Afin de contourner ce problème tu trouveras par exemple, dans les sources :
1.
function execQuery(_dataBase: TDataBase; textSql: string):boolean;
Qui permet d'exeucuter sur une base _dataBase une requête SQL quelconque que tu passes par la variable textSql. Cette fonction te renvoie Ture si la requête aboutit.
2.
function getQueryResult(_dataBase: TDataBase; textSql: string):TQuery;
Qui te permet de récupérer un ensembles de résultats sous forme d'un TQuery. Tu passes à cette fonction le nom de ta base dans _dataBase, puis le texte de la requête dans la variable textSql.
Cette fonction te permettra de réaliser sur le TQuery différentes opérations et notamment l'affichage dans une dbGrid.
Pour utiliser cette fonction tu crées dynamiquement un TQuery, tu utilises ensuite la fonction qui renverra l'ensemble de résultats dans le TQuery créé précedemment, puis dès que tu n'en a plus besoin tu le libères avec un Free. Cela permet de gérer au mieu, les ressources dans ton application.
Tu y trouveras encore d'autres procédure et fonctions intéressantes.
J'utilise cette technique pour des applicatifs base de données pour lesquels le MCD comporte jusqu'à plus de 200 tables.
Bon code
Cordialement
Partager