Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];

Вниз

Добавить поля в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.036 c
15-1161781670
Иксик
2006-10-25 17:07
2006.11.12
Кто-то когда-то искал программу для сравнения excel файлов


3-1157115320
Torin
2006-09-01 16:55
2006.11.12
Зависание в Win2K при закрытии сокета


15-1161879231
Витян
2006-10-26 20:13
2006.11.12
Подскажите алгоритм, который подошел бы для данной задачи на граф


15-1161458189
Kolan
2006-10-21 23:16
2006.11.12
Автогенератор кода в BDS подставляет лишее inherited


15-1161779874
Shopot
2006-10-25 16:37
2006.11.12
Где скачать компонент?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский