Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Interbase Вычисляемое поле (получить из 12.12.2005: Год, месяц (январь, февраль), число. / 7 сообщений из 7, страница 1 из 1
15.03.2005, 21:27
    #32961982
Б_Андрей
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase Вычисляемое поле (получить из 12.12.2005: Год, месяц (январь, февраль), число.
C++ Builder+Fibplus+HierCube
Извините за такие вопросы, но просто никогда ещё не использовал вычисляемых полей, вот мой sql запрос в dataset`е:

SELECT
student.name,
student.id,
student.surname,
MARK.DATA_M,
MARK.TIME_M,
MARK.MARK,
extract(day from MARK.DATA_M) AS Day_m,
extract(Month from MARK.DATA_M) AS Month_m,
extract(Year from MARK.DATA_M) AS Year_m,
predmet.name_predmet
FROM
student,
MARK,
predmet
where MARK.id=student.id
and MARK.id_predmet=predmet.id_predmet

@id_type
order by student.surname,MARK.DATA_M, MARK.TIME_M

а потом:
void __fastcall TForm1::pFIBDataSet1CalcFields(TDataSet *DataSet)
{
pFIBDataSet1-
но вот что тут надо сделать, чтобы перевести номер месяца в его название и записать в таблицу не знаю, помогите пожалуйста.
}
...
Рейтинг: 0 / 0
15.03.2005, 22:44
    #32962009
Lelikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase Вычисляемое поле (получить из 12.12.2005: Год, месяц (январь, февраль), число.
Составь статический массив-таблицу (месяцы), в обработчике вычисляемому полю прямо присваивай значение из таблицы (индекс в массиве у тебя уже есть -- номер месяца)
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
15.03.2005, 23:42
    #32962037
Б_Андрей
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase Вычисляемое поле (получить из 12.12.2005: Год, месяц (январь, февраль), число.
Поле "DATA_M" имеет вид dd.mm.yyyy
а преобразовать поле "DATA_M" в три поля "Год", "месяц" (январь, февраль), "число" надо для того, чтобы использовать в HierCub`е
вот делую так:
Код:
1.
2.
3.
4.
5.
6.
7.
void __fastcall TForm1::pFIBDataSet1CalcFields(TDataSet *DataSet)
{
  unsigned short Year, Month, Day;
  DecodeDate(pFIBDataSet1->FindField("DATA_M")->AsDateTime, Year, Month, Day);
  pFIBDataSet1->FindField("Year_m")->AsInteger = Year;
  pFIBDataSet1->FindField("Month_m")->AsString=FormatDateTime("mmmm", pFIBDataSet1->FindField("DATA_M")->AsDateTime);
  pFIBDataSet1->FindField("Day_m")->AsInteger = Day;
  }

Но получаю ошибку в этой строке pFIBDataSet1->FindField("Month_m")->AsString
Код:
Project Project1.exe raised exception class EDatabaseError with message "Декабрь' is not a valid integer value for field 'MONTH_M". Process stopped. Use Step or Run to continue. 

получаю такую же ошибку даже при:
pFIBDataSet1->FindField("Month_m")->AsString="rr";
Но никак не могу понять откуда для вычисляемого поля берётся тип intrger. Помогите пожалуйста.
...
Рейтинг: 0 / 0
16.03.2005, 08:38
    #32962160
olol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase Вычисляемое поле (получить из 12.12.2005: Год, месяц (январь, февраль), число.
Б_АндрейНо никак не могу понять откуда для вычисляемого поля берётся тип intrger. Помогите пожалуйста.
Кликни дважды на табле... выбери поле и смотри его тип...
должен быть TStringField - если нет, то удали и введи его снова...

P.S. Перед удалением закрой все файлы у которых есть ссылки на это поле... а то они могут обнулиться... :)
...
Рейтинг: 0 / 0
16.03.2005, 09:32
    #32962256
Б_Андрей
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase Вычисляемое поле (получить из 12.12.2005: Год, месяц (январь, февраль), число.
У меня нет тайблов (table) у меня датасеты (DataSet) от FibPlus
...
Рейтинг: 0 / 0
17.03.2005, 05:39
    #32964739
olol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase Вычисляемое поле (получить из 12.12.2005: Год, месяц (январь, февраль), число.
Б_АндрейУ меня нет тайблов (table) у меня датасеты (DataSet) от FibPlus
А что на них дважды не кликается ?
Или ты их создаешь динамически из проги?
TField-ы есть у любого DataSet...
...
Рейтинг: 0 / 0
17.03.2005, 05:51
    #32964742
olol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase Вычисляемое поле (получить из 12.12.2005: Год, месяц (январь, февраль), число.
блин... так ведь ты же его тип сам задаешь в запросе...
авторextract(Month from MARK.DATA_M) AS Month_m...
extract тебе даст этому полю int, а потом ты туда текст пихаешь...

Ты убери extract-ы из запроса, потом кликнись на DataSet-е и добавь эти поля как вычисляемые стринги...
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Interbase Вычисляемое поле (получить из 12.12.2005: Год, месяц (январь, февраль), число. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]