| 
| 
 | Вопрос # 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. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |