[delphi] recuperer les index d'une table

recuperer les index d'une table [delphi] - Delphi/Pascal - Programmation

Marsh Posté le 16-11-2004 à 10:53:04    

jutilise la methode suivante pour recuperer les index et primarykey

Code :
  1. adotable1.tablename:=lcFieldQuery;
  2. adotable1.open;
  3. for loopD:=0 to adotable1.IndexDefs.count-1 do begin
  4.    memo1.Lines.add(adotable1.indexdefs.items[loopD].name+' '+adotable1.indexdefs.Items[loopD].Fields);
  5. end;
  6. adotable1.Close;


 
le probleme c que c lent, +-20s pour parcourir une centaine de table vu que adotable recuperer toutes les lignes a a chaque fois (ce dont je nait pas besoin)
 
jai essaye avec adodataset mais la je nai plus aucune info concernant ces index (ca ne renvoie rien)  :cry:  
 

Code :
  1. adodataset1.CommandText:='select * from '+lcTablename+' where 0=1';
  2. adodataset1.open;
  3. for loopD:=0 to adodataset1.IndexDefs.count-1 do begin
  4.    memo1.Lines.add(adodataset1.indexdefs.items[loopD].name+' '+adodataset1.indexdefs.Items[loopD].Fields);
  5. end;
  6. adodataset1.Close;


 

Reply

Marsh Posté le 16-11-2004 à 10:53:04   

Reply

Marsh Posté le 16-11-2004 à 11:12:17    

Dans les options de l'ADOTable il y a pas un truc pour travailler sur le serveur au lieu du client (keyset ou un truc du genre) ?
Sinon c'est peut-être au niveau de l'ADOConnection que ça se règle.

Reply

Marsh Posté le 16-11-2004 à 11:33:23    

jusque la je travaille en clUseClient pour les autres données que je doit rapatrier et cest tres rapide (4s pour comparer et synchroniser 2 databases assez consequentes)
 
en passant adotable en clUseServer je tombe a 3-4s uniquement pour afficher les index


Message édité par red faction le 16-11-2004 à 11:58:39
Reply

Marsh Posté le 16-11-2004 à 12:26:20    

pq adodataset ne me renvoie rien en ce qui concerne les index ?????
il n'y a pas moyen de recuperer ces infos (index+pk) par un adoQuery ?????


Message édité par red faction le 16-11-2004 à 12:46:10
Reply

Marsh Posté le 16-11-2004 à 14:35:10    

Parce qu'il ne te renvoie pas une table mais un ensemble de données créé à partir d'une table, cet ensemble de données n'ayant plus de clé je suppose
Essaie toujours avec un TADOQuery.


Message édité par antp le 16-11-2004 à 14:35:21
Reply

Marsh Posté le 16-11-2004 à 17:15:39    

TADOQuery n'a pas la donnée membre IndexDefs donc je trouve pas
 
Je n'ai tjs pas trouvé comment acceder aux valeurs par default des champs non plus :/

Reply

Marsh Posté le 16-11-2004 à 17:47:03    

[:yoyoz]

Reply

Marsh Posté le 17-11-2004 à 15:10:11    

[:yoyoz]

Reply

Marsh Posté le 21-11-2004 à 12:15:04    

bon jai finalement trouve avec openschema, mais c qd mm dommage que sur tout les topics que jai pu faire sur ce sujet personne ne ma conseillé sur cette methode..........
 
pas grave jai trouvé tout seul ....


Message édité par red faction le 22-11-2004 à 10:30:02
Reply

Marsh Posté le 21-11-2004 à 22:19:54    

en tt cas c'est sympa de poster la réponse ;-)

Reply

Marsh Posté le 21-11-2004 à 22:19:54   

Reply

Marsh Posté le 22-11-2004 à 15:59:37    

bon faut pas utiliser OpenSchema
la colonne DATA_TYPE est tjs a 130 que le type soit "memo" ou "text" dans MSAccess
 
c vraiment nimporte quoi :fou:
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed