powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите написать программу для отдела кадров.
18 сообщений из 18, страница 1 из 1
Помогите написать программу для отдела кадров.
    #38601780
pafosjoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот такой вопрос. Работаю в FoxPro 9. пока только учусь. Задание зделать программу которая будет выявлять изминения в таблице отдела кадров и выводить их в отчет. Это я сделал. Осталось сделать так что бы эти люди с отчета убирались автоматически после завершения редактирования их данных. А тех кого не отредактировали, оставались и высвечивались при следующем запуске программы. Как то так...есть таблица кадров,и есть копия этой таблицы. При их сравнении весвечивает изменения.
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38601830
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pafosjoker,

Особенно порадовало " люди с отчета убирались автоматически " и "тех кого не отредактировали".

А вообще ничего не понятно.
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38601907
pafosjoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С отчета тех по которым были изменения. Что бы она били в этом списке до тех пор пока им не дадут статус проверено.IgorNG,
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38602295
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pafosjoker,

Если есть статус, то зачем сравнивать 2 таблицы?
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38603186
pafosjoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alextashk, 2 таблици. Копия и основная. мы их сравниваем для получения тех изменений которые были внесены в основную.
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38603195
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pafosjoker,

Это у вас такой своеобразный многопользовательский режим работы?
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38603229
pafosjoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,

я только учусь. Так как весь отдел на ABAP сидит. Мне сказали FoxPro освоить. Дали задание...алгоритм сложил. Начальный запрос по пунктам сделал. остался последний...вот алгоритм
1. сравниваем копию и основную таблицу
2. Находим отличия
3. Все найденные изменения выводим на экран
4. Параллельно Создать отчет по изменениям для возможности дальнейшей обработки
5. Создаем копию таблицы отдела кадров с интересующими данными для следующего сеанса..(причем при проверке после закрытия люди которые высветились должны и потом высветися до тех пор пока по ним не примут меры, после чего их надо скрыть) вот в этом я запутался имея начальные знания
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38603557
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pafosjoker,

Надеюсь, это не 1-апрельская шутка?

Вот у вас есть 2 таблицы - основная и копия.
Вы создаёте курсор содержащий различные или идентичные записи.

И что дальше?

С какой частотой у вас создаётся копия.
Если слишком часто - то у Вас отличия будут малы или их вообще не будет
если слишком редко - то у Вас отличий будет слишком много или всё будет отличаться.

И что, дальше?

Поэтому лучше Вам вернуться к моему предложению - полю DT которое меняется при изменении записи.
и от него плясать.
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38603831
pafosjoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alextashk, где вы тут шутку нашли? я только учусь...она должна обновлятся при окончании работы программы. и обновлять только тех, по кому уже приняли меры.
могу запрос скинуть...
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38604851
pafosjokerвот алгоритм
1. сравниваем копию и основную таблицу
2. Находим отличия

Делается одним запросом:
Код: sql
1.
2.
3.
4.
5.
6.
select ... from основная left join копия on основная.tab_nr = копия.tab_nr
where поле основной != поле копии and ... (пока все поля не переберем)
union all
select ... from копия 
where копия.tab_nr not in (select основная.tab_nr from основная inner join копия on основная.tab_nr = копия.tab_nr)
into cursor текущая_копия


Курсор - это таблица в памяти. При выходе из FoxPro данные из курсора пропадают.

pafosjoker3. Все найденные изменения выводим на экран

Здесь уже не так все однозначно... Можно форму сделать с гридом... А можно и по-простому, browse использовать...

pafosjoker4. Параллельно Создать отчет по изменениям для возможности дальнейшей обработки

Можно в генераторе отчетов шаблон для репорта сделать, если я правильно понял. А можно и с Экселем поиграться... если время есть...

pafosjoker 5. Создаем копию таблицы отдела кадров с интересующими данными для следующего сеанса..(причем при проверке после закрытия люди которые высветились должны и потом высветися до тех пор пока по ним не примут меры, после чего их надо скрыть) вот в этом я запутался имея начальные знания

Сохраняем в таблицу (файл dbf)... например так:
Код: sql
1.
2.
3.
select ... from текущая_копия
into dbf копия
where not deleted()



pafosjokerОсталось сделать так что бы эти люди с отчета убирались автоматически после завершения редактирования их данных.

Остается вопрос: как Вы узнаете, что по людям "приняли меры"? Для этого Вам и советовали завести в записи какой-то признак...
Чтобы по этому признаку узнавать, что нужно отражать в отчете, а что - нет...
Ну или повторите все пункты с 1 по 4... в духе клиент-серверной технологии (запрос данных - изменение - сохранение - перезапрос данных)...

А так, по сути проблемы. Странный какой-то начальник. Зачем данные SAP куда-то гонять? Не проще ли все сразу в SAP сделать? Тем более, насколько я понял, время и абаперы есть, а FoxPro-шников - нет...
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38605084
pafosjoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Станислав С...кий, Спасибо. Абаперы есть, а данные в FoxPro пишу я один. Сказали учись работать на FoxPro...
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38605295
SoftwareBoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видимо, "учись работать на FoxPro" означает "займись чем хочешь, только не мешай абаперам" :)
Станислав С...кийpafosjokerвот алгоритм
1. сравниваем копию и основную таблицу
2. Находим отличия

Делается одним запросом:
Код: sql
1.
2.
3.
4.
5.
6.
select ... from основная left join копия on основная.tab_nr = копия.tab_nr
where поле основной != поле копии and ... (пока все поля не переберем)
union all
select ... from копия 
where копия.tab_nr not in (select основная.tab_nr from основная inner join копия on основная.tab_nr = копия.tab_nr)
into cursor текущая_копия


Я думаю, в первом WHERE между сравнениями полей должны быть не AND, а OR. Маловероятно, что за один раз для человека изменятся значения всех полей.
И ещё важно определиться, по какому условию связывать записи основной таблицы и копии. Станислав написал tab_nr, что как бы подразумевает табельный номер. Будут некоторые проблемы, если табельный номер у человека тоже может измениться. Лучше использовать внутренний код, неизменный для данного человека.
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38606125
guest_140405
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SoftwareBoy, Добавь в базу поле Checksum и используй функцию SYS(2017,"Checksum") - Record Checksum Value
Сначала пройдись по всей базе командой

Replace all Checksum with SYS(2017,"Checksum")

Если что-то кто-то изменил, то это элементарно вылезет через фильтр

Set filter to !Checksum=SYS(2017,"Checksum")

Для акцепта изменений надо просто дать команду для конкретной записи

Replace Checksum with SYS(2017,"Checksum")
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38606129
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pafosjokerСказали учись работать на FoxPro...
Странное у тебя понимание слова "учись". Обычно сначала книжку какую-нибудь почитают, хотя бы основы изучат, а ты сразу в форум, типа "поработайте за меня".
Кто сказал учиться в курсе как ты учишься?
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38606910
pafosjoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SoftwareBoy,

IF! EOF()

PRIVATE m.sel_old, m.kdk_cur

m.sel_old = ALIAS()

UPDATE (m.sel_old) SET Cfldnik = '1' where 1=1

m.kdk_cur = sys(2015)

=usql_exec([select n_kdk, kk42, ceh, kzbr, kslp, '0' as metka from _kdk937 ], (m.kdk_cur))

SELECT(m.kdk_cur)

index on allt(n_kdk) + allt(kk42) + allt(STR(ceh)) + allt(kzbr) + allt(kslp) tag sort

SELECT(m.sel_old)

set relation to allt(n_kdk) + allt(cfldkk42) + allt(STR(cfldceh)) + allt(cfldkzbr) + allt(cfldkslp) into &kdk_cur

allt(cfldkzbr) + allt(cfldkslp) â (&kdk_cur)

REPLACE all ;

Cfldnik with &kdk_cur..metka

set relation off into &kdk_cur

allt(cfldkzbr) + allt(cfldkslp) â (&kdk_cur)

SELECT(m.sel_old)

delete from (m.sel_old) where allt(Cfldnik) == '0'

SELECT(m.sel_old)

GO top

ENDIF
написать я написал...оно вывело отчет с человеком у которого в данных были изменения, после чего мне нужно как то сделать так что б его программа убрала как только ему дадут значение обработан. Что и куда вставить?
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38606934
pafosjoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,
я в курсе как учится. Те сказать как есть? пришел на работу. В FoxPro не писал никогда. Тоесть чисто логинчо в душе не епу. Есть 2 месяца испытательного срока, и сразу дали задание, которое я должен сдать до 16 апреля. Рассказали че и куда пару ходов,сказали гугль в помощь и учись..как то так...
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38607020
SoftwareBoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pafosjokerSoftwareBoy,
написать я написал...оно вывело отчет с человеком у которого в данных были изменения, после чего мне нужно как то сделать так что б его программа убрала как только ему дадут значение обработан. Что и куда вставить?
Дадут значение обработан - где (в какой таблице)?
Программа убрала - откуда (из какой таблицы)?
Код: sql
1.
set relation to allt(n_kdk) + allt(cfldkk42) + allt(STR(cfldceh)) + allt(cfldkzbr) + allt(cfldkslp) into &kdk_cur


Никогда не связывай таблицы такими условиями! Заведи в таблице уникальный ключ.
Код: sql
1.
allt(cfldkzbr) + allt(cfldkslp) â (&kdk_cur)


Это я вообще не понял что такое.
...
Рейтинг: 0 / 0
Помогите написать программу для отдела кадров.
    #38607161
pafosjoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SoftwareBoy,

2 таблицы кдк и копия кдк для сравнения. кдк основная а кдк937 копия.
allt(cfldkzbr) + allt(cfldkslp) â (&kdk_cur) это вообще помоему коментарий был... как он суда попал хз...так это ИТ предприятия и FoxPro там такие имена полей типа...
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите написать программу для отдела кадров.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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