Советы по Delphi. Версия 1.4.3 от 1.1.2001
Шрифт:
Индикатор прогресса выполнения запроса
Delphi 1
Невозможно.
Идея заключалась в том, чтобы с помощью объекта TQuery выполнять запросы, SQL сервер их в фоне обрабатывал бы, а мы смотрели бы на это дело на локальной машине
Если вы используете Paradox или DBase, то, я думаю, для этой цели вы можете воспользоваться функцией DBIRegisterCallback:
Использование:
Обратные вызовы (Callbacks) используются в случае, когда клиентскому приложению необходимо получить (возвратить) информацию о ходе выполнения операции. Функция DBIRegisterCallback позволяет клиенту зарегистрировать обратную связь с BDE, после чего BDE может извещать клиента о наступлении событий.
Лично я никогда этим не пользовался, поэтому на смогу поделиться деталями.
Обновление данных БД из модальной формы
Delphi 1
Возможно следующий код позволит вам использовать ту же самую таблицу и источник данных в модальной форме, что и в вашей главной форме. Попробуйте изменить код модальной формы следующим образом:
Как записать в BLOB-поле большой текст (>255 байт) из Delphi?
Nomadic отвечает:
Можно так –
или так –
Блокировка
таблицы…когда вы получаете эту, или аналогичную ошибку, вы можете прервать процесс следующим образом (в предположении, что вы пытаетесь запостить запись):
В противном случае вы не получите ошибку в случае, если текущую запись «рассматривает» другой пользователь (если вы пользуетесь базой данных Paradox, поставляемой с Delphi), если, конечно, вы правильно это установили. Paradox сам создает в сетевом каталоге файл с именем pdxusers.lck, видимый всеми пользователями, так что каждый BDE на каждой локальной машине может запирать запись, таким образом запрещая другим пользователям постить запись до снятия блокировки. Я не знаю, каким образом вы получаете эту ошибку, поэтому существует вероятность того, что я ошибаюсь в своих предположениях.
Каким драйвером пользуется TDATABASE?
Delphi 1
Вы можете использовать вызов IDAPI dbiGetDatabaseDesc. Вот быстрая справка (не забудьте добавить DB в список используемых модулей):
Для получения дополнительной информации обратитесь к описанию свойства pDatabase.szDbType.
Как создать новый запрос и скопировать туда точно такие же описания полей?
Nomadic отвечает:
Копируешь FieldDefs.
Проходишь циклом по FieldDefs.Items[i].CreateField(Owner);
Запись потока в BLOB-поле
Delphi 1
Вся хитрость заключается в использовании StrPcopy (помещения вашей строки в PChar) и записи буфера в поток. Вы не сможете передать это в PChar непосредственно, поскольку ему нужен буфер, поэтому для получения необходимого размера буфера используйте <BufferName>[0] и StrLen.
Вот пример использования TMemoryStream и записи его в Blob-поле: