Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Цикл по добавлению свободного номера


Автор: vavilom 19.10.2012, 14:14
Добрый день. Такая задача: есть таблица сотрудников: sotrudnik, таблица номеров:mun, необходимо присваивать и лишать номера сотрудникам. В форме 2 это реализовано так: Присваивая по нажатию кномпки, выбирается свободный номер из таблицы mun, и этот же номер обновляется на статус (2) что означает что этот номер теперь занят, и запросом на добавление заносятся данные в таблицу истории:story.

Код

Private Sub êîìàíäà6_Click()
Dim a
Dim sql As String
Dim sql2 As String

a = DMin("num.numgrup", "num", "status = '1'")
Me.personnum = a
Me.Dirty = False
sql = "update num set status = '2' where numgrup = " & Me.personnum
CurrentDb.Execute sql
DoCmd.OpenQuery "prisv"
End Sub
Что интересно если за место DoCmd.OpenQuery "prisv" написать CurrentDb.Execut "prisv" высткакивает 3061, замало параметрів. очікується 2. Хотя в других формах я так запускал запрос на добавление.

И удалить номер так:

Код

Private Sub êîìàíäà7_Click()
Dim sql As String
Dim sql2 As String
sql = "update num set status = '1' where numgrup = " & Me.personnum
sql2 = "update sotrudnik set personnum = '' where id = " & Me.id
DoCmd.OpenQuery "ubr"
CurrentDb.Execute sql
CurrentDb.Execute sql2
Forms![Ôîðìà2].Requery
End Sub


Но если нужно удалить 100 номеров это займет уйму времени, я создал запрост тех кого удалить нужно, так же запрос кому нужно добавить номер и на Форме 1 кнопки добавить и убрать, но реализовать это не получается, мне сказали нужно через цикл попробовал написать неполучается:

Код

Private Sub 0_Click()
Dim a
Dim sql As String
Dim sql2 As String
Dim sotr
sotr = prisvoit.id
a = DMin("num.numgrup", "num", "status = '1'")
sql2 = "update sotrudnik set personnum = " & a
sql = "update num set status = '2' where numgrup = " & a
For Each sotr In sotrudnik
CurrentDb.Execute sqll
CurrentDb.Execute sql
Next sotr
End Sub

Наверно все не правильно сделал. Не пойму как для переменной сотрудники присвоить id сотрудника из таблицы sotrudnik, может кто нибудь поможет с этим циклом? 

Автор: Akina 19.10.2012, 15:44
Бред какой-то. Всё, что можно сделать через.... ммм... в общем, так и сделано.

Первый вопрос - база будет работать в однопользовательском режиме или в многопользовательском?

Автор: vavilom 20.10.2012, 08:58
Цитата(Akina @ 19.10.2012,  15:44)
Бред какой-то. Всё, что можно сделать через.... ммм... в общем, так и сделано.

Первый вопрос - база будет работать в однопользовательском режиме или в многопользовательском?

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

Автор: Akina 20.10.2012, 21:56
Если один пользователь - то к чему все эти навороты? Впрочем, дело ваше...

Второй вопрос - почему нужно вручную присваивать номера пользователям? почему нельзя спокойно сделать поле номера счётчиком - и пусть у СУБД голова болит не дублировать... чем так пугают "дыры" в нумерации?

Автор: vavilom 22.10.2012, 09:00
Цитата(Akina @ 20.10.2012,  21:56)
Если один пользователь - то к чему все эти навороты? Впрочем, дело ваше...

Второй вопрос - почему нужно вручную присваивать номера пользователям? почему нельзя спокойно сделать поле номера счётчиком - и пусть у СУБД голова болит не дублировать... чем так пугают "дыры" в нумерации?

Раньше так и было, это очень долго и сложно обьяснять, это тонкость нашей фирмы, номеров ограниченное количество сотрудникам некоторым будет несколько раз присваивать и уберать номера.  Некоторые сотрудники вообще будут работать без номеров. В общем мне уже помогли, добрый человек по имени Панург  smile , все равно спасибо за отклик!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)