Форум: "Базы";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];
ВнизСтранное выполнение OnCalcFields в TSQLQuery Найти похожие ветки
← →
3LoBit (2003-12-08 14:30) [0]Перешел на Delphi7 и чем дальше - тем больше изумляюсь. При работе с dbExpress кладу на форму связку TSQLQuery-TDataSetProvider-TClientDataSet. В TSQLQuery в OnCalcFields рассчитываю вычисляемое поле, которое передается в TClientDataSet. Все нормально. За исключением первой записи в которой в этом поле что-то не то. Путем долгого копания нарыл, что первая запись почему-то рассчитывается ДО открытия TSQLQuery сами понимаете по каким значениям остальных полей.
Я - в анале, как забытая клизма. Граждане!!! Помогите, кто сколько знает!
← →
Silver Alex (2003-12-08 14:45) [1]в Delphi7 вместо TSQLQuery-TDataSetProvider-TClientDataSet есть TSimpleDataSet, попробуй его
← →
3LoBit (2003-12-08 14:57) [2]По некоторым причинам(не буду здесь приводить) мне нужна именно эта связка.
← →
Silver Alex (2003-12-08 15:09) [3]Ну в общем вся связка и есть
TSQLQuery = class(TCustomSQLDataSet)
TClientDataSet = class(TCustomClientDataSet)
TSimpleDataSet = class(TCustomClientDataSet)
и свойство DataSet
TInternalSQLDataSet = class(TCustomSQLDataSet)
просто слеплено в кучу.
но если этот вариант не подходит можно еще попробовать добавить вычисляемое поле в ClientDataSet
← →
Sandman25 (2003-12-08 15:45) [4]3LoBit (08.12.03 14:30)
Если это баг TSQLQuery, найдите его и исправьте.
← →
3LoBit (2003-12-08 15:55) [5]1. Я не нашел у встроенного TSQLQuery редактор полей. Поля же туда надо добавить все(т.к. есть вычисляемое). Можно, конечно, это сделать динамически, но это в данном конкретном случае не выход.
2. Вычисляемое поле нужно включить именно в TSQLQuery, т.к. оно тяжелое(в смысле вычислений), а в TSQLQuery расчет будет проводиться 1раз/запись.
← →
3LoBit (2003-12-08 15:59) [6]2 Sandman25. Вот я и хочу выяснить не делал ли это уже кто-нибудь. Или может я какие-нибудь настройки не учитываю.
← →
Sandman25 (2003-12-08 16:23) [7]1. Я не нашел у встроенного TSQLQuery редактор полей. Поля же туда надо добавить все(т.к. есть вычисляемое).
Двойной щелчок на компоненте. Кстати, TSQLQuery введен для облегчения переноса приложений с BDE. Лучше использовать TSQLDataset.
Можно, конечно, это сделать динамически, но это в данном конкретном случае не выход
Почему нет? Все, что можно сделать в design-time, можно сделать и в run-time.
← →
3LoBit (2003-12-08 16:56) [8]2 Sandman25. Двойной щелчок на компоненте TSimpleDataSet открывает редактор полей TSimpleDataSet, а нужен редактор полей встроенного DataSet(вычисляемое поле там). Что касается run-time, то тогда нужно расписаться, что о встроенном редакторе забыли и все делаем ручками. А такая ситуация у меня сплошь и рядом, и запросы по числу полей не маленькие. А как насчет сопровождения другими людьми?
← →
Silver Alex (2003-12-08 17:04) [9]
> Двойной щелчок на компоненте TSimpleDataSet открывает редактор
> полей TSimpleDataSet, а нужен редактор полей встроенного
> DataSet(вычисляемое поле там).
не могу понять в чем разница?Что именно надо, набор данных и вычисляемое поле?Ну так вот оно все.Или автор вопроса чего-то не договаривает
← →
Sandman25 (2003-12-08 17:07) [10][8] 3LoBit (08.12.03 16:56)
Я от использования TSimpleDataset отказался. Эта зараза не понимала секцию where (!) при работе с СУБД Informix.
В help по SimpleDataset даже написано, что он многое скрывает и что если вам нужна дополнительная гибкость (обработка событий провайдера, например), то нужно переходить на обычную связку из 3 компонент.
← →
3LoBit (2003-12-09 12:03) [11]2 Silver Alex
Я все договариваю. Цитата на себя же(см. выше)
<<2. Вычисляемое поле нужно включить именно в TSQLQuery, т.к. оно тяжелое(в смысле вычислений), а в TSQLQuery расчет будет проводиться 1раз/запись.>>
Добавлю еще: по такому полю в TClientDataSet мне нужно проводить сортировку (свойство IndexFieldNames) и фильтрацию.
Вообще-то, если интересно, стандартная технология в Delphi5: такое расчетное поле в TClientDataSet возникает уже как поле НЕ расчетное и его можно редактировать, сняв ReadOnly. Так в Delphi7 я и этого не могу. Я уже закидывал в этот форум вопрос(не знаю, как здесь ссылку вкрячить, поищите по ключу 3LoBit). Ответа, к сожалению, не получил.
← →
3LoBit (2003-12-10 12:22) [12]Что интересно, с TQuery рассчитывается нормально.
← →
Sandman25 (2003-12-10 12:34) [13][12] 3LoBit (10.12.03 12:22)
Я Вам уже писал, что делать.
У меня dbExpress некорректно работал с TBcdField. Пока исходники не исправил, не заработало.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c