Форум: "Базы";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
ВнизЗначение BLOCKSIZE в таблице. Найти похожие ветки
← →
sniknik (2002-03-20 13:04) [0]Нужно в программе узнать с каким значением BLOCKSIZE создавалась таблица. Для определения максимального размера. Если кто кинет ссылку на описание структуры DB буду очень благодарен.
← →
deleon (2002-03-20 14:02) [1]А функция DbiGetCursorProps не подходит ?
← →
deleon (2002-03-20 14:06) [2](с)Degisy Software:
type
HDR_PARADOX = packed record
{000}RecLen: Word; { record length (including record header) }
{002}HdrLen: Word; { header length }
{004}Keyed : Byte; { flag keyed table or not }
{005}BlockSize: Byte;{ data block size code in kb }
{006}NumRecs: Longint; { number of records in file }
{010}NumBlUsed: Word; { number of blocks in use }
{014}BlFirst: Word; { First data block (always 1) }
{016}BlLast: Word; { Last data block }
{018}Rsrv1: array[0..14]of Byte;
{033}NumFlds: Byte; { number of fields }
{034}Rsrv2: Byte;
{035}NumKeyFlds: Word;{ number of keyed fields }
{037}Rsrv3: array[0..19]of Byte;
{057}Version: Byte;{ version of file }
{058}Rsrv4: array[0..14]of Byte;
{073}AutoInc: Integer;{ autoincrement value }
{077}BlFrstFree: Word;{ first free block }
{079}Rsrv5: array[0..40]of Byte;
{120}OffsFlds: Word;{ start of field description array }
end;
← →
sniknik (2002-03-20 14:13) [3]Спасибо DbiGetCursorProps вполне подходит. Не знаю как в первый раз смотрел но просмотрел параметр iBlockSize в структуре CURProps.
← →
deleon (2002-03-20 14:55) [4]Если что, раскажу как поменять :)
← →
sniknik (2002-03-20 15:03) [5]В смысле? на рабочей таблице? я счас просто создаю новую и переписываю данные. Старые таблицы версии 4.0 B.S. 2048 новые v7.0 B.S. 32768.
Кстати видел пишут ограничения по размеру таблици максимум 4Gb, я как ни считал максимум 2Gb получается. у тебя как?
← →
deleon (2002-03-20 15:09) [6]Возьми Database Workshop 4.12
в нем можно менять TableLevel, а также BlockSize!
http://www.dbwork.kuban.ru
--------------------------------------
Если интересует как все это добро программно применить
к существующей таблице без копирования - пиши!
← →
sniknik (2002-03-20 15:22) [7]Конечно интересует. И именно програмно желательно без сторонних компонентов. Так как?
← →
deleon (2002-03-20 16:24) [8](c)Degisy Software (как обычно :)
function Bde_SetBlockSize(Table: TTable; BlockSize: Cardinal): DbiResult;
var
hDb : hDbiDb;
TblDesc : CRTblDesc;
IsActive : boolean;
OptDesc : FLDDesc;
OptData : DBIPATH;
Value : DBINAME;
CurProp : CURProps;
begin
IsActive := Table.Active;
if not( IsActive )then Table.Active := True;
{ Get Cursor Props }
Result := DbiGetCursorProps(Table.Handle, CurProp);
if( Result = DBIERR_NONE )and
( StrIComp(CurProp.szTableType, szPARADOX) = 0 )or
( StrIComp(CurProp.szTableType, szDBASE) = 0 )or
( StrIComp(CurProp.szTableType, szFOXPRO) = 0 )then
begin
{ Prepare descriptors }
FillChar(OptDesc, SizeOf(FLDDesc), 0);
FillChar(TblDesc, SizeOf(CRTblDesc), 0);
StrPCopy(Value, IntToStr(BlockSize));
StrPCopy(OptDesc.szName, "BLOCK SIZE");
OptDesc.iFldType := fldZSTRING;
OptDesc.iLen := StrLen(Value) + 1;
StrCopy(TblDesc.szTblName, CurProp.szName);
StrCopy(TblDesc.szTblType, CURProp.szTableType);
StrCopy(OptData, Value);
TblDesc.iOptParams := 1;
TblDesc.pfldOptParams := @OptDesc;
TblDesc.pOptData := @OptData;
{ Modify table level }
Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
try
Table.DisableControls;
Table.Active := False;
Result := DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False);
Check(Result);
finally
Table.Active := IsActive;
Table.EnableControls;
end;
end;
end;
Единственное, придется подобрать значение блока, не все прокатывают, нормальные (1024,2048,4096,8192,32768)
Ну а TableLevel меняется похожим способом :)
← →
sniknik (2002-03-20 16:33) [9]Еще раз спасибо. Буду разбиратся. А значение блока можно в BDE администраторе взять для каждого левела.
Я тут пытался нестандартный задать 65536 так не взяла собака! :) установила в 16384. Пытался чтобы у таблици был максимум 4Gb. 8192 - кстати тоже не покатит, кажется.
← →
deleon (2002-03-20 16:58) [10]Будут вопросы - пиши!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c