Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.007 c
1-32726
LazorenkoX
2002-03-30 00:26
2002.04.11
SendMessage or What?


3-32642
Rustik
2002-03-19 15:41
2002.04.11
Вылетает ошибка


4-33005
Cobalt
2002-02-09 15:37
2002.04.11
Поиск дочерних окон


6-32914
Merlot
2002-01-28 16:19
2002.04.11
Подключение к инетнету


3-32674
reg
2002-03-20 15:21
2002.04.11
поиск по бд





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский