Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
11-77815
Bartov
2002-11-21 20:50
2003.07.24
Кто-нибудь фильтрует сообщения в форуме?


14-78123
vizier
2003-07-08 20:43
2003.07.24
grid to be?


7-78167
Still Swamp
2003-05-13 14:28
2003.07.24
Общий вопрос по RS232


3-77805
Aiw
2003-07-03 12:49
2003.07.24
Как создать и подключить таблицу FoxPro?


3-77755
Vovik
2003-07-01 15:43
2003.07.24
Уважаемые Мастера. Почему не создается ADOQuery?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский