Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
3 / 3 / 0
Регистрация: 20.11.2016
Сообщений: 69
1

Заблокировать все кроме одной строки в форме - в зависимости от данных одного поля строки

04.01.2020, 13:07. Просмотров 470. Ответов 15

Доброго времени суток,

Не могу решить одну (как мне казалось) простую задачу, а именно:

- есть форма с 17 строками,
- каждая строка соответствует одному сотруднику,
- у каждой строки есть свое уникальное значение,

- 17 сотрудников должны мочь обрабатывать каждый только свою строку в многопользовательском режиме,
- идея была - при открытии формы - считывать имя пользователя (это работает), сравнивать имя пользователя со данными полей 17 пользователей и если они совпадают, то разрешить изменения в строке, если нет - то нет.

Если есть другие , более простые способы решения, прошу поделиться идеями.

Заранее благодарен
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.01.2020, 13:07
Ответы с готовыми решениями:

Заблокировать все url кроме одного
Можно ли через cmd заблокировать все url кроме одного? (Начиная от Windows Xp до Windows 8.1 без...

Как заблокировать все IP адреса кроме одного
У меня Windows 7 x64 максимальная Хочу запретить выход в Интернет по IP адресам, хочу...

Изменить цвет строки в табличной форме в зависимости от значения 1 поля
Изменить цвет строки в табличной форме в зависимости от значения 1 поля. ?

Вывод одной строки одного столбца из БД в label на форме
Пытаюсь разобраться, как можно сделать сделать вывод записей из MS SQL Server'a в отдельные...

15
Эксперт MS Access
6387 / 3995 / 236
Регистрация: 12.08.2011
Сообщений: 11,150
04.01.2020, 14:55 2
обращение к полю user считаю оптимальным решением в данном случае, раз речь идёт о записи целиком.
1
Эксперт MS Access
2818 / 1361 / 214
Регистрация: 13.05.2011
Сообщений: 4,177
04.01.2020, 16:41 3
Дмитрий1905, Если одному работнику не нужны другие работники, то показывать каждому только его запись.
1
3 / 3 / 0
Регистрация: 20.11.2016
Сообщений: 69
04.01.2020, 17:31  [ТС] 4
Один работник должен видеть записи других работников.
Я не сказал - речь идет о планировщике отпусков и дней дежурства.
Нужно чтобы каждый мог только в своей строке "планировать" но при этом учитывать планы коллег.

Посмотрите пожалуйста скрин - выглядит громоздко, но главное - можно совместно планировать выбирая заранееопределенные опции ("отпуск", "обучение", "часы переработки" и так далее).
0
Миниатюры
Заблокировать все кроме одной строки в форме - в зависимости от данных одного поля строки  
3 / 3 / 0
Регистрация: 20.11.2016
Сообщений: 69
04.01.2020, 17:36  [ТС] 5
На каждого сотрудника 4 строки:

- данные из Системы (чтобы сотрудник видел, что "подписано"),
- Отпуск (выходные не в счет),
- Дежурство (каждый день возможно),
- Дежурство по субботам (только в субботу возможно).

Поле с галочкой - это если сотрудник запланировал отпуск и хочет отправить запрос руководителю (мне) на подпись. - здесь думаю ПДФ отчет сделать. Это легко.


ВСЕ ЭТО - ОДНА СТРОКА В ТАБЛИЦЕ (одна строка - на одного сотрудника). Я просто много столбцов сделал - и налепил их в форме один под другим.
0
Эксперт MS Access
2818 / 1361 / 214
Регистрация: 13.05.2011
Сообщений: 4,177
04.01.2020, 19:23 6
Дмитрий1905, А пример базы можете выложить, чтобы точнее понять как всё устроено и точнее порекомендавать действие.

Не по теме:

Ведь ответа: "Сделать можно" - это же мало.

0
3 / 3 / 0
Регистрация: 20.11.2016
Сообщений: 69
11.01.2020, 23:35  [ТС] 7
Доброго времени суток,

я не смог реализовать задумку - заблокировать все поля в строке, в зависимости от данных одного конкретного поля.
сделал по-другому: к каждому полю в строке (а это 124 поля) прописал маленькое простое условие:

Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Ctl01_dienst__Enter()
                            Dim US As String
                            US = Environ("USERNAME")
                                    If Forms!PLAN!q000 <> US Then
                                        Forms![PLAN]![01_dienst_].Locked = True
                                    Else
                                        Forms![PLAN]![01_dienst_].Locked = False
                                    End If
End Sub
Уверен, есть менее громоздкие способы, но я такой сделал.
Тема может быть закрыта.
0
Модератор
Эксперт MS Access
2671 / 1507 / 366
Регистрация: 12.06.2016
Сообщений: 3,723
12.01.2020, 00:08 8
Дмитрий1905,

Менее громоздкий способ?
Например, такой:
Visual Basic
1
2
3
Private Sub Ctl01_dienst__Enter()
 Forms![PLAN]![01_dienst_].Locked = Forms!PLAN!q000 <> Environ("USERNAME")
End Sub
1
Эксперт MS Access
6387 / 3995 / 236
Регистрация: 12.08.2011
Сообщений: 11,150
12.01.2020, 01:58 9
Менее громоздкие способ такой:
В событии Текущая запись:
Visual Basic
1
2
3
4
5
6
                                
     If Forms!PLAN!q000 <> Environ("USERNAME") Then
        me.allowedits = false
     Else
        me.allowedits = true
     End If
124 поля
0
Модератор
Эксперт MS Access
2671 / 1507 / 366
Регистрация: 12.06.2016
Сообщений: 3,723
12.01.2020, 02:09 10
Цитата Сообщение от alvk Посмотреть сообщение
Visual Basic
1
2
3
4
5
6
                                
     If Forms!PLAN!q000 <> Environ("USERNAME") Then
        me.allowedits = false
     Else
        me.allowedits = true
     End If
me.allowedits - да, правильно, так и нужно.

И все же не пойму, в чем смысл блока If (а такое вижу очень часто) ?
Ведь это одна строчка:
Visual Basic
1
 me.allowedits = Forms!PLAN!q000 = Environ("USERNAME")
0
Эксперт MS Access
6387 / 3995 / 236
Регистрация: 12.08.2011
Сообщений: 11,150
12.01.2020, 03:29 11
Цитата Сообщение от Capi Посмотреть сообщение
И все же не пойму, в чем смысл блока If
1) В читабельности.
2) Часто там не одна команда бывает.
3) Привычка или дело вкуса.

ну и так далее.
2
Модератор
Эксперт MS Access
2671 / 1507 / 366
Регистрация: 12.06.2016
Сообщений: 3,723
12.01.2020, 09:40 12
1) это вряд ли, тут скорее наоборот
2) я именно про эти простейшие случаи, а не про много команд
3) привычки на чем-то же основываются
0
Эксперт MS Access
6387 / 3995 / 236
Регистрация: 12.08.2011
Сообщений: 11,150
12.01.2020, 11:49 13
Цитата Сообщение от Capi Посмотреть сообщение
это вряд ли
Вы тоже имеете право на своё мнение, я с этим не спорю.
0
Эксперт MS Access
15517 / 6516 / 1372
Регистрация: 21.06.2012
Сообщений: 11,946
12.01.2020, 12:24 14
Цитата Сообщение от Capi Посмотреть сообщение
Ведь это одна строчка:
Visual BasicВыделить код
1
 me.allowedits = Forms!PLAN!q000 = Environ("USERNAME")
В ЯП, в которых оператор присваивания совпадает с логической операцией, таких строк лучше бы избегать. В разных ЯП такие строки выполняются по разному. В VB это одно выполнение, а в C - другое.
0
Модератор
Эксперт MS Access
2671 / 1507 / 366
Регистрация: 12.06.2016
Сообщений: 3,723
12.01.2020, 12:36 15
ltv_1953,

А скобки не спасут? Если так?
Visual Basic
1
me.allowedits = (Forms!PLAN!q000 = Environ("USERNAME"))

Не по теме:

На С я писала когда-то. Немного.

0
Эксперт MS Access
15517 / 6516 / 1372
Регистрация: 21.06.2012
Сообщений: 11,946
12.01.2020, 13:07 16
В VB всегда ставлю скобки в таких выражениях (чтобы самому не задумываться). А вот в С a = (b = c) выполняется присваивание a = b = c справа налево (согласно "древней" документации).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2020, 13:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вывести все строки таблицы БД, кроме строк с пустыми значениями определенного поля
Нужно вывести все строки, кроме строк с пустыми значениями определенного поля Как написать это...

Можно ли заблокировать нажатие на область DataGrid кроме строки?
private void grid_CellClick(object sender, DataGridViewCellEventArgs e) { ...

Очистить все TextBox на форме, кроме одного
Private Sub Image1_Click() Dim cntr As Control For Each cntr In Me.Controls ...

Получить из строки все, кроме последней строки и переноса на последнюю строку
Помогите составить регулярное выражение. Использую библиотеку System.Text.RegularExpressions.Regex....


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.