powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Убрать временную таблицу и заменить ее отвязанным рекордсетом
3 сообщений из 3, страница 1 из 1
Убрать временную таблицу и заменить ее отвязанным рекордсетом
    #38582406
gmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gmy
Гость
Есть таблицы
shed_doc - расписание врачей - в ней хранится расписание приема врачей - код, дата, время начало, время конец, кабинет, врач
shed_pat - запись пациентов - код, дата, время начало, время конец, кабинет, пациент

при открытии формы расписания генерируется в таблицу shed_temp - расписание всех имеющихся кабинетов с интервалом по 15 минут (могу и по 30). Если в таблицах расписание врача/расписание пациента - присутствует информация о данном времени - они вставляются - иначе - заполняется каждое время в каждом кабинете "пустым" врачом и "пустым" пациентом. Из этой таблицы делается визуализация на форме, добавление расписание врача (если время пусто), добавление пациентов и т.д. - МНОГО ВСЯКОГО ФУНКЦИОНАЛА.

При смене даты на форме расписания - расписание на новый день во временной таблице shed_temp очищается и генерируется заново.

Хочется (боязнь того, что при многопользовательском режиме в таблице shed_temp будут данные на разные дни) убрать вообще из базы эту таблицу shed_temp - оставить только отвязанный рекордсет (у каждого пользователя будет свой рекордсет - что удобно + возможно будет и быстрее...) С этим рекордсетом не надо ничего обновлять - только искать код записи по выделенному в листбоксе и с этим кодом что-то делать...

Будет ли все это работать если рекордсет назвать как и старую временную таблицу или все поплывет?


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
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
...
Рейтинг: 0 / 0
Убрать временную таблицу и заменить ее отвязанным рекордсетом
    #38582413
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про отвязанные рекордсеты можешь тут почитать много чего...
в общем не рекомендую - нет смысла городить
при многопользовательском доступеможно создавать временные таблицы локально, как в самом мдб с формами так и в отдельном локальном мдб. Это облегчит жизнь.
второй вариант позволит избежать роста клиентского мдб, а мдб с временными таблицами можно(нужно) удалять.
работать с отвязанными рекордсетами быстрее не будет, а мороки намного больше.
...
Рейтинг: 0 / 0
Убрать временную таблицу и заменить ее отвязанным рекордсетом
    #38582414
полином
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gmyи с этим кодом что-то делать...


коротенечко отмечу

при многопользовательском режиме временные
таблицы можно создавать локально на клиенте.
(каждый клиент создает у себя в БД свою.0

можно еще и во временной БД но это уже по-вкусу
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Убрать временную таблицу и заменить ее отвязанным рекордсетом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]