2015-04-22 2 views
0

J'ai une application qui a une connexion ADO sur le formulaire principal et plusieurs plugins qui ont des requêtes ADO que je connecte à cette connexion principale. Un problème est que je ne peux pas concevoir correctement ces plugins sans leur connexion personnelle qui devient salissant quand je connecte les plugins à l'application principale. Un plugin a beaucoup de requêtes.Liste toutes les requêtes connectées via la connexion ado

Je peux utiliser ConnectionObject pour transmettre les requêtes du plugin via la connexion principale, mais cela ne me convient pas, car lorsque la connexion principale doit se reconnecter, je ne peux pas reconnecter automatiquement toutes les requêtes. Je dois donc réaffecter la propriété Connection de ces plugins à la connexion principale après la création du plugin.

Je sais que l'on peut lister toutes les requêtes actives en utilisant la propriété DataSets d'ADOConnection. Mais quelle propriété dois-je utiliser si je veux répertorier les DataSets actifs et inactifs? L'IDE les répertorie automatiquement dans le concepteur, donc je pense qu'il devrait y avoir une façon générique de le faire.

+1

J'ai vérifié et propriété indexée 'DataSets' est une collection de tous les ensembles de données (actifs et inactifs) liés à une donnée connexion. Vous devrez nous fournir du code si cela ne fonctionne pas pour vous. – Wodzu

+0

En effet. Hier, je n'ai pas vérifié comment fonctionne la méthode 'TADOConnection.RegisterClient'. Aujourd'hui j'ai trouvé que tu as raison. Bien que les guides que j'ai trouvés sur Internet me disaient tout de suite que 'DataSets' ne sont que des ensembles de données actifs. Quoi qu'il en soit, vous pouvez poster votre commentaire comme réponse correcte. – Danatela

+0

Fait, j'ai prolongé ma réponse un peu. – Wodzu

Répondre

3

Peut-être la documentation concernant TADOConnection.DataSets qui peut être trouvé here vous a-t-elle rendu confuse.

Il dit: d'accéder à des ensembles de données actifs associés à un composant de connexion

Utilisez DataSets.

Cela pourrait laisser penser que DataSets ne conserve que des ensembles de données actifs, ce qui n'est pas le cas. Pour tester cela, il suffit de mettre un TADOConnection et un composant TADOQuery sur un formulaire et configurer TADOQuery.Connection à l'instance de votre connexion, par exemple ADOConnection1.

Pour tester cette propriété DataSets conserve également des ensembles de données inactives vous pouvez utiliser ce code:

procedure TForm1.FormCreate(Sender: TObject); 
var 
    i: Integer; 
begin 
    for i := 0 to ADOConnection1.DataSetCount - 1 do 
    begin 
    if not ADOConnection1.DataSets[i].Active then 
     ShowMessage('Inactive dataset!'); 
    end; 
end;