Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.012 c
1-25310
ximka
2003-12-22 13:54
2004.01.09
отслеживание события & RegExp


6-25492
Anarki
2003-11-09 00:16
2004.01.09
Как сделать так, чтобы при подключении idSMTP программа не висла?


4-25638
npAKTuk
2003-11-07 06:43
2004.01.09
Как совершить перехват Message?


4-25671
Dido
2003-11-06 22:32
2004.01.09
Как создать обработчик события OnMouseClick у компонента Animate?


6-25488
zatochka2
2003-11-05 21:55
2004.01.09
raw socket





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский