Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > Электронные книги / eBookz > Медицина

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 08.04.2010, 19:01   #1
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию БазаДанныхПАО (делаем сами)

Думаю, что буду краток... :-) с одной стороны, потому что немного лень слишком много писать, с другой - потому что не хочу, чтобы страждущему пришлось слишком долго читать....
Так вот. Основная цель данной темы - научиться самостоятельно создавать базу данных для патологоанатомического отделения. Именно самостоятельно, используя для этого MS Access.
Далее несколько вопросов и ответы к ним:
1. Зачем создавать самим, если и так масса всяких разных есть?
Вопрос сложный и многогранный, поэтому ответ многоэтапный:
а. Действительно, есть всякого рода софт, НО часть из этого софта просто-напросто недоступна для простых смертных, потому что ПЛАТНАЯ; кроме этого, есть и бесплатные программы, но большей частью они ориентированы на секционный раздел работы (кстати, именно поэтому в этой теме я не буду детально останавливаться на этих вопросах, потому что есть действительно неплохой софт да и после освоения "журнала биопсия" создать самостоятельно "журнал вскрытий" - не проблема совсем).
б. В продолжении пункта а - нередко какой бы ни был софт... к сожалению обычно это не совсем то, что нам надо печально, но факт.
в. Последний пункт. Как ни крутите, но информатизация кривыми и совершенно нелепыми путями все же пробирается в российское государственное здравоохранение. А значит, рано или поздно на пороге вашего отделения может появиться некто в сопровождении главного врача или какого-то зама и заявить, что его компания будет заниматься разработкой баз данных для вашей больницы и им нужно познакомиться с аспектами работы вашего отделения для создания проекта. Поверьте, коллеги, в большинстве своем эти люди мало знакомы с особенностями здравоохранения, и тем более с ПАО. О том, почему так... финансирование какого бы то ни было проекта в нашей стране в рамках гос бюджета осуществляется сами знаете как и куда деваются деньги и кто в итоге становится исполнителем. Поэтому ожидать, что кто-то будет серьезно вникать в вашу работу для создания качественного продукта не следует, а значит.... а значит, надо довольно хорошо самим представлять, что такое база данных, с чем ее едят и как ее можно пользовать.
2. Почему MS Access?
Да очень просто :-) открываем любое руководство по акцессу и видим с первых же страниц тонну дифирамбов, посвященных столь прекрасной и удобной настольной СУБД (система управления базой данных). И знаете, что самое интересно, почти со всеми этими утверждениями можно согласиться. Мда, представьте себе.... Если мы добавим сюда столь распространившуюся в нашей стране зависимость пользователей от винды и всего, что с ней сопряжено, то действительно получим лучший вариант. Более того, все те азы которые мы освоим пригодятся в любой другой СУБД в той же мере и знания эти будут, безусловно, очень и очень полезны.
3. ...........
Самое важное... :-) я ведь совсем не сказал о чем речь пойдет в следующих постах.... :-) Так вот: в следующих постах мы шаг за шагом пройдем этапы от момента создания базы данных до ее окончательного варианта, а все промежуточные исполнения я буду выкладывать в сети, чтобы вы могли с ними ознакомиться.

Несколько условий:
1. делается это совершенно безвозмездно, а значит никакие претензии не принимаются
2. вы можете задавать вопросы, но по мере их накопления, я буду объединять их в одно сообщение и давать на них ответы в нем же, таким образом сообщений в теме будет не слишком много и не придется тратить уйму времени для поиска чего-то важного
3. последующие посты будут больше походить на руководство, чем на учебник по двум причинам. во-первых, нет времени писать полноценный учебник, во-вторых, хороших учебников по акцессу и так масса. хотите - изучайте. здесь только конкретные шаги и кое-какие собственные мысли о тех или иных вещах, базирующиеся на собственном опыте.
4. многое, и это, прежде всего, сами файлы, буду скрывать, что бы желающие знакомиться с информацией не ленились регистрироваться на форуме - хоть какая-то плата ведь должна быть
5. очень важный пункт, посему буду писать ВОТ ТАК
ВЫ МОЖЕТЕ ПОЛЬЗОВАТЬСЯ ЭТОЙ ИНФОРМАЦИЕЙ И ПРЕДЛАГАЕМЫМИ ФАЙЛАМИ, НО ВЫ НЕ МОЖЕТЕ ВЫКЛАДЫВАТЬ НИ ТО, НИ ДРУГОЕ НА ДРУГИХ САЙТАХ, ФОРУМАХ, БЛОГАХ ИЛИ ВООБЩЕ РЕПРОДУЦИРОВАТЬ ВСЕ НИЖЕ ИЗЛОЖЕННОЕ.
ЕСЛИ СОВСЕМ НЕВТЕРПЕЖ, ТО ДЕЛАЕМ ССЫЛКУ НА ТЕМУ НА ЭТОМ ФОРУМЕ.

На этом все. Следующие посты будут исключительно по делу.

ВСЕМ, КОМУ НЕ ХОЦЦА ЧИТАТЬ, НУЖЕН СРАЗУ ИТОГ - ПРОСИМ В 25 ПОСТ
__________________
да никто не виноват, просто общество получает то здравоохранение, которое заслуживает

Последний раз редактировалось drPat; 13.05.2010 в 19:34..
drPat вне форума
 
Ответить с цитированием Вверх
Эти 5 пользователя(ей) сказали cпасибо за это полезное сообщение:
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: Рекомендуем супермаркет KNS.ru - монитор SunWind - более 50-ти тысяч наименований товаров со склада в Москвенаращивание зубов стоимостьНаружный блок TMV-Vd180W/N1проект барнхаус 60м2амн 300х100


Старый 08.04.2010, 19:35   #2
drPat
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию Re: БазаДанныхПАО

MS Access входит в стандартный набор офисных предложений от микрософта, если только вы не отключили его при установке (когда я был мал и глуп я именно так и делал)

Рекомендую использовать 2003 офис. Уж как-то он понравился да и к ресурсам не прихотлив, а вот в 2007 некоторые вещи найти так и не удалось. Впрочем, я не первый, кто сетует на излишнюю мудреность 2007 офиса, но мы вообще-то не об этом.
Далее просто пошаговые картинки:

запустили программу и создаем новый файл - все как обычно в офисных программах, ничего страшного и особенно нового нет

в итоге получаем что-то вот такое
__________________
да никто не виноват, просто общество получает то здравоохранение, которое заслуживает
drPat вне форума
 
Ответить с цитированием Вверх
Эти 2 пользователя(ей) сказали cпасибо за это полезное сообщение:
Старый 08.04.2010, 20:10   #3
drPat
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию Re: БазаДанныхПАО

Следующим этапом мы создадим одну таблицу.
Вообще, так называемые реляционные базы данных, содержат в себе информацию в виде таблиц. Это не так сложно представить, если вспомнить самый обычный журнал регистрации биопсий - таблица в чистом виде. Отсюда и будем плясать. НО!!!! но начнем мы с таблицы сотрудников, поскольку будет она небольшой, а нам сейчас важно понять основные принципы, прежде чем создавать таблицы вроде журнала регистрации биопсий или вскрытий. Но сейчас просто проследуйте шагам, а объяснения будут позже.
Итак...
Выбираем "ОБЪЕКТЫ" -> "ТАБЛИЦЫ" -> "СОЗДАНИЕ ТАБЛИЦЫ В РЕЖИМЕ КОНСТРУКТОРА"

Получим некую таблицу1, подобно уже привычному Документ1 (в ворде, например).
Далее заполним левое верхнее поле словом key (столбец "Имя поля"), а во втором верхнем поле ("Тип данных") выберем "Счетчик"

обязательно добавим описание (первичный ключ таблицы)

Нажимаем на правую клавишу мыши и в появившемся меню выбираем "Ключевое поле"

И, естественно, сохраняем плод наших трудов. Обратите внимание, что напротив внесенных нами изменений появился желтый ключик, подтверждающий, что поле ключевое.

В качестве имени таблицы запишем "tSotr" (t от английского table, Sotr - т.е. сотрудники, именно с большой буквы, потому что так удобнее потому читать)

Что же мы теперь видим: в шапке таблицы изменилась надпись с "Таблица1" на "tSotr", а в разделе "ОБЪЕКТЫ" -> "ТАБЛИЦЫ" появилась таблица tSotr

Если нажать на эту таблицу, то увидим следующее


Теперь несколько пояснений. Сначала технического характера:
Почему названия набраны латинскими буквами? вы можете набирать названия какими угодно буквами и даже акцесс разрешает пробелы, НО если вам придется переносить эту базу данных в другую СУБД, то совершенно не факт, что все ваши выкрутасы с пробелами, восклицательными или какими другими знаками, а также русский алфавит сия прога будет поддержвать.
Поэтому создаем короткие, говорящие названия исключительно латиницей или цифрами, используя заглавные буквы только по мере необходимости, обычно, для разделения слов.
Так... теперь о таблицах и все такое....
я уже упомянул о том, что таблицы - это основное хранилище данных. Одной таблицей мы точно не обойдемся - почему? не будем далеко ходить, а представим себе журнал регистрации биопсий. В нем есть столбец "лаборант" и "врач". Как мы уже упоминали, журнал регистрации биопсий (вскрытий) тоже будет отдельной таблицей и чтобы в ней не хранились все сотрудники отделения с всеми их атрибутами, мы создаем отдельную таблицу, а журнал, в свою очередь, будет ссылаться на эту.
Если ничего не поняли - не беда... у меня есть склонность витиевато излагать мысли, а по мере продвижения вам все станет понятно.
__________________
да никто не виноват, просто общество получает то здравоохранение, которое заслуживает

Последний раз редактировалось drPat; 08.04.2010 в 20:24..
drPat вне форума
 
Ответить с цитированием Вверх
Эти 3 пользователя(ей) сказали cпасибо за это полезное сообщение:
Старый 08.04.2010, 22:02   #4
drPat
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию Re: БазаДанныхПАО

Добавим еще несколько полей в эту таблицу (все-таки она должна нести некоторый смысл)

Обратите внимание на свойства полей dol и act



В итоге мы получили уже более осмысленную таблицу с некоторыми возможностями подстановки
__________________
да никто не виноват, просто общество получает то здравоохранение, которое заслуживает
drPat вне форума
 
Ответить с цитированием Вверх
Эти 3 пользователя(ей) сказали cпасибо за это полезное сообщение:
Старый 09.04.2010, 20:33   #5
drPat
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию Re: БазаДанныхПАО

Создадим еще три таблицы.
Первая описывает отделения, из которых в ПАО направляется материал, причем учтена возможность обслуживания нескольких учреждений из разных городов или районов.
Вторая таблица содержит информацию о врачах, которые направляют материал на исследование (или не так давно были лечащими врачами нынешнего материала). При этом в данной таблице не внесено информации о том, в каком отделении работает врач. Это, безусловно, сделано намерено, поскольку нередки ситуации, когда один и тот же врача работает и в стационаре, и в поликлинике. Чтобы учесть эти особенности, мы создадим еще одну таблицу, в которой будет всего лишь два поля и даже не будет первичного ключа. Эти два поля будут связывать соответствующие таблицы и мы сможем одному и тому же врачу назначить сразу два и даже больше отделений.
Это первая таблица

Если в вашем отделении в настоящее время обслуживается лишь одно учреждение, то можно в свойствах полей city и clin внести значения по умолчанию, что бы не заносить их каждый раз.

Далее вторая таблица

и, наконец, третья
__________________
да никто не виноват, просто общество получает то здравоохранение, которое заслуживает
drPat вне форума
 
Ответить с цитированием Вверх
Эти 3 пользователя(ей) сказали cпасибо за это полезное сообщение:
Старый 09.04.2010, 20:44   #6
drPat
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию Re: БазаДанныхПАО

Следующая таблица уже довольно сложная. Она будет отражать столь привычный нам журнал биопсий.
Сначала картинка с самой таблицей:

Некоторые пояснения:
В ней гораздо больше полей.
Кроме этого, используются числовые поля для отделения, врача, направившего на исследование, лаборанта и врача-патологоанатома.
Поля pol, oper, stac текстовые, но размером всего в один символ, соответственно: м/ж, о/д, п/с. Последние два введены для создания отчетов о характере материала, обрабатываемого в отделении.
Поле MEMO - это то же текстовое поле, но хранящее гораздо большее количество знаков (как показывает опыт, 255 знаков, которые являются лимитирующими для текстового поля, далеко не всегда удовлетворяют потребностям).
Поле inf будет хранить дополнительную информацию, но о деталях позже, когда дойдем до заполнения таблиц.
Ниже приводится ссылка на файл, где все изложенные таблицы уже сделаны:
файл mdb
__________________
да никто не виноват, просто общество получает то здравоохранение, которое заслуживает

Последний раз редактировалось drPat; 09.04.2010 в 20:46..
drPat вне форума
 
Ответить с цитированием Вверх
Эти 3 пользователя(ей) сказали cпасибо за это полезное сообщение:
Старый 10.04.2010, 21:04   #7
drPat
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию Re: БазаДанныхПАО

Далее создадим еще несколько таблиц. Возможно, некоторые из них вам не понадобятся, но кому-то будут очень полезны.
Итак, к их числу относятся журнал аутопсий (tAut), журнал консульстаций (tCon), журнал иммуногистохимических исследований (tIgh).
Начнем с актуального - журнал вскрытий. Опять же, сначала скриншот.

В этой таблице еще больше полей, но... но связано это, сами понимаете, с традицией отечественных чиновников всячески уделять внимание всевозможным отчетам именно по вскрытиям. В умах этих господ патологоанатом так и остается трупорезом Поэтому в данной таблице присутствуют поля, содержащие информацию, например, о сроках послеоперационных осложнений, впрочем, как и их наличии вообще. Особенно хотелось бы уделить внимание шифрованию основного заболевания по МКБ. Дело в том, что для базы данных совершенно принципиально, как вы вводите информацию. Т.е. проглотит она все, НО "С50" и "С 50" - будут для нее совершенно разные вещи. Поэтому я ограничил поля всего лишь тремя знаками - вы можете самостоятельно сделать их нужного именно вам объема, но главное - это единство заполнения этого поля, что возможно лишь при договоренности между врачами и последующей предельной аккуратности, поскольку появление лишнего пробела не единственная беда, так например, совершенно не очевидна для глаза замена латинской "С" русской "С" - они даже на клавиатуре в одном месте находятся, а восприниматься будут по разному. Но мы еще вернемся к этому и обсудим, как можно свести эти проблемы к минимуму или хотя бы исправить их.
Следующая таблица - журнал консультаций. Тоже ничего особенного, поэтому просто ограничусь скриншотом, а кому особенно интересно - может заглянуть в файл.

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


Таким образом, на данном этапе проделана довольно большая работа. Может показаться, что ничего мудреного сделано не было: ну набрали таблицы, ну так ведь и так вещи очевидные. Однако... однако я вас расстрою: мы не просто создали таблицы - мы создали модель базы данных. У разработчиков баз данных на этот этап уходит львиная доля времени и еще больше сил, потому что разработчик должен вникнуть в самую суть чужой специальности (обычно совершенно ему не знакомой) и только потом приступить к "созданию таблиц". Мы сильно сэкономили по времени и силам, потому что нам не надо "с нуля" вникать в собственную специальность. Конкретно эта модель базируется на моем личном опыте (для любопытствующих: он совсем не велик и укладывается в 4 года и три базы данных по гистологическим исследованиям). Далее нам предстоит собрать удобную для глаза оболочку всех этих таблиц. Вот здесь мы существенно проиграем разработчикам, поскольку начнем "с нуля", но не пугайтесь: у акцесса, как и любого другого современного "визуального" редактора для разработки довольно удобный и интуитивно понятный интерфейс, который сильно облегчит наш труд.
И, конечно же, файл с созданными таблицами:
файл mdb
__________________
да никто не виноват, просто общество получает то здравоохранение, которое заслуживает
drPat вне форума
 
Ответить с цитированием Вверх
Эти 2 пользователя(ей) сказали cпасибо за это полезное сообщение:
Старый 11.04.2010, 19:47   #8
drPat
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию Re: БазаДанныхПАО

Следующим этапом сделаем несколько странную вещь. А именно, создадим еще один "пустой" файл (я назвал его db2.mdb). В нем мы не будем хранить таблицы и, соответственно, хранящуюся в них информацию. Вместо этого, в разделе таблицы нажимаем на правую клавишу мыши и в появившемся меню выбираем пункт "Связь с таблицами..."

В появившемся окне находим наш первый файл db1.mdb, в котором мы создавали таблицы, и выбираем его. Появится меню, предлагающее выбрать таблицы, выделим все и нажмем ОК.

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


Зачем же такая вычурность?
Ответ довольно прост. Мы сделали некое подобие "клиент-серверных" отношений, разделив хранилище информации (файл db1.mdb) и файлы, с которыми будут работать пользователи (файл db2.mdb). Вы, наверное, уже догадались, что это позволяет повысить "выживаемость" основного файла. Кроме этого, если вы пожелаете работать с базой данных более, чем на одном компьютере, то лучшим решением будет объединение их в локальную сеть, где на одном будет храниться файл базы данных с таблицами, а остальные будут обращаться к нему по принципу связывания таблиц.
__________________
да никто не виноват, просто общество получает то здравоохранение, которое заслуживает
drPat вне форума
 
Ответить с цитированием Вверх
Эти 2 пользователя(ей) сказали cпасибо за это полезное сообщение:
Старый 12.04.2010, 19:54   #9
drPat
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию Re: БазаДанныхПАО

Акцесс в своем арсенале имеет множество мастеров, которые помогают работать с теми или иными объектами. К сожалению, как всегда мастера эти весьма толстолобы и чтобы организовать вразумительный диалог с ними, мы проведем некоторые подготовительные работы, которые кроме удачного взаимодействия с мастерами также будут способствовать лучшему восприятию базы данных сторонними специалистами... да и нам поможет в понимании баз данных.
Итак. Открыв файл базы данных (будем теперь работать во втором файле, а первый оставим лишь для информации), находим пункт меню Сервис->Схема данных...

Сначала сделаем, а в процессе станет понятно, что к чему... На пустом экране нажимаем правую клавишу мыши и выбираем пункт Добавить таблицу...

Чтобы не запутаться с первых шагов, сначала добавим лишь три из предложенных таблиц: tDoc, tDep, tDocDep

Далее, мы помним, что таблица tDocDep объединяет в себе информацию о врачах и тех структурах, в которых они работают. А именно, полю key в таблице tDoc соответствует поле tDoc в таблице tDocDep, а полю key таблицы tDep, соответствует поле tDep в таблице tDocDep. Расположим на экране таблицу tDocDep в центре, а две остальных с права и слева от нее.

Выберем пункт меню Связи->Изменить связь...

и в появившемся окне сначала нажмем НОВОЕ... а потом выберем соответствующие поля и таблицы. Для каждой пары tDoc-tDocDep и tDep-tDocDep будем выбирать пункт СОЗДАТЬ:

Т.е. мы установили связи для таблиц с врачами и отделениями и получили следующую картинку:

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

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

Последний раз редактировалось drPat; 12.04.2010 в 19:59..
drPat вне форума
 
Ответить с цитированием Вверх
Эти 2 пользователя(ей) сказали cпасибо за это полезное сообщение:
Старый 14.04.2010, 19:39   #10
drPat
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию Re: БазаДанныхПАО (делаем сами)

Все-таки продолжим, а именно, создадим простую форму для заполнения данных о сотрудниках патологоанатомического отделения (опять же будем идти от простого).
Выбираем раздел ФОРМЫ->СОЗДАНИЕ ФОРМЫ С ПОМОЩЬЮ МАСТЕРА

Выбираем таблицу tSotr и все поля в ней, а далее просто продолжаем выбирать ДАЛЕЕ, можете только разве что задержаться на пункте оформление.

Итог представлен на последнем скриншоте. Но не пугайтесь - мы не оставим это таким убожеством, а доведем вид до более или менее приличного. К сожалению, я не буду останавливаться на этом детально, поскольку графическое оформление - дело большое, но в то же время совершенно универсальное для всех офисных программ. Поэтому если Вам знакомы ворд, пауэрпоинт и прочие, то и здесь вы очень быстро освоитесь, а я лишь обращу внимание на некоторые обстоятельства. Если нет, то рекомендую эту часть прочитать в каких-нибудь руководствах. (например это - кстати, очень рекомендую это руководство для ознакомления с акцессом в целом, я именно с него и начал знакомство).
Вот так выглядит форма в режиме конструктора

Обращу ваше внимание на поле dol, которое содержит информацию о должности сотрудника. Чтобы оно выглядело более приятно, а не состояло из букв "В","Л","С" (те значения, которые мы задали базе данных) в настройках этого поля надо сделать следующие изменения

В итоге мы получим что-то вроде такого:

Справа осталось место, которое мы постепенно заполним кнопками, некоторые добавим прямо сейчас.

В итоге получим форму с набором кнопок: закрывающая форму, создающая новую запись, сохраняющая нынешнюю запись и переходы по записям вправо и влево.

В акцесс по умолчанию при переходе на другую запись имеющаяся в форме информация передается в базу данных, но если текст будет набран, а потом форму закроют без сохранения, то информация не сохранится.
файлы db1.mdb и db2.mdb
__________________
да никто не виноват, просто общество получает то здравоохранение, которое заслуживает

Последний раз редактировалось drPat; 15.04.2010 в 11:41..
drPat вне форума
 
Ответить с цитированием Вверх
Старый 17.04.2010, 14:54   #11
drPat
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию Re: БазаДанныхПАО (делаем сами)

Аналогичным образом создадим форму для внесения данных об обслуживаемых учреждениях


Это были относительно просты формы, которые обращались только лишь к одной таблицы и с их помощью мы либо вносили новые данные либо получали имеющиеся. Следующим этапом мы создадим нечто более сложное, а именно, форму, в которую будем вносить врачей, которые направляют на исследование в ПАО материал.
Начнем мы вот с чего. Мы создадим запрос, который будет извлекать данные из таблиц tDocDep и tDep, т.е. мы получим таблицу, в которой будет информация о врачах и отделениях, где они работают, но все, что будет известно о врачах - это их уникальный номер (tDoc.key - ключевое поле таблицы tDoc, которое, как вы помните, мы соотнесли с полем tDoc в таблице tDocDep)

Этот запрос я назвал qDocDep (q - query). После нажатия кнопки ГОТОВО, вы можете увидеть таблицу (скорее всего она будет пустая, если только вы для развлечения уже не заполнили базу какими-нибудь данными), в ней будет отражен первичный ключ из таблицы врачей и привязанные к каждому из врачей учреждения.
Далее идем в раздел формы и создаем две формы: одну совершенно формальную (извините за тавтологию) из нынешнего запроса qDocDep, а вторую так же как и в предыдущие разы из таблицы tDoc:

Но оставим внизу целую тонну места (так, как это показано на картинке выше) и выберем в конструкторе подчиненную форму. Далее будем следовать указаниям мастера, который предложит нам выбрать подчиненную форму из уже существующих, а мы и возьмем форму tDocDep:

Для надежности сами определим связь между таблицей врачей и имеющимся у нас запросом (подчиненная форма):

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

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

Последний раз редактировалось drPat; 17.04.2010 в 15:59..
drPat вне форума
 
Ответить с цитированием Вверх
Старый 18.04.2010, 13:26   #12
drPat
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию Re: БазаДанныхПАО (делаем сами)

Чтобы устанавливать связь между врачами и отделениями и не лазать при этом по куче таблиц, мы сделаем следующее: в форме, где содержится информация о врачах создадим кнопку по нажатии которой будет открываться другая форма, где можно будет выбрать учреждение и отделение, программно будем брать первичный ключ tDoc.key (врача) и первичный ключ выбранного учреждения и заносить эти данные в таблицу. Созданием этой самой формы с возможностью выбора отделения мы сейчас и займемся.
В ней нет ничего сложного в оформлении, поскольку сама по себе она не обращается ни к какой таблице, а просто содержит информацию о городах, больницах, отделениях. Поэтому создаем ее не как обычно на основании мастера, а просто выбираем пункт С помощью конструктора

Теперь зададим значения для каждого из полей со списком

Текст для вставки: SELECT DISTINCT city FROM tDep;
является запросом к базе данных, который говорит ей выбрать из таблицы tDep все значения поля city и при этом не показывать повторы (DISTINCT), поскольку мы ведь будем вводить для каждого отделения одну и ту же больницу и город, то повторов в таблице будет множество и работать с такой выборкой будет неудобно, а так.... если реально существует только один город, то только он и будет показан.

Текст для внесения в данный раздел:
Dim A As String
A = Me.city.Text
Me.clin.RowSource = "SELECT DISTINCT clin FROM tDep WHERE city = " & Chr(34) & A & Chr(34) & ";"
Его смысл заключается в том, что мы берем информацию из поля со списком city и помещаем ее в запрос к базе данных, а сам этот запрос делаем источником для поля со списоком clin. Т.е. в зависимости от того, какой город будет выбран, в поле учреждения буду только те, которые существуют в этом городе.
Схожую штуку вытворяем и с полем clin (т.е. мышь - правая клавиша - обработка событий - программы) и в появившемся вводим следующий текст
Dim B As String
Dim A As String

B = Me.clin.Text
A = Me.city.Value

Me.dep.RowSource = "SELECT DISTINCT dep FROM tDep WHERE city = " & Chr(34) & A & Chr(34) & " AND clin = " & Chr(34) & B & Chr(34) & ";"

Который отберет все отделения в данной больнице в данном городе
__________________
да никто не виноват, просто общество получает то здравоохранение, которое заслуживает

Последний раз редактировалось drPat; 18.04.2010 в 14:30..
drPat вне форума
 
Ответить с цитированием Вверх
Старый 18.04.2010, 20:20   #13
drPat
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию Re: БазаДанныхПАО (делаем сами)

В эту форму добавляем еще одну кнопку, которой не присваиваем никаких функций

Текст кода, помещенного для события CLICK, т.е. программа, которая будет запускаться при нажатии клавиши
'объявляем переменную для хранени инструкции запроса
Dim sSQL As String
'объявляем те переменные, которые нам понадобятся для хранения выбранных значений
Dim A As String
Dim B As String
Dim C As String
'присваиваем объвленным переменным выбранные пользователем значения в полях со списком при этом проверяем, выбрано ли в поле что-то
If Me.city.Value = "" Then MsgBox ("введите город")
A = Me.city.Value
If Me.clin.Value = "" Then MsgBox ("введите клинику")
B = Me.clin.Value
If Me.dep.Value = "" Then MsgBox ("введите отделение")
C = Me.dep.Value
'присваиваем переменной конкретное значение выполняемого запроса
sSQL = "SELECT key FROM tDep WHERE city = " & Chr(34) & A & Chr(34) & " AND clin = " & Chr(34) & B & Chr(34) & " AND dep = " & Chr(34) & C & Chr(34) & ";"
Dim D As Integer 'объявляем переменную, в которую будем сохранять полученный первичный ключ из таблицы отделений
'эта переменная получит значение из запроса
D = CurrentProject.Connection.Execute(sSQL).Fields(0)
Dim E As String
E = Forms.tDoc.key.Value 'этой переменной присвоим значение первичного ключа таблицы враче
'проверим, имеются ли уже такие записи, и если да, то выдадим сообщение об этом, а если нет, то внесем соответствующие изменения
If DCount("*", "tDocDep", "tDoc = " & E & " AND tDep = " & D) > 0 Then
MsgBox ("Этому врачу уже назначено данное отделение")
Else
sSQL = "INSERT INTO tDocDep VALUES (" & Chr(39) & E & Chr(39) & ", " & Chr(39) & D & Chr(39) & ");"
CurrentProject.Connection.Execute (sSQL)
MsgBox ("Информация добавлена")
End If
__________________
да никто не виноват, просто общество получает то здравоохранение, которое заслуживает
drPat вне форума
 
Ответить с цитированием Вверх
Старый 18.04.2010, 20:36   #14
drPat
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию Re: БазаДанныхПАО (делаем сами)

Теперь осталось добавить кнопку в форму tDoc, которая бы открывала в "живом" режиме форму, которую мы создали для поиска и внесения информации об отделении.

И сам файл (теперь только db2.mdb)
__________________
да никто не виноват, просто общество получает то здравоохранение, которое заслуживает
drPat вне форума
 
Ответить с цитированием Вверх
Старый 20.04.2010, 19:07   #15
drPat
ViP
 
Пол:Мужской
Регистрация: 10.01.2008
Сообщений: 109
Репутация: 285
По умолчанию Re: БазаДанныхПАО (делаем сами)

Идем дальше Теперь вся работа будет относительно сложной, но пусть вас это не пугает. Я создал следующую форму на основе таблицы tBiopsy

Обратите внимание, что в ней масса вкладок (для входящей информации, макроскопического описания, срочного исследования и заключения) - мой опыт подсказывает, что лучше именно так, поскольку в этом случае на экран помещается максимум информации и при этом возникает минимум раздражения со стороны пользователя программы. Кроме этого, в форме есть просто надписи "СРОЧНОЕ ИССЛЕДОВАНИЕ" и "ЗАКЛЮЧЕНИЕ ОТСУТСТВУЕТ" и поле, которое стилизовано под надпись. Остановлюсь на нем. Чтобы создать его, необходимо сначала создать простую надпись, что-то в ней написать, а потом, нажав правую клавишу мыши, выбрать опцию "преобразовать элемент в..." -> "поле", тогда ваше поле будет иметь преимущества поля, а внешний вид надписи (хотя можно было позаморачиваться с оформлением поле и привести его внешний вид к соответствующему для надписи). Далее в этом поле вводим текст следующего содержания:
="№ П/П " & [npp] & " " & [nom1] & "-" & [nom2] & "/" & Year([datIn]) & " " & [fio]
ничего сложного: все это значит, что значение данного поля равняется всем этим элементам, которые объединены знаком & и содержат либо текстовую информацию, заключенную в кавычки (например, "№ П/П" или " " - просто пробел) и значения конкретного поля (например, [npp] - значение поля npp, т.е. номер по порядку). Смысл текста Year([datIn]) означает, что необходимо из поля datIn (дата поступления) взять только год.
Кнопки "НОВАЯ ЗАПИСЬ" и "СОХРАНИТЬ" добавим аналогичным образом, как и ранее.

Далее нам постоянно придется лазать в редактор бейсика, чтобы вносить свои коды. Например..... добавим кнопку изменить, которая будет разрешать изменения в форме. Нужно это для того, чтобы избежать случайного удаления части записи.

Т.е. мы задали кнопке ИЗМЕНИТЬ только одну команду Forms.tBiopsy.AllowEdits = True, а именно разрешили изменения в этой форме, но перед этим по умолчанию поставили запрет на изменения в форме. При пользовании базой данных большим количеством человек и частом обращении - это оооооооочень актуально. Естественно, что в таблицы сотрудников или учреждений, вы не будете обращаться ежедневно и поэтому там мы не заморачивались такими вещами, но именно вам никто не мешает, запретить в тех формах изменения и разрешать их только по нажатии определенной клавиши. Для перестраховки поставим добавим запрет на изменения в программу кнопки СОХРАНИТЬ.

А именно: Forms.tBiopsy.AllowEdits = False
Теперь во всех полях дат (оставшихся, если помните, то дата поступления и так по умолчанию стоит сегодняшней датой) проставим одну функцию, которая существенно облегчает работу, а именно: при входе на поле, мы будем присваивать ему сегодняшнюю дату... именно при входе в поле, а не при открытии формы. Т.е. дата появится только тогда, когда курсор попадет в поле - опять же, опыт показывает, что это ну ооооооочень полезная феничка

Т.е. если при попадании курсора на данное поле его значение ничему не равно, то вставляется нынешняя дата, в противном случае - программа прекращается. Текст программы:
Private Sub datZ_Enter()
If Me.datZ.Text <> "" Then
Exit Sub
Else
datZ.Value = Date
End If
End Sub
Сразу же остановлюсь на одной важной (на мой взгляд функции): переход по Tab. Т.е....... в левой части клавиатуры у всех нас есть клавиша Tab (также отображаемая в форме двух встречных стрелок с ограничителями) - обычно располагается над CapsLock. Так вот, эта клавиша позволяет перемещаться по полям и это безумно удобно и экономно с точки зрения времени, когда ваши руки не отрываются от клавиатуры на мышь. Так вот, чтобы сделать эту клавишу еще более удобной, а именно по нажатии получать переход именно на то поле, которое нам нужно, следует сделать следующее:

Здесь вы можете выставить любую очередность. При этом, в свойствах полей и кнопок также надо проставить значение перехода по Tab. Обычно, я в кнопках предпочитаю ВЫключать эту функцию, а в полях ВКлючать.

Когда вы поработаете, то с легкостью настроите это свойство и очередность перехода именно под нужды своего отделения.
__________________
да никто не виноват, просто общество получает то здравоохранение, которое заслуживает

Последний раз редактировалось drPat; 20.04.2010 в 20:13..
drPat вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Журналы "Делаем сами" и проч. Fizzer Для домашнего мастера 121 24.01.2016 08:52
Делаем XP- терминалом (NEW) baltik Microsoft Windows 6 21.09.2007 17:35

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 16:10. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.24344 секунды с 11 запросами