|
|
|
| версия 2007
Помогите, пожалуйста.
вот записи в таблице
поля:номер компа,имя,начало работы,конец работы
за компьютером номер 1 сидит человек А с 10.00 до 12.00
следующая запись за тем же компьютером сидит человек В с 11.00 до 12.30
видно что перекрест по времени,противоречиво-тк 2 человека не могут сидеть за одним компьютером в одно и тоже время
как сделать запрос,чтобы программа выдала эти две противоречивые записи | |
|
| |
|
|
|
| Лучше, наверное, при записи данных - проверять занятость данного периода времени. ИМХО | |
|
| |
|
|
|
| ну а как это проверить автоматически,а не самому проверять?
чтото типо индексированных полей,но ведь программа воспринимает эти 2 точки времени именно как два числа,а не как временной отрезок | |
|
| |
|
|
|
|
программа воспринимает эти 2 точки времени именно как два числа,а не как временной отрезок
|
а на кой придумали оператор Between | |
|
| |
|
|
|
| Попробуй сравнить конец первого с началом второго
if(11.00-12.00)<0 then
msgbox("Перехлест") | |
|
| |
|
|
|
| ну так ведь записей в таблице много будет
тоесть я рне могу конкретные числа подставлять
не знаю как сделать так,чтоб было понятно
что конец записи должен быть меньше последующей | |
|
| |
|
|
|
| тогда нужен контроль при вводе второй записи на перекрест времени BeforeUpdate, и если есть такое, то ввкести запрет на ввод второй записи | |
|
| |
|
|
|
| Бери последнюю запись на текущую дату и сравнивай по ходу вводимой.
Еще лучше, если время начала будет автоматом вводиться при начале сеанса, а не вручную. | |
|
| |
|
|
|
| примерно так - в примере на форме поля nomkomp, tbegin,tend
источник данных таблица Таблица3tbte (или твоя, и поля твои)
на поле tbegin вешаем обработчик (после обновления)
' в данном случае если время начала следубщего меньще окночания предыдущего(максимального), то начало=концу предыдущего
Private Sub tbegin_AfterUpdate()
Dim timebegin As Double
timebegin = DMax("[tend]", "Таблица3tbte", "[nomkomp]=" & Me.nomkomp)
If Me.tbegin < timebegin Then
Me.tbegin = timebegin
End If
End Sub
'действия по then можешь сам придумать - сообщение там или еще что
|
Для полноты проверок надо и время окончания что б было больше времени начала | |
|
| |