Создал базу данных Paradox (BDE), есть поле Num (Autoincrement), как сделать так, чтобы это поле отображало реальный номер записей в таблице (начиная с "1")? Сейчас у меня первая запись под номером 14529, и при добавлении/удалении записей эти номера изменяются, есть и пробелы, например, после 15234 сразу следует номер 16345 и т.д. Можно ли избавиться от таких пробелов в нумерации?
Смотрел здесь: http://forum.vingrad.ru/topic-31038.html#go_p, заинтересовал примерчик, но у меня возникают ошибки при компилляции начиная с того, что при включении DBE выдает - нет такого модуля. Объясните, пожалуйста, как исправить данный пример? И поможет ли он?
| Код | в секцию uses включи DBE
Procedure TfmMain.PackTable(tLog:TTable); var TblDesc: CRTblDesc; // rslt: DBIResult; Dir: string; //имеется в виду huge string т.е. {$H+} hDb: hDbiDb; begin if tLog.Active then tLog.Active := False; //деактивиpуем TTable if not tLog.Exclusive then tLog.Exclusive:=True; SetLength(Dir, dbiMaxNameLen + 1); DbiGetDirectory(tLog.DBHandle, False, PChar(Dir)); SetLength(Dir, StrLen(PChar(Dir))); DbiOpenDatabase(nil, nil, dbiReadWrite, dbiOpenExcl, nil, 0, nil, nil, hDb); DbiSetDirectory(hDb, PChar(Dir)); FillChar(TblDesc, sizeof(CRTblDesc), 0); StrPCopy(TblDesc.szTblName, vDBPath+tLog.TableName); StrCopy(TblDesc.szTblType, szParadox);//BTW тут может и szDBase стоять TblDesc.bPack := TRUE; DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False); DbiCloseDatabase(hDb); end;
|
|