Глупый вопрос (по работе с IBDataSet)
Модератор: kdv
Глупый вопрос (по работе с IBDataSet)
Сразу извиняюсь, потому как сам понимаю что вопрос глупый))))
Просто я не могу понять принцип обновления данных когда их загружаешь не через IBTable а через SQL, к примеру IBDataSet.
Раньше когда работал с базами данных делал так: есть таблица, загружаю её через Тэйбл, подрубаю к ДатаСоурсу к примеру DBEdit и могу править через этот Эдит какое либо поле.
Сейчас я пытаюсь сделать так: есть три таблицы, я их загружаю через IBDataSet (здоровым запросом), и пытаюсь изменить потом через ДБЭдит какое либо свойство, но оно недоступно для изменения. Насколько я понял нужно добавить запрос в свойство ModifySQL, но я не понимаю, как можно обновить сразу три таблицы с помощью этого свойства. Если кому несложно пожалуйсто объясните принцип....
Просто я не могу понять принцип обновления данных когда их загружаешь не через IBTable а через SQL, к примеру IBDataSet.
Раньше когда работал с базами данных делал так: есть таблица, загружаю её через Тэйбл, подрубаю к ДатаСоурсу к примеру DBEdit и могу править через этот Эдит какое либо поле.
Сейчас я пытаюсь сделать так: есть три таблицы, я их загружаю через IBDataSet (здоровым запросом), и пытаюсь изменить потом через ДБЭдит какое либо свойство, но оно недоступно для изменения. Насколько я понял нужно добавить запрос в свойство ModifySQL, но я не понимаю, как можно обновить сразу три таблицы с помощью этого свойства. Если кому несложно пожалуйсто объясните принцип....
Либо пишешь SP, выполняющую модификацию всех трёх на базе входных параметров и в ModifySQL вставляешь её вызов с засовыванием полей в параметры , либо в ModifySQL прописываешь модификацию одной из таблиц, а на событии BeforePost или AfterPost выполняешь изменения в двух других через отдельные TIBSQL или TIBQuery. А ещё советую почитать http://www.ibase.ru/devinfo/ibx.htm
никаких "живых" запросов не бывает, совсем. есть select, и есть ins/del/upd. См. www.ibase.ru/devinfo/ibx.htm, там описание свойств IBDataSet, и как с ним работать, а также ссылки на примеры.
При использовании ins/del/upd - Согласен. Хотя, и не гожусь для спора с Вами. Вот щас тоже еще вопросик напишу.kdv писал(а):никаких "живых" запросов не бывает, совсем. есть select, и есть ins/del/upd. См. www.ibase.ru/devinfo/ibx.htm, там описание свойств IBDataSet, и как с ним работать, а также ссылки на примеры.
не надо спорить. Все "живые" запросы получаются следующим образом - некая фигня в компонентах или драйвере анализирует передаваемый select, и сама конструирует запросы insert/update/delete. Никаким иным образом записи удалять, вставлять или менять в SQL серверах невозможно, принципиально.
Как это делает BDE - см.
www.ibase.ru/devinfo/bde.htm
Как это делает ClientDataSet + провайдер - см. в доке по Delphi.
Но механика везде одинакова. Отсюда и ограничения на всякие order by, having и т.п. - локальный парсер этих движков не в состоянии сконструировать запросы на обновление в таких случаях.
Идеалом "живых" запросов и является IBDataSet и аналогичные - где ты сам прописываешь или автоматически генерируешь запросы для Insert, update и delete (и refresh). Более того, вручную прописываемые в этих свойствах IBDataSet запросы могут быть никак не связаны между собой - можно читать select-ом, удалять процедурой, а вставлять данные вообще в другую таблицу.
Как это делает BDE - см.
www.ibase.ru/devinfo/bde.htm
Как это делает ClientDataSet + провайдер - см. в доке по Delphi.
Но механика везде одинакова. Отсюда и ограничения на всякие order by, having и т.п. - локальный парсер этих движков не в состоянии сконструировать запросы на обновление в таких случаях.
Идеалом "живых" запросов и является IBDataSet и аналогичные - где ты сам прописываешь или автоматически генерируешь запросы для Insert, update и delete (и refresh). Более того, вручную прописываемые в этих свойствах IBDataSet запросы могут быть никак не связаны между собой - можно читать select-ом, удалять процедурой, а вставлять данные вообще в другую таблицу.
по секрету скажу, что вот уже как 5-7 лет примерно, люди все больше и больше используют компоненты прямого доступа К ЛЮБОМУ СЕРВЕРУ.что для работы IB-подобными серверами лучше всего использовать IB-компоненты?
И в данном вопросе, кстати, сами компоненты не имеют значения.
BDE - TQuery + TUpdateSQL
ее аналог в IBX - IBQuery + IBUpdateSQL
что также очень похоже на IBDataSet.
каких фичей? ODBC, OLE DB, .Net и т.п.???А зачем тогда стока всяких фичей напридумано? (философский вопрос)
тут нет ничего необъятного. см.
http://www.ibase.ru/devinfo/choosecomp.htm
все более-менее похоже. Да, количество всяких интерфейсов для доступа к БД велико. А что делать? Главное, что к этим интерфейсам есть драйверы и компоненты для IB/FB. И их число существенно превышает число драйверов и компонент для любого другого сервера БД.
http://www.ibase.ru/devinfo/choosecomp.htm
все более-менее похоже. Да, количество всяких интерфейсов для доступа к БД велико. А что делать? Главное, что к этим интерфейсам есть драйверы и компоненты для IB/FB. И их число существенно превышает число драйверов и компонент для любого другого сервера БД.