Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 11

Как переместить уволенных сотрудников в другую таблицу

23.03.2012, 16:46. Показов 4921. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Как сделать чтобы при нажатии кнопки "Уволен" на форме "Сотрудники" запись перемещалась в таблицу "Архив сотрудников"?

Access2007. Преобразовать в 2003 не удается, т.к. поля со списком в формах и таблицах необходимы для выборки.

P.s. Прочитала несколько книг по Access2007. Но там нет нужных описаний для моей базы, в основном описывается практически одно и тоже только в разных интерпретациях...

Может что-нибудь посоветуете...
Вложения
Тип файла: rar База подрядчиков.rar (1.19 Мб, 53 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.03.2012, 16:46
Ответы с готовыми решениями:

Не отображать уволенных сотрудников в определенных полях
Добрый день, помогите пожалуйста со следующей задачей: В таблице "Сотрудники" добавил поле с типом данных логический - отмечать...

Как переместить запись из одной таблицы в другую нажатием кнопки |Удалить| на форме в Access
Уважаемые форумчане! Дано: Имеем две идентичные таблицы "Главная" и "АРХИВ". Имеем форму в которой отражаются данные таблицы...

Возвращение Уволенных Сотрудников
Добрый день всемогущий Алл. при увольнении сотрудника (для закрытия доступа к лотусу) решили заносить его в группу, которая указана в...

15
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
23.03.2012, 16:55
Цитата Сообщение от GreyMouse Посмотреть сообщение
т.к. поля со списком в формах и таблицах необходимы для выборки.
В формах - да, в таблицах - нет.

Цитата Сообщение от GreyMouse Посмотреть сообщение
Как сделать чтобы при нажатии кнопки "Уволен" на форме "Сотрудники" запись перемещалась в таблицу "Архив сотрудников"?
Денормализация. Абсолютно неправильный подход. Если вы хотите оперировать с данными, то добавьте поле статус и заполняйте его, а в формы и отчёты выводите данные в зависимости от значения этого поля.
0
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 11
23.03.2012, 19:45  [ТС]
К сожалению это необходимо, т.к. с работниками у подрядчиков такое сплошь и рядом... В формы вводит данные старушка в шапочке, затем распечатывает пропуск. Ей не обязательно видеть всю таблицу по сотрудникам. Если работяга уволился а через полгода вернулся, ей видите ли лень вводить его ещё раз в базу, а она помнит что он работал и что-то там ей даже дарил... Админ сможет восстановить данные из таблицы Архив Сотрудников...

Как сделать чтобы при нажатии кнопки "Создать пропуск" открывался пропуск на сотрудника открытого в текущей форме?
Конец страницы добавляла, не помогло...
Ameli другому пользователю предложила код:
DoCmd.OpenReport "Название отчета", acViewPreview, , "[КодЗаписи] = " & Me![КодЗаписи]
У меня Access выдал ошибку и предложил ввести код:
Private Sub Report_Open(Cancel As Integer)
DoCmd.OpenReport(ReportName, [View As acView=acViewNormal], [FilterName], [WhereCondition], [WindowMode As AcWindowMode=acWindowNormal], [OpenArgs])
End Sub
Но после ввода данного кода, ошибку выдавал в верхней строке...
С кодами не сильна
0
 Аватар для Ameli
2096 / 1172 / 39
Регистрация: 05.11.2009
Сообщений: 1,605
24.03.2012, 09:14
Если не говорить об ошибках в схеме данных, а только об открытии отчета с отбором по текущему сотруднику, то: добавляем поле Код сотрудника в отчет, делаем его невидимым (ВЫвод на экран = Нет), на кнопку Создать пропуск пишем:
Visual Basic
1
2
3
Private Sub Êíîïêà9_Click()
DoCmd.OpenReport "Ñîòðóäíèêè", acViewPreview, , "[Êîä ñîòðóäíèêà] = " & Me![Êîä ñîòðóäíèêà]
End Sub
где первая и последняя строка - начало и конец процедуры обработки события, в данном случае это Нажатие кнопки 9.
Строка в середине - для открытия отчета с условием отбора по Коду сотрудника.

Вы же пытались сначала подставить код открытия с другими названиями полей, а потом вообще стандартную конструкцию оператора DoCmd.OpenReport

По первому вопросу: используйте запрос на добавление, чтобы добавить уволенного в таблицу Архив. В качестве полей запроса у вас будут поля форм, т.е. например, в поле запроса пишите: =Forms![Сотрудники]![ФИО сотрудника] - обращение к полю ФИО сотрудника формы Сотрудники. А в строке Добавление запрос на добавление - соответствующие поля таблицы Архив. Запускайте запрос по кнопке Уволен:
Visual Basic
1
DoCmd.OpenQuery "Название запроса на добавление"
Вложения
Тип файла: rar База подрядчиков.rar (1.16 Мб, 36 просмотров)
1
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 11
24.03.2012, 19:51  [ТС]
Если в запросе в Поле ввести: =Forms![Сотрудники]![ФИО сотрудника] выдаёт ошибку
Если ввести как описано здесь то выдаёт другую ошибку:

Пересмотрела таблицы, но так и не нашла поля допускающие несколько значений...
База подрядчиков.rar
0
 Аватар для andrey_ba
267 / 267 / 4
Регистрация: 01.11.2011
Сообщений: 612
24.03.2012, 22:40
Цитата Сообщение от GreyMouse Посмотреть сообщение
поля допускающие несколько значений
а поле фото???
1
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 11
25.03.2012, 00:33  [ТС]
Цитата Сообщение от andrey_ba Посмотреть сообщение
а поле фото???
Какое фото? Я этого поля не смогла найти... на которое выдаёт ошибку... вроде всё перепроверила...
0
 Аватар для andrey_ba
267 / 267 / 4
Регистрация: 01.11.2011
Сообщений: 612
25.03.2012, 01:10
у вас в таблице сотрудники есть поле фото, это и есть поле допускающее множественные значения
1
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 11
25.03.2012, 02:12  [ТС]
Упс... об этом я не подумала. А можно ли как-то его ограничить? Ведь к каждому сотруднику добавляется только 1 фото...
0
 Аватар для andrey_ba
267 / 267 / 4
Регистрация: 01.11.2011
Сообщений: 612
25.03.2012, 02:44
по поводу фото почитайте здесь https://www.cyberforum.ru/post187487.html
1
 Аватар для Ameli
2096 / 1172 / 39
Регистрация: 05.11.2009
Сообщений: 1,605
25.03.2012, 11:40
Таблица Сотрудники в запросе на добавление не нужна, зачем вы ее туда добавили? Вы обращаетесь к полям загруженной формы и эти значения добавляете в таблицу Архив.
Для построения выражений, т.е. например, вычисляемых полей запроса используйте построитель выражений, с помощью него можно, например, выбрать поля формы Сотрудники из списка (см. скрин, аксесс 2010, но принцип для 2007 тот же. На скрине я еще не убрала таблицу Сотрудники).
В приложении смотрите запрос, в него уже добавлены несколько полей, равные полям формы, и в строке Добавление выбраны соответствующие поля таблицы Архив сотрудников. Продолжите по аналогии
Миниатюры
Как переместить уволенных сотрудников в другую таблицу  
Вложения
Тип файла: rar База подрядчиков.rar (1.16 Мб, 33 просмотров)
1
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 11
27.03.2012, 15:51  [ТС]
Получается, что в базе если формировать добавление сотрудников в архив, то необходимо держать в базе только ссылки на фото, а тогда не получается сформировать отчет с фотографией... В принципе можно сделать выгрузку данных в шаблон Word и отдельно вставлять фотографии. Или есть другой путь?
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
27.03.2012, 20:50
GreyMouse, если у вас еще не прошло желание перебрасывать в архив поле "Фото" (вложение) , а заодно и все остальные поля, то это можно сделать с помощью кода, см. ниже, который необходимо поместить в процедуру обработки события "Нажатие кнопки" (Click) кнопки "Кнопка10", имеющей надпись "Уволен". Строку, присутствующую на данный момент в процедуре, убрать. Запрос "Запрос на Увольнение" будет не нужен.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Dim DB As DAO.Database, RSA As DAO.Recordset
Dim rsChild As DAO.Recordset2, rsaChild As DAO.Recordset2
  Set DB = CurrentDb
  Set RSA = DB.OpenRecordset("Архив сотрудников", dbOpenDynaset)
  With Me.Recordset
' Перемещение поля Фото
    Set rsChild = .Fields("Фото").Value
    RSA.AddNew
    Set rsaChild = RSA.Fields("Фото").Value
    Do Until rsChild.EOF
      rsaChild.AddNew
      rsaChild.Fields("FileData") = rsChild.Fields("FileData")
      rsaChild.Fields("FileName") = rsChild.Fields("FileName")
      'rsaChild.Fields("FileType") = rsChild.Fields("FileType")
      rsaChild.Update
      rsChild.MoveNext
    Loop
    rsaChild.Close: rsChild.Close
    Set rsaChild = Nothing: Set rsChild = Nothing
' Перемещение всех остальных полей
    RSA("Код сотрудника") = ![Код сотрудника]
    RSA("Фамилия") = ![Фамилия]
    RSA("Имя") = ![Имя]
    RSA("Отчество") = ![Отчество]
    RSA("Дата рождения") = ![Дата рождения]
    RSA("Организация") = ![Организация]
    
' Дальше нужные поля пропишите сами
    
    RSA.Update
  End With
  RSA.Close
  Set RSA = Nothing: Set DB = Nothing
1
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 11
28.03.2012, 21:07  [ТС]
Цитата Сообщение от minob Посмотреть сообщение
GreyMouse, если у вас еще не прошло желание перебрасывать в архив поле "Фото" (вложение) , а заодно и все остальные поля, то это можно сделать с помощью кода, см. ниже, который необходимо поместить в процедуру обработки события "Нажатие кнопки" (Click) кнопки "Кнопка10", имеющей надпись "Уволен". Строку, присутствующую на данный момент в процедуре, убрать. Запрос "Запрос на Увольнение" будет не нужен.
Тогда он выдаёт диалоговое окно, в которое нужно вносить все данные о сотруднике... И выдаёт ошибку на создание пропуска:

Проще тогда переместить все данные без поля фото (по запросу). А фотографии хранить отдельно, или в крайнем случае заново сфотографировать, но все данные уже будут и не нужно будет по отдельности их вносить...
0
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 11
28.03.2012, 21:33  [ТС]
Кто может подсказать: как сделать чтобы фотографии в отчете не сжимались? Чтобы выглядели как в форме "Сотрудники". Получается не очень красиво... Файлы фото в формате jpg. Access вроде не должен их сжимать...

Добавлено через 22 минуты
Прошу прощения перед minob. Ошибку нашла и устранила. Всё отлично работает...

Вопрос по фотографии в отчёте остаётся открытым...
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
28.03.2012, 21:44
Цитата Сообщение от GreyMouse Посмотреть сообщение
Тогда он выдаёт диалоговое окно, в которое нужно вносить все данные о сотруднике... И выдаёт ошибку на создание пропуска
О чем вы говорите? Работает нормально, см. вложение:
1) открываете форму Сотрудники
2) выбираете сотрудника
3) нажимаете кнопку Уволен
4) получаете сообщении об успешном копировании, нажимаете Ok.
Пункты со 2-го по 4-ый можете повторить для нескольких сотрудников.
Убедиться, что информация скопирована, можно просмотрев таблицу "Архив сотрудников", или через копию формы Сотрудники, спецально сделанную для просмотра архива, которая называется "Копия Сотрудники".

GreyMouse, извиняюсь, не увидел ваше сообщение о том, что код у вас уже заработал.
Вложения
Тип файла: rar Базаподрядчиков.rar (1.17 Мб, 57 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2012, 21:44
Помогаю со студенческими работами здесь

Как можно переместить всю строку в другую таблицу при помощи запроса
Как можно переместить всю строку в другую таблицу при помощи запроса зная значение одного поля? ADOQuery2->Close(); ...

ЗУП. Запрос на получение лицевых счетов уволенных сотрудников
Всем привет Работаю в 1С:ЗУП. Необходимо написать запрос, который бы выводил лицевые счета по уволенным сотрудникам. Уволенных...

Переместить часть данных в другую таблицу
Доброго времени суток! Помогите с решением. Есть таблиц а в EXCEL с перечнем элементов. При проверке комплектности выявлены недостающие...

Как переместить файлы в другую папку
здравствуйте подскажите,пжлс как переместить несколько файлы из каталога в каталог я смог только 1 файл переместить с командой mv а...

Как переместить данные из коллекции в другую коллекцию
Иметься три коллекции Dictionary<string,string> str = new Dictionary<string,string>(); List<string> lst = new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru