|
Вопрос # 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 (статус: Посетитель)
Вопрос отправлен: 16 мая 2012, 16:50
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 8; последнее сообщение — 26 мая 2012, 22:20; участников в обсуждении: 3.
|
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™ (статус: Доктор наук), 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™ (статус: Доктор наук), 16 мая 2012, 20:32 [#5]:
Автор, прекрати слать мне личные сообщения!
2Админ: их ваще отрубить можно как-нибудь?
DBEditAge.DataField:= 'Age' присваивай один раз прямо в Object Inspector. И ВСЁ!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
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™ (статус: Доктор наук), 26 мая 2012, 22:20 [#8]:
Цитата (Ерёмин А.А.):
От конкретного пользователя — нет.
А от всех? Чтобы при попытке послать мне ЛС вылезало сообщение типа "этот чел отрубил нафиг эту фичу".
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|