Главная страница
    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
Время: 4.862 c
2-1161933177
_guest_
2006-10-27 11:12
2006.11.12
Можно ли послать сообщение компоненту не имеющему свойства Handle


15-1161262853
ПЛОВ
2006-10-19 17:00
2006.11.12
Что есть Виста


2-1161328040
Cara
2006-10-20 11:07
2006.11.12
Определить статутус программы.


15-1161962839
ProgRAMmer Dimonych
2006-10-27 19:27
2006.11.12
Помогите найти книгу


2-1161669390
Sergey_b
2006-10-24 09:56
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский