Как использовать AdsCopyTableStructure для создания таблицы ttAdsCDX - PullRequest
0 голосов
/ 16 ноября 2010

Используя Advantage Server 9x, я пытаюсь создать копию структуры таблицы DBF / CDX, используя следующий код:

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

Созданная таблица имеет тип ttAdsADT, хотя исходная таблица - ttAdsCDX.

Я попытался использовать AdsConvertTable для результирующей таблицы, но появляется исключение, в котором говорится, что операция не может быть выполнена для свободных таблиц.

Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 18 ноября 2010

У вас есть несколько вариантов.Если вы не против иметь одну запись, вы всегда можете сделать

Выбрать top 1 * в mynewtable.dbf из oldtable

, что быстро

Второй вариант будетчтобы сделать ваш первый метод, сохраняя его в файле adt (который по умолчанию), затем откройте таблицу THAT и используйте функцию ADSConvertTable для создания DBF.

0 голосов
/ 18 ноября 2010

Мне не удалось заставить эту функцию работать, но я обошел ее, используя следующий код:

 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;
...