Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.028 c
1-1159769595
AL CAPONE
2006-10-02 10:13
2006.11.12
Excel в Делфи


15-1161715360
Ломброзо
2006-10-24 22:42
2006.11.12
Опять складские дела


15-1161867385
TIF
2006-10-26 16:56
2006.11.12
Про реестр


15-1161405325
SerJaNT
2006-10-21 08:35
2006.11.12
Не могу писать и отвечать. RO?


2-1161691199
m-kirill-2003
2006-10-24 15:59
2006.11.12
Округление real ных чисел




   Наверх