2010-11-16 19 views
0

aide 9x Advantage Server, je suis en train de créer une copie d'une structure de table DBF/CDX en utilisant le code suivant:Comment utiliser AdsCopyTableStructure pour créer la table ttAdsCDX

table1.AdsCopyTableStructure(d.AdsConnectionTemp.connectPath+'table.dbf'); 

Le tableau qui est créé est du type ttAdsADT, même si la table d'origine est ttAdsCDX.

J'ai essayé d'utiliser AdsConvertTable sur la table résultante, mais il affiche une exception se plaignant que l'opération ne peut pas être effectuée sur des tables libres.

Un moyen de le faire?

+1

Pour être honnête, je n'ai eu aucun problème avec cette fonction. Vous êtes certain que la table de base est ttAdsCDX? En outre, comme Doug mentionné ci-dessous, vous ne devriez avoir aucun problème à utiliser AdsConvertTable. Je ne suis pas sûr si c'est possible ici, mais peut-être plus d'un échantillon comprenant la table, etc. peut donner plus d'information. – Edgar

+0

Salut Edgar, quelle version d'ADS utilisez-vous? –

Répondre

0

je n'étais pas en mesure d'obtenir cette fonction au travail, mais il est venu avec un travail autour en utilisant le code suivant:

t:=TAdsTable.create(nil); 
try 
     t.AdsTableOptions.AdsFilterOptions:=RESPECT_WHEN_COUNTING; 
     t.open; 
     t.AdsSetAOF('keyval=-1'); // gives an empty result 
     t.AdsCopyTable('c:\somewhere\emlt.dat'); 
     t.close; 
finally 
     freeAndNil(t); 
end; 
0

Vous avez deux options. Si vous ne me dérange pas d'avoir un seul enregistrement, vous pouvez toujours faire

Sélectionnez top 1 * dans mynewtable.dbf de oldtable

qui est rapide

Une deuxième option serait de faire votre première méthode , en l'enregistrant dans un fichier adt (qui est la valeur par défaut), puis ouvrez cette table et utilisez la fonction ADSConvertTable pour créer le fichier DBF.

ADTTable.ADSTableConvert ('dbftable.dbf', ttADSCDX);