Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.12.23;
Скачать: [xml.tar.bz2];

Вниз

теория   Найти похожие ветки 

 
gestern   (2003-11-29 18:24) [0]

Нужен совет бывалых товарищей. Делаю базу для одной организации в которой необходима запись клиентов. Запись производится с 9.00 до 20.00 с промежутком в 30 минут. Запись в 11 кабинетов. Таким образом в день 11*22=242 записей. У меня проблема, я не знаю каким образом оптимально организовать запись. Хотел было заполнить поля которые отвечают за дату и время на десять лет вперёд и забыть. После того как начал заполнять таблицу понял что так не пойдёт, заполнение происходило автоматически, за ночь заполнились поля только на год вперёд, база разрослась и начала
притормаживать. Сейчас хочу сделать так, что-бы при запуске проги
проверялось наличие записей на 2 недели вперёд, и в случае их
отсутствия поля заполнялись на 2 ндели вперёд ине более, этого им будет достаточно.
А вопрос в том есть ли стандартные подходы к проблеме, прошу подсказать оптимальное решение.


 
Anatoly Podgoretsky   (2003-11-29 18:32) [1]

Ну так в чем проблема в предикате Where укажи текущую дату + 14 дней


 
gestern   (2003-11-29 19:47) [2]


> Ну так в чем проблема в предикате Where укажи текущую дату
> + 14 дней

Извините за нескромный вопрос, но что такое предиката.


 
Anatoly Podgoretsky   (2003-11-29 19:51) [3]

Часть SQL выражения не относящая к команде, оператор.
Можно найти последнею дату и затем добавить новые записи. Можно посмотреть записи за последнии 14 дней.


 
kaif   (2003-11-30 03:42) [4]

Все же не совсем понятно, что значит:
Хотел было заполнить поля которые отвечают за дату и время на десять лет вперёд и забыть
Обрисуй точнее, что ты хочешь сделать.
Я в свое время решал похожую задачу. Я вставлял только те промежутки времени, на которые имелись записанные пациенты. Остальные промежутки считались свободными.
Типа 1 запись:
ID, Рабочее место, Начало, Конец.
К этой записи через foreign key относилась более хитрая запись о том, что это за прием и к какому пациенту он относится.
Основной задачей был поиск "дырок" с помощью SQL.
Если у тебя время на прием фиксированное , то задача еще более упрощается.
Вспомнил!
Я генерил промежутки рабочего времени (расписание врачей), а затем дробил их.
То есть вначале имеется 30 записей для 11 кабинетов на весь месяц. Это всего 330 записей. Но каждая представляет собой отрезок на все рабочее время. (С учетом 2-х смен может быть в 2 раза больше). Затем при записи эти отрезки дробятся (запись об отрезке удаляется и вместо нее вставляется 3 записи (свободный промежуток "до", "прием", свободный промежуток "после"). Если визит нужно отменить, удаляются 3 записи и заменяются одной (свободный промежуток). Эти два действия(раздробить или "склеить" выполнялись двумя хранимыми процедурами).
При попытке раздробить промежуток, помеченный, как визит, программа сразу говорит о невозможности этого. В результате все работало очень быстро и хранился минимум записей в таблицах. К тому же можно было генерить расписание всех врачей на месяц вперед создав всего несколько сотен очень информативных записей об их "свободных" промежутках.
Еще кайф такого решения в том, что промежутки я отображал с помощью компонента TDBChart разными цветами сразу для всего кабинета (кажется, серия типа TGant):

Иванов <---->.......<-->.......<----->
Петров ........<--------->..<-------->
Сидоров ......<-->....................

Используя событие TDBChart при клике на любой отрезок, я вызывал диалог записи на прием на это время или удаления визита (если ошибочно назначили что-то не то или отменили визит)

Тогда я нашел это очень удачным решением такой задачи. И главное - быстрым как с точки зрения генерации расписаний, так и с точки зрения всех остальных SQL-дел.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.12.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.01 c
14-75348
Hermit
2003-11-29 20:04
2003.12.23
Ru-Board


9-75064
s-k
2003-05-26 07:45
2003.12.23
Квесты


14-75311
Зевякин Сергей
2003-11-28 11:21
2003.12.23
Все в кладовку зырить прогу


1-75240
The ZEuS
2003-12-10 17:24
2003.12.23
проблемы с показом модальной формы из DLL


1-75236
odyssey
2003-12-10 19:26
2003.12.23
Поиск файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский