Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.09;
Скачать: CL | DM;

Вниз

Странное выполнение 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
7-25630
INTAARI
2003-10-29 11:39
2004.01.09
ReadFile не удается прочитать весь массив данных


14-25550
deema
2003-12-18 13:41
2004.01.09
МИСТИКА!!!???


1-25278
Masa
2003-12-23 14:56
2004.01.09
Exception


3-25226
Петров Денис
2003-12-11 13:58
2004.01.09
Cannot prepare a CREATE DATABASE/SCHEMA statement


14-25560
Kein
2003-12-19 20:45
2004.01.09
Access