Главная страница
    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.008 c
3-77773
mihmax
2003-06-19 16:00
2003.07.24
BDE не видит MS SQL


14-78146
АлексейК
2003-07-09 07:36
2003.07.24
Похоже в ошибке о наличии у Ирака ОМП виновата Нигерия...


14-78140
Milz
2003-07-09 11:12
2003.07.24
Преобразование отдела АСУ в отдельную фирму


3-77714
Alfred77777
2003-06-30 09:39
2003.07.24
Пустое поле


14-78080
Мазут Береговой
2003-07-08 09:34
2003.07.24
Кто-нибудь сталкивался с DAP и MSODSC?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский