Главная страница
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.48 MB
Время: 0.022 c
8-78003
reticon
2003-04-03 22:31
2003.07.24
опять медиаплеер :(((((((


6-78024
J_S
2003-05-19 16:34
2003.07.24
работа по FTP через idFTP


1-77967
denick
2003-07-10 01:31
2003.07.24
Delphi & MS Word.


1-77861
Иосиф Сталин
2003-07-13 16:04
2003.07.24
Помогите с TMENUITEM


3-77746
Avreliy
2003-07-01 14:38
2003.07.24
Параметр в представление.