Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2011, 12:30   #1
Виктория7777
Пользователь
 
Аватар для Виктория7777
 
Регистрация: 02.12.2010
Сообщений: 67
Смущение Access

у меня есть поле в базе данных access (дата регистрации)в формате dd.mm.yyyy мне нужно отнять из даты регистрации, сегодняшнюю дату и результате получить количество дней, как это реализовать в Delphi? заранее спасибо.
Виктория7777 вне форума Ответить с цитированием
Старый 19.04.2011, 12:40   #2
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Код:
СколькоДней := DaysBetween(НапримерСегодня, НапримерДатаОтсчёта);
Как Вы думаете, если бы у Вас был не Access, а mySQL то в Delphi нужно было бы по другому получить количество дней?
И ещё. Посмотрите функции EncodeDate и StrToDateTime.

Последний раз редактировалось OlegVE; 19.04.2011 в 12:49.
OlegVE вне форума Ответить с цитированием
Старый 19.04.2011, 14:27   #3
Виктория7777
Пользователь
 
Аватар для Виктория7777
 
Регистрация: 02.12.2010
Сообщений: 67
По умолчанию ...(

Спасибо, я посмотрела.
#procedure TForm1.DocumentCalcFields(DataSet: TDataSet);
begin
Documentkol_vo := DaysBetween(Now(), DocumentDATA_REGIS.AsDateTime);
end;#
Вы не знаете, когда все типы соблюдены, Delphi ошибку показывает что несовместимые типы TDateTime и Integer, хотя конечным ответом функции DaysBetween, должно являться целое число т.е. тип Integer.
Может снова не так всё поняла...?
Виктория7777 вне форума Ответить с цитированием
Старый 19.04.2011, 15:09   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) какого типа поле Documentkol_vo ?

2) для чего Вы повесили присвоение на событие OnCalcFields ?
просто это событие принято использовать для вычисляемых полей.

3) так не пробовали:
Код:
procedure TForm1.DocumentCalcFields(DataSet: TDataSet);
begin
  Documentkol_vo := DaysBetween(Now(), DataSet.FielByName('DATA_REGIS').AsDateTime);
end;
4) и, главное, А почему Вы не хотите прямо в запросе вычислять разницу?!
Это же самый простой, надёжный и очевидный способ!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.04.2011, 15:53   #5
Виктория7777
Пользователь
 
Аватар для Виктория7777
 
Регистрация: 02.12.2010
Сообщений: 67
По умолчанию

1) типа Integer
2) Потому что поле является вычисляемым
3) Так не работает (FielByName, нету такого)
4) Так как в домашнем задании написано именно так.
Виктория7777 вне форума Ответить с цитированием
Старый 19.04.2011, 16:22   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
3) Так не работает (FielByName, нету такого)
а!! ну пропустил буковку в слове. FieldByName, разумеется! Неужели трудно увидеть и исправить?!

Цитата:
2) Потому что поле является вычисляемым
опс. А вот с этого момента поподробнее!
Какое именно поле у Вас сделано вычисляемым?! Имя этого поля какое?
(и очень надеюсь, что Вы реально добавили в датасет вычисляемое поле)...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.04.2011, 16:28   #7
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Что это такое DocumentDATA_REGIS? Если Вы спрашиваете, то сами не решайте на какие вопросы надо отвечать, а на какие не нужно, потому, что Вы похоже не знаете какие вопросы важные.
Вам привёл пример Serge_Bliznykov
Код:
procedure TForm1.DocumentCalcFields(DataSet: TDataSet);
begin
  Documentkol_vo := DaysBetween(Now(), DataSet.FieldByName('DATA_REGIS').AsDateTime);
end;
Вы, похоже скопировали его "в лоб". Возможно DataSet надо заменить в его коде на Document, но это из области гаданий.
P.S. Я тоже не заметил FieldByName

Последний раз редактировалось OlegVE; 19.04.2011 в 16:37.
OlegVE вне форума Ответить с цитированием
Старый 19.04.2011, 16:39   #8
Виктория7777
Пользователь
 
Аватар для Виктория7777
 
Регистрация: 02.12.2010
Сообщений: 67
По умолчанию

DocumentDATA_REGIS, это поле в Access типа Дата/Время .
A Document это сама БД.
И FiledByName всё равно не работает.
Вычисляемым поле является Documentkol_vo, и я честно его добавила. Через компонент Table=>New Fields и выбрала тип Calculated.
Правильно ведь?
Виктория7777 вне форума Ответить с цитированием
Старый 19.04.2011, 16:44   #9
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

FiledByName у вас так написано или вот так FieldByName
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 19.04.2011, 16:46   #10
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Почитайте здесь
http://moiais.far.ru/articles/delphi_db_ch_V.htm
не обращайте внимания на DBGrid и ответьте: что Вы упустили? или что у Вас по другому? Вы работаете не через ADO?
P.S. Ещё раз ссылаюсь на код Serge_Bliznykov
Код:
procedure TForm1.DocumentCalcFields(DataSet: TDataSet);
begin
  Documentkol_vo.Value := DaysBetween(Now(), DocumentDATA_REGIS.AsDateTime);
end;
Вот теперь DataSet означает совсем другое, означает он то, что Вам надо указать откуда Вы берёте поле DocumentDATA_REGIS (ADOQuery, ADOTable). Надеюсь оно там-же где и ваше поле Documentkol_vo.
P.P.S. Видите что означает одно простое слово вычисляемое... и ответ
Цитата:
DocumentDATA_REGIS, это поле в Access типа Дата/Время

Последний раз редактировалось OlegVE; 19.04.2011 в 17:15.
OlegVE вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access+word и access+pdf xanderg Microsoft Office Access 2 07.11.2010 13:51
Запрос с датами и временем к Access [D7, Access] alexandr2010 БД в Delphi 3 26.07.2010 22:19
Есть БД на Access 2.0, нужно открыть в Access 2003 Spirit_33 Microsoft Office Access 1 23.07.2009 07:59
Access 97, открыть базу данных Access alexhol Microsoft Office Access 0 27.04.2009 12:10
Delphy и Access.вводя инфу во вторичный файл Access, она отражалась в первом ADOTable Lev БД в Delphi 0 11.11.2007 12:14