Есть таблицы
shed_doc - расписание врачей - в ней хранится расписание приема врачей - код, дата, время начало, время конец, кабинет, врач
shed_pat - запись пациентов - код, дата, время начало, время конец, кабинет, пациент
при открытии формы расписания генерируется в таблицу shed_temp - расписание всех имеющихся кабинетов с интервалом по 15 минут (могу и по 30). Если в таблицах расписание врача/расписание пациента - присутствует информация о данном времени - они вставляются - иначе - заполняется каждое время в каждом кабинете "пустым" врачом и "пустым" пациентом. Из этой таблицы делается визуализация на форме, добавление расписание врача (если время пусто), добавление пациентов и т.д. - МНОГО ВСЯКОГО ФУНКЦИОНАЛА.
При смене даты на форме расписания - расписание на новый день во временной таблице shed_temp очищается и генерируется заново.
Хочется (боязнь того, что при многопользовательском режиме в таблице shed_temp будут данные на разные дни) убрать вообще из базы эту таблицу shed_temp - оставить только отвязанный рекордсет (у каждого пользователя будет свой рекордсет - что удобно + возможно будет и быстрее...) С этим рекордсетом не надо ничего обновлять - только искать код записи по выделенному в листбоксе и с этим кодом что-то делать...
Будет ли все это работать если рекордсет назвать как и старую временную таблицу или все поплывет?
Public Function Shed_generate()
CurrentDb.Execute "DELETE * FROM Shed_temp ;"
Dim Интервал, Начало, Начало1, Конец, cdata As Date
Dim ccount, I As Integer
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Shed_temp", DAO.dbOpenDynaset)
cdata = Me.Дата
ccount = DCount("КодКабинета", "Кабинеты", "Расписание = True ")
For I = 1 To ccount
Начало = #8:00:00 AM#
Конец = #7:45:00 PM#
Интервал = #12:15:00 AM#
Do
rst.AddNew
rst!Дата = cdata
rst!ВремяНачало = Начало
rst!ВремяКонец = Начало + Интервал
Начало1 = Начало + Интервал
Me.ccab = I
rst!КодКабинета = Me.ccab
If DFirst("КодСотрудника", "Shed_doc", "(КодКабинета= " & Me.ccab & ") and (Дата = #" & Format(cdata, "mm-dd-yyyy") & "#) and (ВремяНачало <= #" & Начало & "#) and (ВремяКонец >= # " & Начало1 & " #)") > 0 Then
Me.csot = DFirst("КодСотрудника", "Shed_doc", "(КодКабинета= " & Me.ccab & ") and (Дата = #" & Format(cdata, "mm-dd-yyyy") & "#) and (ВремяНачало <= #" & Начало & "#) and (ВремяКонец >= # " & Начало1 & " #)")
Else: Me.csot = 1
End If
rst!КодСотрудника = Me.csot
If DFirst("КодКлиента", "Shed_pat", "(КодКабинета= " & Me.ccab & ") and (Дата = #" & Format(cdata, "mm-dd-yyyy") & "#) and (ВремяНачало <= #" & Начало & "#) and (ВремяКонец >= # " & Начало1 & " #)") > 0 Then
Me.ccli = DFirst("КодКлиента", "Shed_pat", "(КодКабинета= " & Me.ccab & ") and (Дата = #" & Format(cdata, "mm-dd-yyyy") & "#) and (ВремяНачало <= #" & Начало & "#) and (ВремяКонец >= # " & Начало1 & " #)")
Else: Me.ccli = 1
End If
rst!КодКлиента = Me.ccli
Начало1 = Null
Начало = Начало + Интервал
rst.Update
Loop Until Начало >= Конец
Next I
rst.Close
Set rst = Nothing
Me.Неделя = Format(Дата, "Расписание на Dddd, c")
End Function
http://www.sql.ru/forum/1081683/ubrat-vremennuu-tablicu-i-zamenit-ee-otvyazannym-rekordsetom