Главная страница
    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.042 c
3-1158151719
DBLookupComboBox
2006-09-13 16:48
2006.11.12
и хранимая процедура


15-1161339330
ArtemESC
2006-10-20 14:15
2006.11.12
Язык, который всем нравится...


2-1162117932
Серый
2006-10-29 13:32
2006.11.12
Memo,ListBox,ComboBox


15-1161216641
Real
2006-10-19 04:10
2006.11.12
MIDI.RU - База композиций теперь только для "избранных"


15-1161950797
Stanislav
2006-10-27 16:06
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский