powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, решить проблему!
7 сообщений из 7, страница 1 из 1
Помогите, пожалуйста, решить проблему!
    #32342728
Olga aka ovod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В программе (для работы с кадрами) есть отпуска по подразделению. При выбранном диапазоне дат в DBGrid по запросу выводятся все сотрудники, которые имели отпуск в данный период. И далее создается отчет. Вот так формируется запрос:

select o.*, (s.namef+" "+s.NamIO) as fio,s.namef,s.namei, s.nameo,
s.kategpers,s.tabno,s.tn2,s.dcont, s.Div,s.Part, s.adiv, s.apart
from "otp.db" o, "state.db" s
where (o.Tabno=s.tabno)
order by o.dupr,o.dclr, fio

Мне необходимо сделать так, чтобы в DBGrid выводились не только сотрудники, у которых был отпуск в данный период, но и те сотрудники, которые в данный период были приняты на работу. Мучаюсь третий день, поскольку я еще начинающая в delphi :(. Помогите, пожалуйста...
...
Рейтинг: 0 / 0
Помогите, пожалуйста, решить проблему!
    #32342730
Olga aka ovod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, забыла добавить. Возможно ли вышеописанную проблему реализовать, изменить как-нибудь этот запрос?
...
Рейтинг: 0 / 0
Помогите, пожалуйста, решить проблему!
    #32342750
Sonk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну Вы хоть кратко опишите БД с которой работаете ничего же не понятно :)
...
Рейтинг: 0 / 0
Помогите, пожалуйста, решить проблему!
    #32342788
Roschupkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо знать, описание полей таблиц otp, state и где находится информация по отпускам.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, решить проблему!
    #32343066
Olga aka ovod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работаю с таблицами Paradox. Проект довольно старый и я пока не в состоянии перевести все это дело на InterBase.
Дата вводится в поля Edit1 и Edit2. Информация по отпускам находится в таблице otp.db, а вся информация о сотрудниках хранится в таблице state.db. В запросе, чтобы отобрать сотрудников, у которых был отпуск в заданный период дат, я делаю объединение таблиц по табельному номеру сотрудника (Tabno).
Таблица otp.db содержит следующие поля:
Keyotp - ключевое поле, содержит просто номер по порядку.
Tabno - табельный номер сотрудника, тип поля - Long Integer
Tip - тип отпуска (ежегодный, обычный и т.д.) - тип Long Integer
Note - примечание
Nday - осталось дней от отпуска, тип - Short Integer
Dayall - всего дней, отведенных на отпуск, тип - Integer
Dayreal - сколько реально дней проведено в отпуске, тип - Integer
Dupr - дата начала отпуска, тип - Date
Dclr - дата конца отпуска, тип - Date

Таблица state.db очень огромная. В ней - около 100 полей...
Но вот те поля, которые я описала в запросе:
namef - фамилия сотрудника
namei - имя
nameo - отчество
dcont - дата приема сотрудника на работу
Div - номер дивизиона (белое оформление сотрудника)
Part - номер отдела (белое оформление сотрудника)
adiv и apart - это номера дивизиона и отдела в альтернативном штатном (черное оформление)
tn2 - табельный номер в карточке сотрудника.

На самой форме отпусков по подразделению есть флажок включения диапазона дат. Если он включен, то пользователь может ввести период дат в поля Edit (у меня они названы ED1 и ED2). И, затем, нажав кнопку обновления, получает список сотрудников, у которых был в этот период отпуск. Процедура нажатия кнопки обновления (Brep) описывается след. образом:
Qotp.Close; // это тот запрос, который я описала в первом своем сообщении
if Cdat.checked then // это флажок включения даты
begin
Qotp.sql.strings[4]:=' and (o.dupr BETWEEN '+#39+ED1.text+#39 +' AND '+#39+ED2.text+#39+' )';
end
else
begin
Qotp.sql.strings[4]:=' ';
end;
Qotp.Filter:=' ';

У меня загвоздка в том, что должны выводиться в DBGrid сотрудники не только те, у которых был отпуск в этот период, но и те, которые были приняты на работу в этот же период. А поле dcont - дата принятия на работу, находится все в той же таблице state.db. То есть мне приходится опираться только на таблицу отпусков (otp.db) и таблицу сотрудников (state.db).
Прошу прощения за такое длинное сообщение, но если кто поможет советом, буду очень благодарна!!!
...
Рейтинг: 0 / 0
Помогите, пожалуйста, решить проблему!
    #32343088
Фотография Luchkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
select o.*, (s.namef+ " " +s.NamIO) as fio,s.namef,s.namei, s.nameo, 
s.kategpers,s.tabno,s.tn2,s.dcont, s.Div,s.Part, s.adiv, s.apart 
from  "state.db"  s 
left join  "otp.db"  o on (o.Tabno=s.tabno) 
where s.DCont BETWEEN '+#39+ED1.text+#39 +' AND '+#39+ED2.text+#39+' or not o.Tabno is null
order by o.dupr,o.dclr, fio

так, что-ли?
...
Рейтинг: 0 / 0
Помогите, пожалуйста, решить проблему!
    #32343133
Olga aka ovod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий, спасибо огромное! Все работает, как надо!!!!! Я просто на седьмом небе! Теперь буду знать, как это делается. Спасибо еще раз.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, решить проблему!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]