» » » Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001


Авторские права

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Здесь можно скачать бесплатно "Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001
Рейтинг:
Название:
Советы по Delphi. Версия 1.4.3 от 1.1.2001
Издательство:
неизвестно
Год:
неизвестен
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Описание и краткое содержание "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать бесплатно онлайн.



…начиная с 1001. Смотрите другие файлы…






• 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);

var

 Fields: TList;

 KeyValues: Variant;

 KeyNames: String;

 Bmk: TBookmark;

 I: Integer;

 BookmarkFound: Boolean;

 CanLocate: Boolean;

begin

 Fields := TList.Create;

 if KeyFields = '' then KeyFields := GetFieldNamesStr(Query);

 try

  Query.GetFieldList(Fields, KeyFields);

  for I := Fields.Count - 1 downto 0 do with TField(Fields[I]) do

   if Calculated or Lookup then Fields.Delete(I);

  CanLocate := Fields.Count > 0;

  if CanLocate then begin

   if Fields.Count = 1 then KeyValues := TField(Fields[0]).Value

   else begin

    KeyValues := VarArrayCreate([0, Fields.Count - 1], varVariant);

    KeyValues[0] := TField(Fields[0]).Value;

   end;

   KeyNames := TField(Fields[0]).FieldName;

   for I := 1 to Fields.Count - 1 do begin

    KeyNames := KeyNames + ';' + TField(Fields[I]).FieldName;

    KeyValues[I] := TField(Fields[I]).Value;

   end;

  end;

 finally

  Fields.Free;

 end;

 with Query do begin

  Bmk := nil;

  DisableControls;

  try

   BookmarkFound := False;

   if BookMarkSearch then Bmk := GetBookmark;

   Close;

   Open;

   if Assigned(Bmk) then try

    GotoBookMark(Bmk);

    BookmarkFound := True;

   except

   end;

   if not BookmarkFound and CanLocate then Locate(KeyNames, KeyValues, []);

  finally

   EnableControls;

   Screen.Cursor := crDefault;

   FreeBookmark(Bmk);

  end;

 end;

end;


procedure TQuery.RefreshParams;

var DataSet: TDataSet;

begin

 DisableControls;

 try

  if FDataLink.DataSource <> nil then begin

   DataSet := FDataLink.DataSource.DataSet;

   if DataSet <> nil then

    if DataSet.Active and (DataSet.State <> dsSetKey) then

     DoRefreshQuery(Self, GetFieldNamesStr(Self), False);

  end;

 finally

  EnableControls;

 end;

end

Как заставить BDE сохранять в БД поле времени с сотыми долями секунды?

Nomadic отвечает:

Если руками, то в BDE Administrator (BDE Configuration Utility).

Если при инсталляции твоей программы, то –

В пункте Make Registry Changes InstallShield'а создай ключ

HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine\Settings\SYSTEM\FORMATS\TIME\MILSECONDS=TRUE 

Запись буфера BDE на диск

Delphi 1 

Общее:

Сделанные в таблице изменения непосредственно на диск не записываются до тех пор, пока таблица не будет закрыта. Потеря питания или сбой в системе может привести к потере данных и прочим неприятностям. Чтобы избежать этого, существует два прямых вызова Database Engine, дающих один и тот же результат. Эти функции – DbiUseIdleTime и DbiSaveChanges.

DbiSaveChanges(hDBICur):

DbiSaveChanges сохраняет на диске все обновления, находящиеся в буфере таблицы, связанной с курсором (hDBICur). Может быть вызвана из любого места программы. Например, можно при каждом обновлении записи сохранять на диске все изменения (добавьте dbiProcs в список используемых модулей):

procedure TForm1.Table1AfterPost(DataSet: TDataSet);

begin

 DbiSaveChanges(Table1.handle);

end;

При таком способе можно не беспокоиться насчет потерь данных в случае потери питания или сбоя системы, которое может произойти после обновления записи.

DbiSaveChanges также можно использовать для того, чтобы временную таблицу (созданную с помощью DbiCreateTempTable) сделать постоянной.

Эта функция не применима к таблицам SQL.

DbiUseIdleTime:

DbiUseIdleTime может быть вызвана, если «Windows Message Queue» (очередь запросов Windows) пуста. Это позволяет Database Engine сохранить на диске «грязные буферы». Другими словами, выполняется операция DbiSaveChanges, но применительно ко ВСЕМ измененным таблицам. Тем не менее, данная операция не обязательно должна выполняться после каждого обновления записи, ее нужно приберечь для «холостого» периода (период простоя, idle).

В Delphi это может быть использовано таким образом (добавьте dbiProcs в список используемых модулей):

procedure TForm1.FormCreate(Sender: TObject);

begin

 Application.onIdle := UseIdle;

end;


procedure Tform1.UseIdle(Sender: TObject; var Done: Boolean);

begin

 DbiUseIdleTime;

end;

Некоторые замечания:


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Книги похожие на "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

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

Валентин Озеров - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Отзывы читателей о книге "Советы по Delphi. Версия 1.4.3 от 1.1.2001", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.