Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Работа со связанными таблицами  [new]
Balin Andrey
Member

Откуда:
Сообщений: 4
Hi All!

Есть две таблицы. Первая:
КОД_БОЛЬНОГО
ФИО_БОЛЬНОГО
КОД_ДИАГНОЗА

Вторая:
КОД_ДИАГНОЗА
НАЗВ_ДИАГНОЗА

Они связаны по КОД_ДИАГНОЗА. Каждобу больному соответствует один диагноз,
а каждому диагнозу много больных.
Создаю форму для работы с этими таблицами,
в которой есть поле ФИО_БОЛЬНОГО и поле со списком НАЗВ_ДИАГНОЗА.
Теперь я хочу с помощью этой формы добавлять записи в эти таблицы.
Перехожу на пустую запись, ввожу ФИО, выбираю в списке названий диагноза
нужный и Ок. Все работает нормально.
Но если мне надо что-то добавить к существующему диагнозу,
то в таблице ДИАГНОЗ меняеться соответствующая запись, а не добавляеться.
Например, я выбрал из списка "перелом берцовой кости"
и дописываю "со смещением". В итоге хочу получить новую запись в
таблице ДИАГНОЗ "перелом берцовой кости со смещением", ну и конечно
новую запись в таблице БОЛЬНОЙ со ссылкой на новый диагноз.

Подскажите, пожалуйста, как это возможно реализовать?
10 июн 06, 11:25    [2761319]     Ответить | Цитировать Сообщить модератору
 Re: Работа со связанными таблицами  [new]
NG
Member

Откуда: Екатеринбург
Сообщений: 1492
У вас связь не "один-ко-многим", а "многие-ко-многим". Она реализуется через третью таблицу, в которой как минимум два поля -- ключевые столбцы из обеих таблиц (в вашем случае КОД_БОЛЬНОГО и КОД_ДИАГНОЗА). Ключ в ней по обоим столбцам (не даст ввести повторяющиеся записи). Остальные столбцы -- по усмотрению, например дата диагноза. Каждая из ваших таблиц связана с третьей отношением "один-ко-многим".
Успехов!
10 июн 06, 11:36    [2761328]     Ответить | Цитировать Сообщить модератору
 Re: Работа со связанными таблицами  [new]
Balin Andrey
Member

Откуда:
Сообщений: 4
Почему "многие-ко-многим", если каждому больному соответствует один диагноз?
В любом случае, я спрашивал о том, как сделать добавление отредактированной записи в поле со списком как новую запись в таблицу ДИАГНОЗ.
10 июн 06, 11:44    [2761332]     Ответить | Цитировать Сообщить модератору
 Re: Работа со связанными таблицами  [new]
NG
Member

Откуда: Екатеринбург
Сообщений: 1492
Странно мне про один диагноз... Обычно -- целый букет, но вам виднее. А по поводу редактирования/добавления диагнозов -- самый простой выход, это добавление поля с комментарием.
Второе решение, оно-же и наиболее часто используемое, -- каскадные списки. После выбора диагноза разворачивать второй список с уточнениями. Т.е. товарная категория -- товар (написал так ибо не соображу как назвать обобщающий диагноз).
Самое прогрессивное, но самое трудоемкое решение, -- хранить диагнозы в виде иерархической структуры (дерева).
Во втором и третьем случаях ввод дополнительных диагнозов -- через специальную форму.
Успехов!
10 июн 06, 12:04    [2761342]     Ответить | Цитировать Сообщить модератору
 Re: Работа со связанными таблицами  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
Balin Andrey
В любом случае, я спрашивал о том, как сделать добавление отредактированной записи в поле со списком как новую запись в таблицу ДИАГНОЗ.
Для добавления новой записи в таблицу, на которой основано ваше поле со списком, пишите обработку события "отсутствие в списке" (NotInList) у этого комбобокса. Это ответ на ваш вопрос.

А насчет структуры своей вы все же подумайте. Вы уверены вообще, что диагноз стоит делать в виде реляционного поля? По-моему, это скорее уникальная штука, чем наоборот. В то время как поле со списком чаще используется для выбора типовых значений из небольшого списка значений. Причем - добавление на ходу в него нового значения - это скорее исключение, чем правило.

Сделать-то можно, не вопрос. Но если у вас в таблице диагнозов будет почти столько же записей сколько и пациентов, то тогда смысл? Я бы еще понял, если бы вы использовали таблицу диагнозов, как некий классификатор наиболее распространенных значений - из которого брать лишь текстовую основу в текущую запись пациента, а там уже расширять и дополнять ее подробностями. Впрочем, я могу не знать всех ваших нюансов, вам-то конечно виднее :)

Успехов.
10 июн 06, 12:11    [2761347]     Ответить | Цитировать Сообщить модератору
 Re: Работа со связанными таблицами  [new]
NG
Member

Откуда: Екатеринбург
Сообщений: 1492
2 Karfaqen
Реляционность видимо нужна. Ведь делают они какой-нибудь анализ своей деятельности.
10 июн 06, 12:27    [2761361]     Ответить | Цитировать Сообщить модератору
 Re: Работа со связанными таблицами  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
2 Karfaqen
Реляционность видимо нужна. Ведь делают они какой-нибудь анализ своей деятельности.
Реляционность вообще нужна, спору нет ;)

Но я-то вел речь о том, что при постоянном использовании (желаемого автором) механизма "уточнения диагноза" с добавлением новых записей в реляционную таблицу, такая связь из теоретической "1-ко-многим" быстро превратится в связь "1-к-1", и утратит свою изначальную реляционную привлекательность А анализ своей деятельности им тогда придется вести как-нибудь по "ключевым словам" в поле описания диагноза ;)

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

А если экспертных оценок хочется, то можно городить иерархическую структуру диагнозов. Вот тогда и статистику можно собрать по-людски.
10 июн 06, 13:06    [2761394]     Ответить | Цитировать Сообщить модератору
 Re: Работа со связанными таблицами  [new]
NG
Member

Откуда: Екатеринбург
Сообщений: 1492
2 Karfaqen
Поддерживаю!
Видимо автор пока пытается решить задачу ввода удобным, как ему кажется, способом, не задумываясь о том, что потом с этими данными делать.
10 июн 06, 13:19    [2761405]     Ответить | Цитировать Сообщить модератору
 Re: Работа со связанными таблицами  [new]
Balin Andrey
Member

Откуда:
Сообщений: 4
Большое спасибо за ответы!

Попробывал с реляционностью и баз оного.
Конечно, в моем случае, хорошо срабатывает обработчик события NotInList.
Но, все равно есть вопросы.
Если без реляционности, т.е. НАЗВ_ДИАГНОЗА находиться в самой таблице БОЛЬНОЙ, то при попытке ввести новое (редактированное) НАЗВ_ДИАГНОЗА,
во-первых, вываливаеться окно "Будет добавлено следующее число записей:1 (Да/Нет)" (Как от него избавиться?!!!), а во-вторых, появляеться новая запись,
в которой ФИО пустое, а НАЗВ_ДИАГНОЗ новое введенное значение.
Если с реляционностью, то в форме в поле ФИО вообще ничего нельзя ввести.
Смотрел свойства этого поля, нигде не нашел какой-либо запрет на ввод символов. Как такое может быть?
Но при вводе нового НАЗВ_ДИАГНОЗ тоже вываливаеться окно про добавление записей, и в таблице ДИАГНОЗ при переходе к следующей пустой записи в форме создаються две одинаковые записи (с разным счетчиком).
12 июн 06, 08:10    [2762753]     Ответить | Цитировать Сообщить модератору
 Re: Работа со связанными таблицами  [new]
Restavraciya
Member [заблокирован]

Откуда:
Сообщений: 5139
что такое "реляционное поле" ?
---
Весь Windows разроем до основанья, а затем мы наш неглючный мир построим
12 июн 06, 08:33    [2762767]     Ответить | Цитировать Сообщить модератору
 Re: Работа со связанными таблицами  [new]
NG
Member

Откуда: Екатеринбург
Сообщений: 1492
2 Balin Andrey
Параметр Response метода NotInList позволяет управлять действиями программы после завершения обработки события.
Response = acDataErrDisplay -- вывод стандартного сообщения об ошибке;
Response = acDataErrContinue -- стд. сообщение не выводится. Можно вывести свое либо вообще не информировать пользователя;
Response = acDataErrAdded -- необходимо в источник записей поля со списком добавить новое значение, введенное пользователем. Ассеss обновит поле со списком, добавив в него новое значение.
Пробуйте!
12 июн 06, 15:40    [2763195]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить