Чтение онлайн

ЖАНРЫ

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

• 256 Мегабайт данных на одно BLOb поле

• 100 паролей на сессию

• 15 длина пароля

• 63 паролей на таблицу

• 159 полей с проверками корректности (validity check) (32 Bit)

• 63 поля с проверками корректности (validity check) (16 Bit)

Ограничения dBase:

• 256 открытых таблиц dBASE на систему (16 Bit)

• 350 открытых таблиц dBASE на систему (BDE 3.0 – 4.0, 32 Bit)

• 512 открытых таблиц dBASE на систему (BDE 4.01 и выше, 32 Bit)

• 100 блокировок на запись на одной таблице dBASE (16 and 32 Bit)

• 100

записей, учавствующих в транзакции на таблицу (32 Bit)

• 1 миллиард записей в таблице

• 2 миллиарда байт в файле .DBF (таблица)

• 4000 Размер записи в байтах (dBASE 4)

• 32767 Размер записи в байтах (dBASE for Windows)

• 255 Количество полей в таблице (dBASE 4)

• 1024 Количество полей в таблице (dBASE for Windows)

• 47 Количество тэгов индексов на один .MDX-файл.

• 254 Размер символьных полей

• 10 открытых основных индексов (.MDX) на таблицу

• 220 Длина ключевого выражения в символах 

В процессе работы программы изменилась структура БД (alter table etc.). Программа продолжала успешно открывать таблицы, но запросы посылались в соответствии со старой схемой данных

Nomadic отвечает:

В установках BDE (Configuration utility или BDEAdmin) можно выставить SCHEMA CACHE = FALSE (не кэшировать схему данных).

Но в некоторых случаях ошибки такого рода все-таки происходят. В таком случае необходимо воспользоваться методом TDatabase.FlushSchemaCache после каждого изменения метаданных. 

Как в Delphi сбросить кэш БД на диск?

Nomadic отвечает:

uses BDE {в Delphi 1.x не помню, но вроде bdeprocs};

dbiSaveChanges

На Delphi 1.x (16bit) дополнительно вызовите эту процедуру -

procedure DropCache; assembler;

asm

 mov ah,$0D

 int $21

end;
 

Как настроить MS SQL Server 6.5 на корректную работу с числами и BDE при выполнении UPDATE?

Nomadic отвечает:

Дело в том, что SQL Links на NT-ишном клиенте шлет на сервер дату как 1-янв-97, что сервер не пpиемлет. Совершенно случайно я нашел системный скрипт, который подключает русский и болгарский языки.

1. выполни sp_configure и убедись, что у тебя default sortorder id==106 (rus case insens) или 105 (rus case sens). Если нет – переставь сервер.

2. найди в каталоге c:\mssql\install скрипт instlang.sql и запусти его.

3. либо руками каждому проставь каждому логину, работающему с NT, язык русский, либо поставь его как default language серверу. В этом случае 95-м клиентам придется руками прописать в логине язык us_english, иначе они перестанут работать.

Для установки russian как default надо выполнить скрипт:

exec sp_configure 'default language', 2

go

reconfigure

go

Как

научить VCL делать Refresh для запросов правильно?

Особенно интересует Refresh для связки Master-Detail.

Nomadic отвечает:

Старо как мир, и нет ничего военного:

procedure RefreshQuery(Query: TQuery; F: boolean);

var B: TBookMark;

begin

 with Query do if Query.Active then begin

B := GetBookMark;

try

Close;

Unprepare; {Если не поставить этого, то если используется select SP, то иногда последующая операция вешает сервер. Кто скажет почему?!}

Active:=True;

if F then begin

try

GotoBookMark(B)

except on EDatabaseError do First;

end

end else First;

finally

FreeBookmark(B);

end;

 end;

end;

Уфф! Кажется, лучше уже не сделать. :)

dbtables можно опционально пропатчить (см. в конце), чтобы иметь такой вот рyлезный Detail query.

Update for dbtables.pas

New interface function DoRefreshQuery can Refresh TQuery component in master-detail scheme and alone.

TQuery.RefreshParams should be updated

function GetFieldNamesStr(DataSet: TDataSet): String;

var I: Integer;

begin

 Result := '';

 with DataSet do for I := 0 to FieldCount - 1 do begin

Result := Result + Fields[ I ].FieldName + ';';

 end;

end;

procedure DoRefreshQuery(Query: TQuery; KeyFields: String; BookMarkSearch: Boolean);

Поделиться с друзьями: