Форум: "Базы";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];
ВнизРедактирование DataSet Найти похожие ветки
← →
N&N (2003-07-02 08:42) [0]Уважаемые мастера, не смейтесь над вопросом начинающего.
Смысл моей проблемы: на форме размещены IBDatabase, IBTransaction, IBTable и DataSourse.
Установлены все необходимые свойства и все работает: навигация, вставка и удаление.
А когда заменил IBTable на IBQuery не получается войти в режим вставки, в просмотре работает.
Пишет ”Cannot modify a read-only dataset”, подскажите, пожалуйста, что сделать.
← →
Zacho (2003-07-02 08:48) [1]Использовать TIBUpdateSQL вместе с TIBQuery.
А еще лучше - не использовать TIBQuery и TIBTable вообще.
Есть TIBDataSet - вот им и нужно пользоваться.
← →
N&N (2003-07-02 08:51) [2]>Zacho
Вас понял, огромное спасибо!
← →
Digitman (2003-07-02 09:27) [3]
> N&N
суть такова.
поскольку IB-сервер - это SQL-сервер, то доступ к объектам базы данных, управляемой сервером, со стороны клиентского приложения осуществляется при помощи посылок серверу SQL-предложений, содержащих структурированные запросы на выборку,вставку, модификацию и удаление записей.
основные запросы :
предложение SELECT - запрос на выборку записей
предложение INSERT - запрос на вставку записей
предложение UPDATE - запрос на модификацию записей
предложение DELETE - запрос на удаление записей
Объект TIBTable при обращении к каким-либо из его методов Open, Insert+Post, Edit+Post, Delete динамически (скрыто от тебя) строит соответствующие запросные SQL-предложения к серверу SELECT, INSERT, UPDATE, DELETE. Причем, если ReadOnly = True, то предложения INSERT, UPDATE, DELETE не строятся и запросы соответствующие не посылаются серверу, т.е. набор записей, возвращенных при Open (SELECT) является необновляемым/немодифицируемым.
Использование объекта TIBTable в ряде случаев нежелательно именно по причине динамического построения/препарирования запросов всякий раз, когда происходит вызов методов, требующих обновление/изменение набора записей, возвращенных по Open.
Объект TIBQuery может в каждый момент времени хранить только одно SQL-предложение, например, SELECT. Поэтому без смены текста SQL-предложения и без смены метода обращения к объекту TIBQuery набор записей с которыми он будет работать, обновляемым не будет.
Объект TIBUpdateSQL специально создан для хранения запросов на изменение записей (INSERT, UPDATE, DELETE).
Объект TIBDataSet позволяет хранить любую комбинацию из перечисленных выше запросов. При этом, если не указывать тексты SQL-запросов на вставку/изменение/удаление, набор записей, возвращенных при Open (разумеется, Select-запрос д.б. указан) будет необновляемым, точно так же как в ситуации с IBTable.ReadOnly = True.
Поскольку запросы, посылаемые объектами TIBQuery, TIBUpdateSQL и TIBDataSet, по-умолчанию препарируются однократно и автоматически (для последующего многократного исполнения по Open и ExecSQL), использование этих объектах во многих случаях предпочтительней, так как многократное повторное препарирование запросов (как в случае с TIBTable) может ощутимо снизить производительность работы кл.приложения и занимать доп.ресурсы системы.
← →
N&N (2003-07-02 10:22) [4]>Digitman
Большое спасибо за подробное разъяснение
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c