Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.11;
Скачать: CL | DM;

Вниз

Значение 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
1-32883
roman-tutov@mail.ru
2002-03-29 16:49
2002.04.11
ComboBox


1-32899
webnew
2002-03-29 17:46
2002.04.11
Подключение к IIS 5.0


14-32948
Pete
2002-03-04 09:33
2002.04.11
New Component...


1-32777
AndrewK
2002-03-28 14:10
2002.04.11
Конвертация таблицы в Excel


3-32669
Пользователь
2002-03-20 15:08
2002.04.11
Обход всех данных в хранимой процедуре