Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 142

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Никак не могу вывести на форму возраст, хотя \"проблема\", казалось бы банальная: нужно просто создать вычисляемое поле и написать на событие OnGetText выражение с YearsBetween (точности, которую предполагает использование этой функции, вполне доcтаточно), где вычесть дату рождения BirthDate из даты осмотра SurveyDate. Тут-то и начинаются все трудности (с типами данных).
Подскажите, пожалуйста, правильное решение для приведенного фрагмента кода.

procedure TForm1.ADOTablePatientsCalcFields(DataSet: TDataSet);
begin
ADOTablePatients.FieldByName('Age').AsInteger:=YearsBetween(Date, ADOTablePatients.FieldByName('BirthDate').AsDateTime);
end;

procedure TForm1.ADOTablePatientsAgeGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
begin
DBEditAge.Text:= DateToStr(ADOTablePatients.FieldByName(\'Age\').AsDateTime);
//DisplayText:=True;
end;

Примечание #1 (16 мая 2012, 16:53):
Редактор не ругается, но при выполнении в DBEditAge не выводится ничего!

rookie Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: rookie (статус: Посетитель)
Вопрос отправлен: 16 мая 2012, 16:50
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 8; последнее сообщение — 26 мая 2012, 22:20; участников в обсуждении: 3.
min@y™

min@y™ (статус: Доктор наук), 16 мая 2012, 16:58 [#1]:

Может быть, всё-таки, вот так?
procedure TForm1.ADOTablePatientsAgeGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
begin
  DBEditAge.Text:= ADOTablePatients.FieldByName('Age').AsText;
  //DisplayText:=True; <-- почему закомментарено?
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 16 мая 2012, 17:03 [#2]:

И вообще, не проще ли присвоить DBEditAge.DataField:= 'Age' и не париться?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Егор

Егор (статус: 10-ый класс), 16 мая 2012, 17:13 [#3]:

DBEditAge - это компонент TDBEdit?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Егор

Егор (статус: 10-ый класс), 16 мая 2012, 17:16 [#4]:

которая из двух процедур не работает?

что должна делать и что на самом деле делает каждая из процедур?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
min@y™

min@y™ (статус: Доктор наук), 16 мая 2012, 20:32 [#5]:

Автор, прекрати слать мне личные сообщения!
2Админ: их ваще отрубить можно как-нибудь?

DBEditAge.DataField:= 'Age' присваивай один раз прямо в Object Inspector. И ВСЁ!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 16 мая 2012, 21:47 [#6]:

Цитата (rookie):


min@y, надеюсь, "балбес" - это не на мой счет.

Цитата (rookie):



И не найдейся!


Код
procedure TForm1.ADOTablePatientsAgeGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
DBEditAge.DataField:= DateToStr(ADOTablePatients.FieldByName('Age').AsDateTime);
DisplayText:= True;
end;

все равно не работает, хотя ошибок тоже нет.


А ты внимательно посмотри на моё самое первое сообщение. И попробуй найти там AsDateTime и/или DateToStr!
Потом ВНИМАТЕЛЬНО посмотри на мои 2-е и 3-е сообщения.

Задолбал личными сообщениями! Все последующие буду удалять, не читая. Всё, что хочешь сказать - пиши здесь.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 26 мая 2012, 09:59 [#7]:

Цитата (min@y™):

2Админ: их ваще отрубить можно как-нибудь?

От конкретного пользователя — нет.
min@y™

min@y™ (статус: Доктор наук), 26 мая 2012, 22:20 [#8]:

Цитата (Ерёмин А.А.):

От конкретного пользователя — нет.

А от всех? Чтобы при попытке послать мне ЛС вылезало сообщение типа "этот чел отрубил нафиг эту фичу".
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:39
Выполнено за 0.04 сек.