Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.24;
Скачать: CL | DM;

Вниз

Редактирование 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
1-77898
LKJJ
2003-07-14 11:37
2003.07.24
Что за фигня со StringGrid?


6-78032
zhe
2003-05-16 03:34
2003.07.24
MAPI


1-77909
XobBIT
2003-07-09 19:02
2003.07.24
ListView1 и память...


1-77865
Checist [root]
2003-07-13 17:53
2003.07.24
DrawGrid


1-77854
Номолос
2003-07-13 08:07
2003.07.24
? про меню