Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2012, 01:28   #1
hamsidJ
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 20
Подмигивание Расписание

Здравствуйте, у меня есть таблица, которая представляет собой расписание состоящие из 5 полей : "Дата", "Время", "Место", "Действие", "Человек".есть связанная с этой табличкой форма. При нажатии кнопки "Добавить запись" нужно проверить не занят ли этот человек в данный момент, т.е.
Если ("Дата" = дата, указанная в форме) И ("Человек" = человек, указанный в форме) тогда
Если ("Время" = время, указанное в форме) ИЛИ ("Время" > время, указанное в форме - 4 ) ИЛИ ("Время" < время, указанное в форме + 4 ) тогда
Вывести окно об ошибке;
НЕ ВНОСИТЬ ЗАПИСЬ;
hamsidJ вне форума Ответить с цитированием
Старый 03.01.2012, 14:07   #2
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

if("Дата" = дата, указанная в форме) and ("Человек" = человек, указанный в форме) then


if ("Время" = время, указанное в форме) or ("Время" > время, указанное в форме - 4 ) or ("Время" < время, указанное в форме + 4 ) then
msgbox("error")
exit sub
end if
end if
gluk_fm вне форума Ответить с цитированием
Старый 03.01.2012, 16:21   #3
hamsidJ
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 20
По умолчанию

А как обновить таблицу после внесения изменений в Recordset? Мне приходиться с помощью макрокомандных кнопок "Вперёд" и "Назад" это делать.
hamsidJ вне форума Ответить с цитированием
Старый 03.01.2012, 17:00   #4
Woodlin
Форумчанин
 
Регистрация: 30.03.2010
Сообщений: 153
По умолчанию

hamsidJ, если речь идёт о форме табличного вида, то можно так: Me.Refresh
Woodlin вне форума Ответить с цитированием
Старый 03.01.2012, 18:41   #5
hamsidJ
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 20
По умолчанию

нет речь идёт о самой таблице
hamsidJ вне форума Ответить с цитированием
Старый 03.01.2012, 19:25   #6
hamsidJ
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 20
По умолчанию

Почему-то выдаёт ошибку 3021 "Текущая запись отсутствует".
Код:
Private Sub Add_Click()
'объявление переменных
Dim tblMain As DAO.Recordset
Set tblMain = CurrentDb.OpenRecordset("Расписание")
Dim tblType As DAO.Recordset
Set tblType = CurrentDb.OpenRecordset("Тип действия")
Dim i As Integer

'перебор таблицы типов действий
tblType.MoveFirst
Do Until (tblType.EOF) Or (tblType.Fields("Тип действия").Value = Form_Расписание.Тип_Действия.Value)
    tblType.MoveNext
Loop

i = 0

tblMain.MoveFirst
Do While (i < tblMain.RecordCount - 2)
    If (tblMain.Fields("Дата").Value = Form_Расписание.Дата.Value) And (tblMain.Fields("Человек").Value = Form_Расписание.Человек.Value) Then
        If (tblMain.Fields("Время").Value = Form_Расписание.Время.Value) Or (tblMain.Fields("Время").Value > DateAdd("h", -(tblType.Fields("Время испонения(ч)").Value + tblType.Fields("Перерыв(ч)").Value), Form_Расписание.Время.Value)) Or (tblMain.Fields("Время").Value < DateAdd("h", (tblType.Fields("Время испонения(ч)").Value + tblType.Fields("Перерыв(ч)").Value), Form_Расписание.Время.Value)) Then
            MsgBox "ОШИБКА"
            tblMain.Close
            tblType.Close
            Exit Sub
        Else
            tblMain.AddNew
            tblMain.Fields("Дата").Value = Form_Расписание.Дата.Value
            tblMain.Fields("Время").Value = Form_Расписание.Время.Value
            tblMain.Fields("Место").Value = Form_Расписание.Место.Value
            tblMain.Fields("Тип Действия").Value = Form_Расписание.Тип_Действия.Value
            tblMain.Fields("Человек").Value = Form_Расписание.Человек.Value
            tblMain.Close
            tblType.Close
            Exit Sub
        End If
    End If
    tblMain.MoveNext
Loop

End Sub
hamsidJ вне форума Ответить с цитированием
Старый 03.01.2012, 20:08   #7
Woodlin
Форумчанин
 
Регистрация: 30.03.2010
Сообщений: 153
По умолчанию

Может Вам стоит сначала проверить есть ли записи в Рекордсет, а потом переходить на первую запись.
Woodlin вне форума Ответить с цитированием
Старый 03.01.2012, 20:19   #8
hamsidJ
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 20
По умолчанию

Эти записи есть я сам их вносил
hamsidJ вне форума Ответить с цитированием
Старый 03.01.2012, 21:48   #9
Woodlin
Форумчанин
 
Регистрация: 30.03.2010
Сообщений: 153
По умолчанию

Ошибка на какой строке кода выскакивает?
Woodlin вне форума Ответить с цитированием
Старый 03.01.2012, 23:12   #10
hamsidJ
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 20
По умолчанию

Та, которая красная
hamsidJ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
расписание факултетета gabiboi Помощь студентам 2 10.06.2011 23:01
C++ Builder Расписание free_man1991 C++ Builder 0 14.05.2011 23:24
Расписание уроков DeyaInferi Паскаль, Turbo Pascal, PascalABC.NET 6 08.03.2011 20:48
расписание звонков dozimetrist Помощь студентам 0 21.11.2010 16:54
Расписание в Excel Python Microsoft Office Excel 0 25.11.2006 17:01