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

Вниз

Добавить поля в DataSet после выборки данных   Найти похожие ветки 

 
Shaman_ ©   (2006-09-15 16:10) [0]

Делаю выборку данных
в полученому DataSet нужно локально добавить еще несколько полей. Добавляю их через TFiedDefs.add... и TFieldDefs.CreateField... Перед добавлением полей, набор данных приходится переводить в неактивное состояние. Как после добавления полей можно снова вернуть его в активное состояние? Простое Active := true будет повторно запрашивать данные из базы


 
Reindeer Moss Eater ©   (2006-09-15 16:18) [1]

Ну а зачем открытвать преждевременно, предварительно не добавив нужные поля?


 
MsGuns ©   (2006-09-15 16:50) [2]

"Лишние" поля лучше создавать в самом запросе:

Select *, cast(1 as decimal(18,4)) as Quant,
             cast("" as char(40)) as FIO,
             .....
from table


 
Shaman_ ©   (2006-09-15 17:43) [3]

Guns ©   (15.09.06 16:50) [2]
немного не понял . Причем здесь функция CAST - преобразование типов?


 
MsGuns ©   (2006-09-15 17:50) [4]

>Shaman_ ©   (15.09.06 17:43) [3]
>немного не понял .

Тогда так: дополнительные поля создаются в датасете для отображения некоторых данных, непосредственно отсутствующих в таблицах БД. Например, расчетные. Вы пытаетесь создать и заполнить их "клиентским" способом, в результате чего при переоткрытии НД надо снова повторять сканирование и расчет всего НД. То же самое в 99% случаях можно "заставить" сделать сервер, должным образом модифицировав запрос к базе данных.

>Причем здесь функция CAST - преобразование типов?

Если не использовать это слово, то "сервер" интерпретирует тип полей, заданных константами, как ему заблагорассудится. Чтобы не было неожиданностей, надо явно указать тип данных каждого дополнительно создаваемого в запросе столбца. В T-SQL, Local SQL и некоторых других, для этих целей вполне подходит CAST


 
Shaman_ ©   (2006-09-15 18:02) [5]

MsGuns ©   (15.09.06 17:50) [4]
Cуть то понятна. Зачем же так разжевывать :) Не яснен был (и есть) общий синтаксис. Наверно стоит указать что реализую это дело на MySQL. Как не извращаюсь, СУБД не понимает такого синтаксиса


 
Shaman_ ©   (2006-09-15 18:20) [6]

MsGuns ©
Все вроде работет. Просто неверно указывал тип данных. Посмотрел сейчас допустимые типы CAST функции для MySQL и все встало на свои места
Спасибо за помощь!



Страницы: 1 вся ветка

Текущий архив: 2006.11.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.038 c
1-1159785290
Still Swamp
2006-10-02 14:34
2006.11.12
Возможно ли отпечатать через TPrinter обычную строку?


15-1161706480
Dmytro
2006-10-24 20:14
2006.11.12
Проблема с кодировкой (MSSQL 2005 и PHP5)


2-1161895101
aleko
2006-10-27 00:38
2006.11.12
сохранение файла в БД


11-1138000587
Barloggg
2006-01-23 10:16
2006.11.12
История. MMTimer!!!


2-1161783541
Vovan#1
2006-10-25 17:39
2006.11.12
Выбрать папку. Нормально.