Форум: "Базы";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
ВнизПостроение индекса CDX-файла . HELP! Найти похожие ветки
← →
nic418 (2002-08-16 10:22) [0]Задача в следующем: В связи с переходом с FoxPro на SQL2000, ведётся таблица в SQL, а Dbf-файл поддерживается автоматически. Нужно обеспечить восстановление Dbf&Cdx-файлов по SQL, в т.ч. и восстанавливать индексы.
Реализуется в D5 через BDE -> AddIndex. Типа
TabDbf.AddIndex("ALFA", "SUBSTR(KPROC,1,1)+ALFA+KODP", [ixExpression]);
мне же надо построить индекс, который бы Фокс понимал как
TAG = ALFA и Index expr KODP & Index filter: PPL="1".
(это эквивалентно Select ...From ... Where PPL="1" имеющий индекс KODP
Это реализовано в Apollo и Halcyon , но обработка Dbf через BDE сделана еже файлов для 50 и переходить ... труба.
Если подскажите - буду благодарен.
Николай kivc406@mail.ru or golubyh@ahxk.ru
← →
Mike Kouzmine (2002-08-16 10:27) [1]>Это реализовано в Apollo и Halcyon , но обработка Dbf через BDE сделана еже файлов для 50 и переходить ... труба.
Не совсем понял
← →
sniknik (2002-08-16 10:34) [2]попробуй в BdeAdmine у драйвера dBase LEVEL = 25 установить.
не факт что получится, у меня работало (совместимость с FoxPro 2.5 doc) но на здесь на форуме после такого моего ответа говорили не получалось.
скорее всего пытались с более поздними версиями фокса стыковатся, если у тебя с твоим не получится сразу бросай и переходи на Halcyon.
выдержка из хелпа
Type of table format used to create dBASE tables. Can be 7 for dBASE 7.0 table format, 5 for dBASE 5.0 table format, 4 for dBASE 4.0 table format, or 3 for dBASE III and dBASE III PLUS table formats. Use 25 for FoxPro. Default: 7
← →
nic418 (2002-08-16 10:53) [3]snicnic
Если не трудно, брось на мыло синтаксис соотв-го AddIndex
Mike Kouzmin
Имел в веду, что в комплексе ~ 50 обрабатываемых SQL2000 таблиц с соответствующим сервисом(восстановление CDX-файлов)- всё через BDE.
← →
sniknik (2002-08-16 11:50) [4]никогда не пользовался AddIndex по крайней мере после того как узнал о замечательной SQL команде CREATE INDEX (не относится к Halcyon и др.комп. не имеющим SQL).
попробуй так гораздо проще и в больщинстве случаев быстрей.
тебе не надо ничего переделывать надо попробовать, установка LEVEL = 25 должна заставить твой код генерить CDX индексы. проверь на совместимость и дальше решай ...
не перевирай ники, могут обидется.
← →
nic418 (2002-08-16 12:00) [5]sniknik
Извини за ошибку в ник-е.
Может быть бросишь CREATE INDEX для моего случая(ни разу не использовал). Lev=25 стоит.
Спасибо
← →
sniknik (2002-08-16 21:05) [6]у тебя основная проблема в том чтобы составной индекс сделать? похоже. В Local SQL вроде не позволяется, я покопался в старом коде нашол процедуру которой делал так (оказалось очень и очень редко) в общем вот почти один в один из хелпа по Dbi
procedure MyDbiAddIndex(Tbl: TTable; sTag: DBINAME; sIndex: DBIKEYEXP);
var
NewIndex: IDXDesc;
begin
if not Tbl.Active then Tbl.Open;
NewIndex.szTagName := sTag;
NewIndex.bPrimary := False;
NewIndex.bUnique := False;
NewIndex.bDescending := False;
NewIndex.bMaintained := True;
NewIndex.bSubset := False;
NewIndex.bExpIdx := True;
NewIndex.iFldsInKey := 1;
NewIndex.aiKeyFld[0] := 2;
NewIndex.szKeyExp := sIndex;
NewIndex.szKeyCond := "";
NewIndex.bCaseInsensitive := False;
NewIndex.iBlockSize := 0;
Check(DbiAddIndex(Tbl.dbhandle, Tbl.handle, PChar(Tbl.TableName),
szFOXPRO, NewIndex, nil));
end;
ну в общем должон разобратся.
p.s. cory за задержку почту тока дома проверил.
на случай если не дошла.....
← →
sniknik (2002-08-16 21:09) [7]Б-дь и точно не дошла третий раз рамблер чертов отказ дает.
ладно заодно тебе пример вызова хотя это и не сложно
MyDbiAddIndex(Table1, "ALFA", "SUBSTR(KPROC,1,1)+ALFA+KODP");
← →
elv (2002-08-17 13:39) [8]Не могу сослаться на источник, не помню, но ч-з BDE не стоит работать с cdx. Особенно если cdx содержит выражения.
← →
Desdechado (2002-08-17 19:03) [9]во-во. с фоксом только на чтение. источник - Borland.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c