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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2013, 11:49   #11
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от demiancz Посмотреть сообщение
А если количество дней тоже вычисляемое поле?
Для него тоже есть зависимости и формула. Подозреваю, что следующий вопрос - а если элемент той формулы тоже вычисляемое поле
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.12.2013, 14:10   #12
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Для него тоже есть зависимости и формула. Подозреваю, что следующий вопрос - а если элемент той формулы тоже вычисляемое поле
Нет. Следующего вопроса не будет. Будет просьба. Выложите пример такого запроса если не трудно.
Я нашел что то наподобие в Интернете
Код:
select t.*, t.field1+t.field2 as SumFileds from table1 t
where t.field1+t.field2 > 5
Но что то не могу правильно написать запрос в своем случае.

Пишу себе так
Код:
 ADOQuery1.SQL.Text:='SELECT * FROM [Лист1$] WHERE (720-90-[Дни])+StrToDateTime(InitialDate)<=:MyDate';
 ADOQuery1.Parameters.ParamByName('MyDate').Value:=Today;
Здесь 720 -90 мне нужно отнять и потом отнимаю то что в колонке Дни (Эта колонка в Excel есть). StrToDateTime(InitialDate) - это Год рождения который тянется из переменной InitialDate.

В моем DBGrid вычисляемое поле "Количество дней" получается 720-90-[Дни]
А вычисляемое поле "Год рождения" получается StrToDateTime(InitialDate)
Смотреть фильмы HD Фильмы для планшетов

Последний раз редактировалось demiancz; 01.12.2013 в 14:19.
demiancz вне форума Ответить с цитированием
Старый 01.12.2013, 14:27   #13
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

уже и Год рождения вычисляемре..
eval вне форума Ответить с цитированием
Старый 01.12.2013, 14:27   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
(720-90-[Количество дней)+StrToDateTime(InitialDate)<=: MyDate'
Вот тут ни чего не понял, своими словами - на основании каких полей из таблицы (в том числе и их тип) и что нужно получить. Если словами совсем плохо, то привести пример нескольких строк в таблице и какие из них нужно выбрать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.12.2013, 14:39   #15
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Есть таблица Excel в ней много столбцов, но основные: "ФИО" и "Дни". После того как Excel вывел в DBGrid создаю вычисляемые поля: "Количество дней", "Дата для отсчета" и "Дата события". Вычисляемые поля "Количество дней", "Дата для отсчета" и "Дата события" получаю так:
Код:
procedure TForm1.ADOQuery2CalcFields(DataSet: TDataSet);
begin
ADOQuery2Количестводней.AsInteger := 720-90-ADOQuery2Дни.AsInteger; // получаем количество дней
ADOQuery2Датадляотсчета.Value := StrToDateTime(InitialDate); // дата для отсчета, которая берется из переменной InitialDate
ADOQuery2Датасобытия.Value := ADOQuery2Датадляосчета.AsDateTime + ADOQuery2Количестводней.AsInteger;
end;
Теперь мне нужно отфильтровать что бы если "Дата события" уже наступила или прошла то отображать в DBGrid. Тоесть отфильтровать колонку "Дата события"
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 01.12.2013, 14:53   #16
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Т.е. на основании заданной даты (InitialDate) получить новую, прибавив к ней некое количество дней (в формуле которого фигурирует значение из колонки) и выбрать те записи, для которых полученная дата меньше или равна текущей? Бр. Что такое 720-90?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.12.2013, 15:01   #17
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Да. Совершенно верно. 720-90 это условие, количество дней. В одном случае мне нужно будет 720-90 делать ,а в другом 360-90. Сложно объяснить, но вот именно так должно быть. 720 отнять 90 а затем отнять то количество дней ,которое есть в колонке "Дни" таблицы Excel.
Смотреть фильмы HD Фильмы для планшетов

Последний раз редактировалось demiancz; 01.12.2013 в 15:05.
demiancz вне форума Ответить с цитированием
Старый 01.12.2013, 15:07   #18
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

d1 - заданная дата
d2 - текущая дата

d1+720-90-дн<=d2 -> дн>=d1-d2+720-90

Код:
... WHERE [Дни]>=:MyValue

ADOQuery1.Parameters.ParamByName('MyValue').Value:=Trunc(StrToDateTime(InitialDate)-Date)+720-90;
360, 720 типа год или два, но чуть-чуть меньше?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 01.12.2013 в 15:11.
Аватар вне форума Ответить с цитированием
Старый 01.12.2013, 16:05   #19
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Цитата:
360, 720 типа год или два, но чуть-чуть меньше?
Да. Спасибо что помогаете. Сейчас попробую ваш пример.
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
limit по определенному полю Pamparam SQL, базы данных 3 04.07.2012 09:22
И снова суммирование по определенному условию alexsampler Microsoft Office Excel 5 09.08.2011 16:44
Узнать даты по дням и вывести сумму по определенному столбцу Droid SQL, базы данных 6 02.12.2010 16:16
Удаление строк по определенному критерию Franck Microsoft Office Excel 4 16.02.2009 11:27
добавить к опред столбцу DbGrid данные furstenberg Компоненты Delphi 4 27.02.2008 20:15