Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6462
Последний выпуск: 19.06.2015

Delphi SQL DevExpress

87K
21 ноября 2013 года
Gaus
3 / / 21.11.2013
Изменяю значения поля
dm.Tviezdi.Edit;
//DM.Tviezdiэксперт.AsString:=cxDBLookupComboBox3.text;
Dm.Tviezdi.FieldByName('Выезд').AsString := 'Да';
dm.Tviezdi.Post;
showmessage ('Аварком '+cxDBLookupComboBox3.Text+' назначен');
В сетке изменения отображаются

И в базе сохраняется
применяю фильтр для отсортировки результатов

Далее пробую отфильтровать результаты


Пытаюсь изменить значение поля Аварком на другое в сетке он отображается

Опять фильтрую и получается что в самой бд поле не поменялось
Вот листинг фильтра
dm.Tviezdi.Active := false;
dm.Tviezdi.SQL.clear;
Dm.Tviezdi.SQL.Add('set language Russian set dateformat dmy ');
// Dm.Tviezdi.SQL.Add('select *');
Dm.Tviezdi.SQL.Add('select ');
Dm.Tviezdi.SQL.Add('[dbo].[Дата последнего изменения состояния дела]([dbo].[БД].[№ Заявки]) [Дата последнего изменения состояния дела],');
Dm.Tviezdi.SQL.Add('[dbo].[Просрочка состояния дела]([dbo].[БД].[№ Заявки])[Просрочено],');
Dm.Tviezdi.SQL.Add('[dbo].[БД].[№ Заявки] idLoss,');
Dm.Tviezdi.SQL.Add('*');
Dm.Tviezdi.SQL.Add('FROM [dbo].[БД]');
Dm.Tviezdi.SQL.Add('LEFT JOIN [dbo].[Фото инфо]');
Dm.Tviezdi.SQL.Add('ON [dbo].[Фото инфо].[№ заявки] = [dbo].[БД].[№ Заявки]');
DM.Tviezdi.SQL.Add('WHERE 1=1');
DM.Tviezdi.SQL.Add('-- find');
Dm.Tviezdi.SQL.Add('AND([Дата осмотра] >= '+#39+cxDateEdit1.Text+#39')');
Dm.Tviezdi.SQL.Add('and ([Дата осмотра] <= '+#39+cxDateEdit2.Text+#39')');
Dm.Tviezdi.SQL.Add('Order By [№ Заявки] Desc');
Dm.Tviezdi.ExecSQL;
dm.Tviezdi.Active := true;
Если не применять фильтр то данные записываются в бд а если применишь, то нет и дальше больше ничего не меняется, только перезапуск помогает
87K
07 декабря 2013 года
Gaus
3 / / 21.11.2013
Проблема решилась довольно просто .... DM.tviezdi.LockType:= ltBatchOptimistic или ltOptimistic ,
далее добавил кнопку в окне, где Grid ,и на нее дописал: DM.Tviezdi.UpdateBatch(arAll); и все заработало. Здесь есть по подробней
http://www.da-soft.com/forums/freedac-osnovnoj-russkij/raznitsa-mezhdu-ado-i-freedac.html
20K
22 ноября 2013 года
ellor!
198 / / 24.05.2012
После применения фильтра в "DM.Tviezdi" хранится результат соединения двух таблиц. Откуда СУБД узнает, куда вносить изменения? Постить изменения нужно в исходную таблицу, а не в результат JOIN.
87K
22 ноября 2013 года
Gaus
3 / / 21.11.2013
Цитата: ellor!
После применения фильтра в "DM.Tviezdi" хранится результат соединения двух таблиц. Откуда СУБД узнает, куда вносить изменения? Постить изменения нужно в исходную таблицу, а не в результат JOIN.


Не совсем понял, что вы имеете ввиду.
Я изменения произвожу в отдельной форме
dm.Tviezdi.Edit;
//DM.Tviezdiэксперт.AsString:=cxDBLookupComboBox3.text;
Dm.Tviezdi.FieldByName('Выезд').AsString := 'Да';
dm.Tviezdi.Post;
showmessage ('Аварком '+cxDBLookupComboBox3.Text+' назначен');
То есть после фильтра в "DM.Tviezdi" результат соединения двух таблиц, так согласен. Ну как тогда записать данные в саму БД? Если не трудно приведите пример.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог