|
не обновляется список
|
|||
---|---|---|---|
#18+
Pol123, С Новым Годом! Знали бы, как мне ужасно не хотелось этим заниматься... Тем более, макросы. Никогда их не делаю. Там нужно было на событие "текущая запись" сделать обновление списка анестезиологов. Поскольку у Вас кругом макросы, сделала тоже макросом. Посмотрите, что получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2018, 18:47 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
__Michelle, спасибо большое! БД получил, буду изучать. С Рождеством! С ув. Юрий ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2018, 18:19 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
__Michelle, особая благодарность за то, что обошлись макросом. Ибо, если в SQL я что-то хоть и отдаленно, но начал понимать, то в VBA точно ничего не пойму. С ув. Юрий ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2018, 00:04 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
__Michelle, БД посмотрел – идеально! И, как мне представляется, - очень элегантно, простым макросом ! Спасибо большое! Но у меня вновь просьба – помогите, пожалуйста, «управиться» с двумя взаимосвязанными полями (пример БД всего с двумя полями – во вложении). Задача: 1) Не должно быть пустых строк 2) Значение в поле только либо "Да", либо "Нет" 3) Не должно быть одинакового значения полей, т.е. если одно поле "Да", то другое обязательно "Нет" и наоборот. Что удалось: с помощью правила проверки (вкладка Данные в поле "НЕ основная..." этой формы) удается избежать как пустых строк, так и совпадения значений в полях Что НЕ получается: Access пропускает совпадение значений (оба поля - "Да" или оба поля - "Нет"), если после правильного введения значения в поле "НЕ основная ..." изменить значение поля "Основная..." и закрыть форму. Я попытался добавить макрос, чтобы после повторного выбора Да/Нет в поле "Основная..." фокус переходил бы в поле "НЕ основная...", но дальше ничего не получается. С ув. Юрий. PS Не стал идти только что пройденным с Вами путем, т.к. ограничен в количестве таблиц, в моей БД их много и не получится присоединить к таблице Операция еще таблицу для работы с вышеупомянутыми взаимосвязанными полями ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2018, 00:24 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
Pol123, кроме полей со списком есть другие элементы. может попробовать выключатель или группу переключателей? С праздником! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2018, 12:31 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
alecko, cпасибо за быструю помощь! Но, во-первых, это же - VBA, а я в нем ничего не понимаю. Во-вторых, че-то оно не работает: пробовал для новой записи – не вносятся Да/Нет. Но главное – нужен ввод данных «привычным» для всей БД методом, а именно – выбор из списка (в большинстве полей я так делаю для исключения ошибок ввода). Могу, конечно, как было с анестезиологами, создать 2 таблицы, в них выбирать Да/Нет, условие отбора и макрос в форме в строке Текущая запись… Но это же будет как-то не профессионально. Поэтому, если можно, помочь как-то с макросами или SQL, было бы замечательно. С ув. Юрий ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2018, 15:48 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
Pol123, извиняюсь, но так уж глубоко я не влазил - просто предложил не париться с одинаково разными полями со списком, потому дальше и нету ничего-(в этом примере и нету больше ничего) - в группе переключателей кода нет совсем (он создан при помощи мастера). значение сохраняется в группе (1 ли 2) (или переключателе (0 или -1)) - дальше уже обрабатываете эти значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2018, 18:22 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
Pol123, Пришлось сначала переделать эти поля с текстовых на логические. Кроме того, в таблицу добавлено новое логическое поле - рекомендую использовать именно его вместо Ваших двух. В форме сделала для ознакомления четыре варианта. С макросами, с VBA и еще два варианта для единственного поля. Там все подписано, надеюсь, разберетесь. С макросами вышло какое-то убожество. Пришлось сначала подготовить два вспомогательных запроса. А также не удалось избавиться от подтверждающих сообщений. Могу их отключать только в VBA, или же в настройках всего приложения в целом. Но здесь ни тот, ни другой вариант не подходит. Бросайте Вы эти макросы, пока не поздно. Одни мучения, не оправданные результатом. И два поля для Вашей цели не нужны. Зачем фактически одно и то же заносить дважды, да еще заботиться о непротиворечивости. Посмотрите, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2018, 01:41 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
__Michelle, спасибо большое! Просмотрел. Колоссальная работа! Вы правы - правильнее, конечно, не использовать 2 поля. Правильным мне представляется Ваш вариант с одним полем и с переключателями (с VBA, возможно, и лучше, но я не владею VBA никак). Я ведь почему так усложнил задачу? По незнанию и по неопытности. Я в начале пошел по самому простому пути - создал одно поле со списком (Да/Нет), но увидел, что высок риск того, что оператор, выбирая из Да/Нет, может допустить ошибку ввода (Да вместо Нет и наоборот), особенно, если учесть, что вводить будет стараться быстро, а строчки "Да" и "Нет" при выборе из списка расположены близко друг от друга. А важность поля "Основная/НЕосновная" в моей БД очень значима для вычислений. Ваш вариант с переключателями позволяет: 1) снизить риск ошибки выбора между "Да" и "Нет" за счет того, что переключатели расположить можно подальше друг от друга, 2) экономить усилия - 1 поле вместо 2-х. Спасибо большое! Сейчас буду пробовать реализовать это. Но есть вопрос об исключении повторов - как можно сделать так, чтобы нельзя было бы ввести для одного пациента 2 операции с типом "Основная"? НЕ основных у одного пациента может быть несколько. Я использовал для этой цели создание уникальных индексов в таблицах (таблица-режим конструктора-конструктор-индексы). Но как это сделать с логическим полем "Основная/НЕосновная" не представляю. Для удобства создал БД, она – в приложении. С ув. Юрий ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2018, 15:00 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
__Michelle, попробовал создать группу переключателей в уже знакомом Вам примере, но не все у меня работает. В форме при создании новой записи нажатие на переключатель "Основная" (когда активен именно переключатель "Основная") не приводит к введению данных в поле. Но стоит нажать "Не основная" (не активный) и данные "Не основная" нормально вводятся. И если далее нажать на переключатель "Основная", данные "Основная" нормально введутся в поле. Вопрос: что изменить, чтобы при открытии формы и/или создании в форме новой записи (когда активен именно переключатель "Основная") нажатие на переключатель "Основная" вводило бы в поле данные "Основная"? Чтобы не нужно было кликать на "Не основная", а затем - на "Основная". Создавал, вроде, правильно,- по текстовым и видео-инструкциям из интернета. В таблице поле - короткий текст (ведь там должно быть "Основная/Неосновная"?), в форме - поле преобразовал в поле со списком, далее - конструктор, группа переключателей, 1-основная, 2-не основная, сохранять в поле "ОперОснНеосн". Св-ва Поля "ОперОснНеосн": Макет: столбцов 2, ширина 0 ; Данные: ОперОснНеосн, тип источника строк Список Значений, Источник строк 1;основная;2;не основная. Переключатель 1: Данные: значение параметра 1. Переключатель 13: Данные: значение параметра 2. Заранее благодарен. С ув. Юрий. PS В приложении – простой пример БД для удобства понимания того, что я написал ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2018, 21:51 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
1. Поле ОперОснНеосн Вы переделали из логического в текстовое. Зря. Вернула обратно. 2. Слово "неосновная" Вы исправили на "не основная". Зря. В данном случае это пишется слитно. Вернула обратно. 3. В таблицу Операция добавила новое поле КодПациента. Как без него собирались отслеживать единственность основной операции для пациента? 4. В форме поле Основная/Неосновная теперь не поле со списком (зачем, ведь выбор в нем не делается?). 5. Для ОперОснНеосн значение по умолчанию в форме и таблице - "неосновная". 6. В форме добавлено условие на значение для ОперОснНеосн. При попытке ошибочно пометить операцию как Основная выдается сообщение: "У этого пациента уже есть ОСНОВНАЯ операция". ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2018, 16:51 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
__Michelle, Спасибо большое за помощь и детально расписанный алгоритм! Особенно благодарен Вам за наличие полей с текстом «основная/неосновная» - мне это нужно для запросов, где «основная» или «неосновная» будут условием отбора (боялся, что отбирать с логическим полем не смогу). Спасибо Вам и за то, что Ваш вариант исключения повторов не требует создания индекса в таблице «Операция», а значит я могу при необходимости добавить в БД еще одну таблицу, связанную с таблицей «Операция». Сейчас разбираюсь, как это работает с добавленной таблицей «Пациент». Вроде работает. Попробую теперь реализовать в своей БД. С ув. Юрий ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 01:23 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
Pol123...Особенно благодарен Вам за наличие полей с текстом «основная/неосновная» - мне это нужно для запросов, где «основная» или «неосновная» будут условием отбора (боялся, что отбирать с логическим полем не смогу).....Все-таки придется отбирать с логическим полем. Текст «основная/неосновная» - это мираж, иллюзия (специально для Вас сделано, для показа: посмотрите для этого поля вкладку Подстановка в конструкторе таблиц, и лучше сразу поменяйте на флажок), на самом деле там True (Истина) вместо «основная» и False (Ложь) для «неосновная». Так и отбирать будете, ничего сложного: WHERE ОперОснНеосн - если нужны «основные», или WHERE Not ОперОснНеосн - если нужны «неосновные» ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 01:58 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
__Michelle, ОК, спасибо! Буду пробовать. С ув. Юрий ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 11:11 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
__Michelle, есть несколько вопросов: 1) откуда берется символ W в названии поля ОперОснНеосн_W (в свойствах поля во вкладке "Данные" присутствует ОперОснНеосн, а во вкладке "Другие" - ОперОснНеосн_W)? Как я понимаю, вкладка "Другие" служит для того, чтобы можно было произвольно изменять название поля для работы с данными полей формы. Вы сами присвоили название для ОперОснНеосн с символом W (поскольку это вкладка "Другие")? Если Да, тогда для чего этот символ и почему именно W? Если Нет, тогда откуда возникает этот W? Когда я создаю группу переключателей, такой символ нигде не появляется. 2) Почему в свойствах переключателей (переключатель 11 и переключатель 13) в строке "значение параметра", как я понимаю, Вы изменяете значение на "-1" и "0"? Когда я создаю группу переключателей мастер предлагает 1 и 2, но не -1 и 0 ? Какой-то же "прикол " в этом есть? Спасибо. С ув. Юрий ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 11:31 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
Pol123Как я понимаю, вкладка "Другие" служит для того, чтобы можно было произвольно изменять название поля для работы с данными полей формы.Для изменения имени элемента управления используется свойство Name (Имя). Находится это свойство на вкладке Другие (свойства, не вошедшие в рубрики Макет, Данные, События). Pol1231) откуда берется символ W в названии поля ОперОснНеосн_W (в свойствах поля во вкладке "Данные" присутствует ОперОснНеосн, а во вкладке "Другие" - ОперОснНеосн_W)? Вы сами присвоили название для ОперОснНеосн с символом W (поскольку это вкладка "Другие")? Если Да, тогда для чего этот символ и почему именно W? Если Нет, тогда откуда возникает этот W? Когда я создаю группу переключателей, такой символ нигде не появляется.Сама присвоила. Чтобы отличить от имени группы переключателей. W потому, что это поле - по сути дубликат еще одного контрола (группы переключателей), связанного с полем таблицы ОперОснНеосн. Мне так удобнее именовать, такая система у меня выработалась. Pol1232) Почему в свойствах переключателей (переключатель 11 и переключатель 13) в строке "значение параметра", как я понимаю, Вы изменяете значение на "-1" и "0"? Когда я создаю группу переключателей мастер предлагает 1 и 2, но не -1 и 0 ? Какой-то же "прикол " в этом есть?Значение выбранного переключателя присваивается полю ОперОснНеосн, а это логическое поле, может принимать только True/False, другими словами, -1/0. В этом и прикол: присвоили -1 - получили True, присвоили 0 - получили False. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 14:37 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
__Michelle, спасибо большое! Буду воплощать. С ув. Юрий ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 15:29 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
__Michelle, появилась просьба: как в последнем Вашем примере сделать так, чтобы при создании новой записи (операции) в форме "Операция" в поле Основная/неосновная не появлялась по умолчанию «неосновная», а появлялось бы пустое поле, и оператор понимал бы, что нужно выбирать «основная» или «неосновная»? Если пустое начальное поле у Вас не получится, тогда можно сделать, чтобы по умолчанию появлялась бы «основная». Это нужно для уменьшения риска не отметить основную операцию. Ведь если по невнимательности оператор не сделал выбор (поле-то уже заполнено) и для основной операции введется «неосновная», эта ошибка уже не будет в дальнейшем замечена, т.к. неосновных может быть сколько угодно, и этот пациент будет без основной операции. А если в этом поле по умолчанию «висит» «основная», тогда если по невнимательности оператор для неосновной ошибочно введет «основная», эта ошибка проявится при заполнении формы для следующей операции, т.к. «основная» по умолчанию для нее выдаст ошибку (две основных быть не может) и оператор поймет, что где-то в предыдущей записи ошибся. С ув. Юрий ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 03:44 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
__Michelle, А не могли бы Вы прокомментировать созданное Вами правило проверки IIf ( DSum ( "КодПациента=" & [КодПациента] & " AND ОперОснНеосн";"Операция")=-1;Ложь;Истина Or Ложь) ? Я сам пробую создавать простые правила с помощью агрегатных функций, но Ваш пример для меня какой-то сложный. Глобально (интуитивно) я представляю, что правило «звучит» примерно след образом: если результат сложений у пациента по всем операциям по полю ОперОснНеосн таблицы Операция (а в полях может быть либо 0 (ложь/неосновная), либо -1 (истина/основная)) дает 0, значит все операции отмечены, как неосновные, и правило такое положение вещей не «пресекает» (считает Истиной), а если хоть одна запись в таблице уже содержит -1 (т.е. «основная» уже для какой-то операции этого пациента введена), тогда правило «говорит»: «Ложь» и не дает дальше вводить данные. Но вот что мне не понятно: в DSum на первом месте, вроде, должно стоять поле, по которому идет суммирование, и имя этого поле берется в кавычки. Но в Вашем примере на первом месте указано поле КодПациента, хотя оно не в кавычках, и, вроде, является частью условия ("КодПациента=" & [КодПациента]), указывающего, что форма должна оценивать того пациента, код которого в настоящий момент «светится» в форме в поле [КодПациента]. Но условие же должно стоять на третьем месте, а не на первом? Я в смятении. А если вычисления идут по полю ОперОснНеосн, так оно не в кавычках, и не на первом месте, и такое ощущение, что это поле является частью какого-то условия после оператора AND. Касательно действия правила при результате -1 : почему правило не «срабатывает» при первом введении -1? Из-за изменения названия поля (ОперОснНеосн_W в форме, и ОперОснНеосн в таблице)? И пока -1 находится в поле формы и еще не сохранено в таблице, правило -1 не видит, а стоит «-1» появиться (после сохранения) в таблице, правило начинает -1 видеть и на него реагировать? А как тогда при сохраненном значении -1 ввести 0? Ведь -1 и 0 дают -1, а правило при -1 дает Ложь и должно «пресекать» ввод данных? Или не так? И еще. Почему второе возвращаемое значение функции IIF (третий аргумент), если результат функции DSum не «-1», не только Истина, но Истина OR ложь? С ув. Юрий. PS В подтверждение того, что я таки работаю с функциями, а не проявляю праздное любопытство, привожу свой пример для другого поля. Возможно, смотрится коряво, но почему-то работает Nz([Формы]![ИсторияБолезни]![ДатаВыписИстор];[ОперацияНачало_поле])-(IIf(Nz([Формы]![ИсторияБолезни]![ДатаВыписИстор];0)=0;[ОперацияНачало_поле];[ОперацияНачало_поле]))>=0 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 03:46 |
|
не обновляется список
|
|||
---|---|---|---|
#18+
Pol123, 1. Мои возможности по укрощению макросов исчерпаны, поэтому сделала с применением VBA. Код там простейший, не пугайтесь. Теперь условия на значение нет, поскольку переключатель Основная (называется ОперОснНеосн_True) будет доступен только в том случае, если у пациента пока нет основной операции. Переключатель Неосновная (называется ОперОснНеосн_False) доступен всегда. Кроме того, пока не заполнено поле Пациент, группа переключателей в целом будет недоступна. 2. Pol123не могли бы Вы прокомментировать созданное Вами правило проверки IIf(DSum("КодПациента=" & [КодПациента] & " AND ОперОснНеосн";"Операция")=-1;Ложь;Истина Or Ложь) ? Условие на значение для ОперОснНеосн, оно предписывает, какое введенное значение не будет отвергнуто. Сейчас это условие на значение уже не используется (см. п. 1), но объясню. Выражение в целом означает, что при выполнении условия DSum("КодПациента=" & [КодПациента] & " AND ОперОснНеосн";"Операция")=-1 то есть, если Основная операция уже есть, допустимым значением для ОперОснНеосн будет только False (Ложь), только Неосновная операция. Если же указанное условие не выполняется, то есть Основной операции у пациента пока нет, то для ОперОснНеосн допустимым значением является и False (Ложь) и True (Истина), как Основная, так и Неосновная операция. Теперь про условие DSum("КодПациента=" & [КодПациента] & " AND ОперОснНеосн";"Операция")=-1 Проверяется сумма, где слагаемые - результат выполнения логической операции сравнения "КодПациента=" & [КодПациента] & " AND ОперОснНеосн", "код .пациента равен заданному и значение поля ОперОснНеосн равно True". Если такая запись в таблице Операция нашлась, DSum(...)=-1, это и проверяем. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 16:30 |
|
|
start [/forum/topic.php?fid=45&msg=39584576&tid=1611794]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 275ms |
total: | 436ms |
0 / 0 |