Страницы: 12

Обо всем > программисты, помогите! 


Angels city    (12.11.10 15:42)  

меньше, чем через неделю курсачь, я весь гугл облазил, ничего стоящего и доступного не нашел по неживым запросом на delphi (локального харрактера) c помощью компонента TupdateSQL. помогите, кто чем может ((((


Mooncity    (12.11.10 15:42)  

нет


Sandcity    (12.11.10 15:43)  

Без понятия )


Angels city    (12.11.10 15:43)  

приведите хоть пример самого простого запроса (неживого), дальше я разбирусь


Angels city    (12.11.10 15:43)  

С Делфи знаком, с запросами знаком, но про такое понятие не слышал


Demons city    (12.11.10 15:45)  


> С Делфи знаком, с запросами знаком, но про


> неживым запросом на delphi (локального харрактера) c помощью
> компонента TupdateSQL


> не слышал


Angels city    (12.11.10 15:46)  

на кафедру к преподу с пузырем коньяку


Angels city    (12.11.10 15:47)  

Спроси у препода своего наводочку)) Ну или на коньячок)))


Suncity    (12.11.10 15:48)  

> С Делфи знаком, с запросами знаком, но про такое понятие не слышал
таже шляпа


Angels city    (12.11.10 15:48)  

не получится, препод очень принцыпиальный...


Angels city    (12.11.10 15:48)  


> pil-TT

+1)


Angels city    (12.11.10 15:50)  

про запросы updete, delete, insert кто-то слышал? (помимо select)


Demons city    (12.11.10 15:52)  


> про запросы updete, delete, insert кто-то слышал?

слышали


Demons city    (12.11.10 15:52)  

топа почему они неживые? =0


Demons city    (12.11.10 15:53)  

Принцип и порядок работы с TUpdateSQL для работы с неживыми запросами
-------------------------------------------------------------------...

Автор: Nomadic

Кидаешь UpdateSQL на форму, после чего в том SQL, который ты собираешься редактировать, устанавливаешь в UpdateObject имя этого UpdateSQL. После этих дел по дабл-клику на UpdateSQL выдаётся редактор, в котором ты должен для каждой из таблиц,входящих в твой запрос, указать набор полей, являющихся уникальным ключём таблицы, и набор полей, которые требуется редактировать. В общем случае возможны глюки с редактированием, если в числе изменяемых полей будут элементы ключа. Указав все поля, давишь кнопку Generate SQL и в результате у тебя генерятся запросы на редактирование, добавление и удаление, которые прописываются в том же UpdateSQL. Обычно эти запросы никакого дополнительного редактирования не требуют. После всех этих дел ты можешь нормально редактировать запрос, как обычную таблицу.

Hекоторые моменты.

Для того, чтобы всё это нормально работало, нужно, чтобы в TQuery были включены RequestLive и CashedUpdates. Соответственно, для подтверждения изменений нужно вызывать TQuery.ApplyUpdates и TQuery.CommitUpdates, либо TDatabase.ApplyUpdates, а для отмены - CancelUpdates.

Если меняешь структуру таблиц, то не забывай менять списки полей в UpdateSQL, иначе можешь получить неприятный сюрприз - будешь долго сидеть и думать, почему при редактировании/добавлении некоторые поля не прописываются :-).

Hасчёт CachedUpdates.

Сия хреновина придумана для того, чтобы обеспечить сохранение/отмену редактирования/добавления/удаления сразу нескольких записей. Принцип совершенно элементарен: если CachedUpdates включен, то все производимые изменения в датасете по команде Post фиксируются не в базе, а во временном файле на винте клиента. Для того, чтобы прописать изменения в таблице (физически), необходимо вызвать для соответствующего запроса последовательно методы ApplyUpdates и CommitUpdates, а для отмены ВСЕХ изменений (начиная от последнего выполненного CommitUpdates), вызвать CancelUpdates. Кроме того, метод ApplyUpdates у TDataBase. Этому методу нужен список датасетов, и он производит их обновление в одной транзакции.

Практическое применение, например, такое: на форме редактирования с гридом и набором кнопок Добавить, Удалить, Редактировать, ОК, Отмена, вешаешь на первые три кнопки обработчики с Insert, Delete и Edit соответственно, на ОК - такой примерно обработчик:


Suncity    (12.11.10 15:54)  

Например, следующий запрос обновляет таблицу titles, добавляя 10% к цене всех изданий для одного издателя:
UPDATE titlesSET price = price * 1.1WHERE (pub_id = '0766')
скопипаст с msdn


Demons city    (12.11.10 15:54)  

with DataSet do
begin
if State in [dsEdit,dsInsert] then
Post;
ApplyUpdates;
CommitUpdates;
end;

а на Отмену такой:

with DataSet do
begin
if State in [dsEdit,dsInsert] then
Cancel;
CancelUpdates;
end;

В результате юзер может редактировать хоть всю таблицу, но если успеет спохватиться, то может отменить все свои художества. Только желательно на выходе из формы проверить, сохранены ли изменения,и если нет, то напомнить/переспросить.


Demons city    (12.11.10 15:56)  

нормально гуглится


Angels city    (12.11.10 16:01)  

Ieti

это я читал. и это я знаю. меня интересует сам текст запроса, а не подключение компонента TupdateSQL


Demons city    (12.11.10 16:03)  

что запрос должен делать ты можешь объяснить?


Страницы: 12
© 2002 - 2025, «www.Combats.com»™
All rights reserved