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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2012, 23:48   #21
KoliyR
Пользователь
 
Регистрация: 01.09.2009
Сообщений: 55
По умолчанию

Вот что с датой получается
Я бы так реализовал - но способов на самом деле много,
По запросу иначе стоится

можно в аксесе прописать, можно в Делфи ...

Оптимально думаю так ...Новая папка.rar
Обучение, задания по Делфи http://KoliyR.tk
KoliyR вне форума Ответить с цитированием
Старый 29.01.2012, 11:01   #22
Seva2011
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 31
По умолчанию

Вы меня не поняли.
у меня в таблице 4 фамилии у каждого дата приема разная.мне нужно вычислить количество лет от настоящей даты и вывести на экран список кто работает больше заданного количества лет.
мне нужно чтоб в поле edit препод ввел к примеру 9 и в таблицу вывелись данные тех кто работает больше 9 лет. остальных не надо выводить.
если в таблице сделать дополнительное поле со стажем то там же будет стаж который я вычислил во время ввода данных. Препод скажет что к примеру у "Сидорова " стаж в таблице 11 лет а если я проверю через год то у него все равно стаж будет 11 лет потому что в бд так вычислено.

мне не нужно их сортировать по дате, мне нужно вывести на экран только тех у кого стаж больше числа введенного в edit.

Последний раз редактировалось Seva2011; 29.01.2012 в 11:03.
Seva2011 вне форума Ответить с цитированием
Старый 29.01.2012, 11:58   #23
alexiz
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Seva2011 Посмотреть сообщение
..мне нужно вывести на экран только тех у кого стаж больше числа введенного в edit.
Ну Вы хоть попробовали? см.мой пред.пост
Ваша благодарность может быть материальной:
WM R103871054215, WM Z710411027344, ЯндД: 410011167596676
alexiz вне форума Ответить с цитированием
Старый 29.01.2012, 12:03   #24
KoliyR
Пользователь
 
Регистрация: 01.09.2009
Сообщений: 55
По умолчанию

Seva2011 - я тебе расширил таблицу
теперь просто нужно добавить фильтр по полю лет

Давай ко мне в аську или скайп
Обучение, задания по Делфи http://KoliyR.tk
KoliyR вне форума Ответить с цитированием
Старый 29.01.2012, 13:19   #25
KoliyR
Пользователь
 
Регистрация: 01.09.2009
Сообщений: 55
По умолчанию

Да, - возникли некие сложности - правдо задачу я немного посложнее поставил
Учел не только год, но и месяц, день ...

Если тебе всеже хочется организовать фильтрацию через запрос ...
нужно отдельно посмотреть
Новая папка.rar
Обучение, задания по Делфи http://KoliyR.tk
KoliyR вне форума Ответить с цитированием
Старый 29.01.2012, 13:38   #26
KoliyR
Пользователь
 
Регистрация: 01.09.2009
Сообщений: 55
По умолчанию

SELECT Отдел_кадров.ФИО, Отдел_кадров.Должность, Отдел_кадров.Дата_приема
FROM Отдел_кадров
WHERE (((Year(Now())-Year([Отдел_кадров]![Дата_приема]))>20));


но это неправильно т.к. не учитывается разница в месяцах
она может быть положительной, а может отрицательной, - тогда на 1 год наврали
Обучение, задания по Делфи http://KoliyR.tk
KoliyR вне форума Ответить с цитированием
Старый 30.01.2012, 17:58   #27
Seva2011
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 31
По умолчанию

Цитата:
Сообщение от KoliyR Посмотреть сообщение
SELECT Отдел_кадров.ФИО, Отдел_кадров.Должность, Отдел_кадров.Дата_приема
FROM Отдел_кадров
WHERE (((Year(Now())-Year([Отдел_кадров]![Дата_приема]))>20));


но это неправильно т.к. не учитывается разница в месяцах
она может быть положительной, а может отрицательной, - тогда на 1 год наврали
Согласен.
За программку и за помощь огромное спасибо!!!
Seva2011 вне форума Ответить с цитированием
Старый 30.01.2012, 18:14   #28
Seva2011
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 31
По умолчанию

Цитата:
Сообщение от alexiz Посмотреть сообщение
продолжение - вот такой запрос прекрасно отделяет старичков от новичков. Проверил сейчас.

Код:
SELECT [Дата_приема]
FROM Отдел_кадров
WHERE DateAdd("yyyy",25,[Дата_приема])<"2012-01-28";
и в Дельфи:

Код:
ADOQuery2.Close;
ADOQuery2.sql.Clear;  
ADOQuery2.sql.Text:='SELECT [Дата_приема] FROM [Отдел_кадров] WHERE DateAdd("yyyy",25,[Дата_приема])<:ADATE';
ADOQuery2.Parameters.Parambyname('ADATE').Value:=Date; //сегодняшняя дата
ADOQuery2.Open;
Извиняюсь пропустил ваш пост.
код вставил ошибок не выдает только никак не пойму в куда здесь дописать значение введенное в edit?
Seva2011 вне форума Ответить с цитированием
Старый 30.01.2012, 18:42   #29
KoliyR
Пользователь
 
Регистрация: 01.09.2009
Сообщений: 55
По умолчанию

DATEADD (datepart ,number,date )

Аргументы

datepart

Параметр, указывающий, какую часть даты вернуть как новое значение. Дополнительные сведения см. в "Замечаниях" далее в этом разделе.

number

Значение, используемое для увеличения datepart. Выражение численного типа (точного или приближенного) или типов, которые неявно преобразуются в тип float. Если указать нецелочисленное значение, его дробная часть будет удалена. Например, если указать day для datepart и 1.75 для number, значение date увеличится на 1.

date

Выражение, возвращающее значение, которое можно неявно преобразовать в datetime, или строка с символами Юникод в формате даты. Дополнительные сведения об указании дат см. в части datetime раздела Типы данных.

Если указаны только две последние цифры года, то значения, меньшие или равные двум последним цифрам максимально допустимого значения года, относятся к тому же веку, что и максимально допустимое значение года. Значения, большие чем две последние цифры максимально допустимого значения года, относятся к предыдущему веку. Например, если максимально допустимое значение года — 2049 (значение по умолчанию), то "49" воспринимается как 2049 год, а "50" — как 1950. Во избежание неоднозначности указывайте год в формате из четырех цифр.



соответственно если написать
ADOQuery2.Close;
ADOQuery2.sql.Clear;
ADOQuery2.sql.Text:='SELECT [Дата_приема] FROM [Отдел_кадров] WHERE DateAdd("yyyy",:edit,[Дата_приема])<:ADATE';
ADOQuery2.Parameters.Parambyname('A DATE').Value:=Date; //сегодняшняя дата
ADOQuery2.Parameters.Parambyname('E dit').AsInteger:=- strtoint(Edit1.text);
ADOQuery2.Open;
Обучение, задания по Делфи http://KoliyR.tk

Последний раз редактировалось KoliyR; 30.01.2012 в 18:54.
KoliyR вне форума Ответить с цитированием
Старый 30.01.2012, 20:23   #30
Seva2011
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 31
По умолчанию

ругается на asInteger в строке

Код:
ADOQuery2.Parameters.Parambyname('Edit').AsInteger:=strtoint(Edit1.text);
Seva2011 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access отдел кадров! julia89spb Помощь студентам 18 30.03.2019 01:07
отдел кадров gergert_andrei Фриланс 6 29.11.2011 16:23
лаба отдел кадров gergert_andrei C++ Builder 1 29.11.2011 09:03
Программа Отдел кадров (с оплатой) denis! Фриланс 5 16.02.2011 21:02
отдел кадров на delphi denis! Помощь студентам 1 15.02.2011 00:42