Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Access VBA

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 61 62 63 64 65 66 67 68

Открыть новую тему     Написать ответ в эту тему

Guest

BANNED
Редактировать | Цитировать | Сообщить модератору
   
 
Обсуждаем вопросы только по Access VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.

 

NB! Дублирующая тема VBA for Access закрыта во избежание путаницы. Оставлена эта, как более ранняя и имеющая больше сообщений.

Смежные темы:
Помощь в создании SQL-запросов: SQL запрос
Программы » Microsoft Office 2019 & 365 | 2016 | 2013 | 2010 | 2007 | 2003
Программы » OneNote | Outlook 2013 & 2016 & 2019 | Outlook 2010 | Microsoft Mathematics & Math Solver
Программы » Word FAQ | Excel FAQ | Access FAQ
Прикладное программирование » Word VBA | Excel VBA
Андеграунд » Microsoft Office 2019 | 2016 | 2013 | 2010 | 2007 | 2003
Андеграунд » OneNote | Visio | SharePoint Server | Project Server | Exchange Server
Андеграунд » Надстройки (add-ins) и коммерческие макросы Excel
Андеграунд » Самостоятельная сборка дистрибутивов Оffice 2007/2010/2013/2016 | MUI для Office 2007
----------
Как в Access перместить запись из одной таблицы в другую (допустим по нажатию кнопки на форме)?

Отправлено: 18:31 05-09-2002 | Исправлено: ALeXkRU, 17:14 03-08-2021
agro

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Algofil
спасибо за внимание к просьбе
но наверное я не так как-то объяснил и получил не совсем то что хотел

Цитата:
1. итак, несколько жалоб из списка + возможно, жалобы которых нет в списке, так?  
тада поле типа МЕМО, в ём подстановку ниасилил, т.е. визуальными средствами.  

 
в поле мемо должны попадать несколько жалоб из списка т.е. есть таб 2 которая является перечислением стандартных жалоб и только из этого списка и нужно создать строку:
таб 2                                таб1
ID     name                       ID    фио         искомое поле МЕМО- жалобы  
1       температура             1      пупкин    температура, жжение, боль.
2       боль
3       жжение
4       зуд
и тд.
 
у пупкина в форме для заполнения таб 1 (которая изображает его визит ко мне ) нужно парой щелчков мышки обозначить все его текущие жалобы
 

Цитата:
(т.е. я догадываюсь что это не жалобы, но я ж не дохтур)  

ну таким образом в карте больного будут работать не только жалобы
 

Цитата:
6. осталось наклацать запрос который тупо объединит все жалобные поля из одной записи в одно поле. кажется аксес не любит НУЛЛ строк, надо бы подстраховаться

во-во наклацать запрос то и не получается
 
с уважением Евгений

Всего записей: 18 | Зарегистр. 12-02-2006 | Отправлено: 11:38 25-09-2007
Algofil



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
счас откроем аксес, смотрим...
1. новая база
2. создание таблицы в реж конструктор. Таб1, Таб2
3. Таб1:
ИД - счетчик, ключ
Ф - текст
И - текст
О - текст
ж1 - текст, подстановка как описано выше без провязки катит, ессно сперва надо слабать Таб2 чтоп было на что тыцять
дальше накопировал ж2..ж4
жалобы - МЕМО
 
Таб2:
ИД - счетчик, ключ
жалоба - текст
 
4. заполнил Таб2, потом Таб1 - срачка, пердячка и сушняк достались васе пупкину
5. пишу запрос в конструкторе, добавить таб1, тип запроса ставлю - обновление, поле жалобы буим обновлять - клацаю, от руки вписываю в строку Обновление:
ж1+", "+ж2+", "+ж3+", "+ж4, жму Ф8 - нихрена... упс это не орацл, тыцяю на воскл знак, обещает поновить 2 записи (пупкина и васькина) - ОК
6. сморим результат - фигня, вместо срачки и пердячки "ж1, ж2, ж3, ж4"
7. вносим изменения по вкусу аксеса, т.е. имена в квадратные скобки:  
[ж1]+", "+[ж2]+", "+[ж3]+", "+[ж4]
клацаем на воскл знак - опять предупреждение, ок, сморим результат - пусто йопт
8. вспоминаем что аксес не любит нулл полей, в идеале поставить iif - но лень, можно потребовать заполнять все четыре поля ж, ваще тупо, убираю из запроса ж3 и ж4 - работает
 
пробуйте, доктор!
 

Всего записей: 247 | Зарегистр. 19-09-2007 | Отправлено: 12:06 25-09-2007
agro

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вы создали 4 поля жалоб я так понял?
 
но реальный список у меня гораздо больше при одном только кариесе 70% людей с помощью врача не напрягаясь наковыряют 5-7, 2-3 у каждого будут отличаться итого около 10+ если в книгу залезть ещё 4-5 найдём; умножаем на 3 как минимум и это список который нужно заставить работать ((((
 
уже 3 день колупаю этот раздел знаний
 
спасибо вам Algofil ну хоть за участие )))

Всего записей: 18 | Зарегистр. 12-02-2006 | Отправлено: 02:24 26-09-2007
Algofil



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
1. вы создали 4 поля жалоб я так понял?  
 
2. но реальный список у меня гораздо больше при одном только кариесе 70% людей с помощью врача не напрягаясь наковыряют 5-7, 2-3 у каждого будут отличаться итого около 10+ если в книгу залезть ещё 4-5 найдём;
3. умножаем на 3 как минимум и это список который нужно заставить работать ((((  
 
4. уже 3 день колупаю этот раздел знаний  
 
5. спасибо вам Algofil ну хоть за участие )))

1. это проба пера, чтоп понятно, копировать было лень, но можно и 44 поля, они одинаковы...
2. реальный список жалоб, т.е. таб2 необходимо пополнять, просто сканируя (запрос на добавление в таб2) поля ж1..ж10 в таб1, на предмет нахождения там жалоб отсуствующих (пока что) в таб2
3. то что у больных жалобы отличаются, эт намано, прямого отношения количество жалоб на лицо больного населения к длинне списка жалоб (таб2) не имеет (ну рази шо запретить больным по два-три раза вкручивать врачу одну и ту же жалобу за визит)следовательно умножать ниче не надо, главное определиться сколько максимум жалоб у одного больного за одно посещение, это и будет количеством полей ж1..жХ в таб1
4. БД, предложенная мной имеет мегакривущую структуру, но мы ж хотели быстро и понятно? сэкономили на проектировании так сказать, но главное работает, а красоту навести - дело житейское, 3 дней малавата будет... почитайте ченить по проектированию БД, и конкретно по аксесу...
нормализованный (т.е. хороший) вариант хранить все заявленные жалобы в отдельной таблице (и не называйте таблицы по умолчанию Таблица1 и т.д., во первых квадратные скобки в латинской раскладке, во вторых... да достаточно и во первых)  
например complaint_list со структурой типа:
id - счетчик, обеспечит уникальность записи
visit - уникальный номер записи о посещении, позволит привязаться к таблице visit_list, а уж в ней и ФИО (хотя лучше регистрить всех больных в таблице patient_list, тада в списке визитов будет только уникальный номер пациента и если у него изменятся регистрационные данные, например фамилия, адрес или хз еще что, в списке визитов он легко отыщется), дата визита и мало ли что еще...
complaint - конкретно одна жалоба, точнее ея код из таблицы2 (например complaint_ref) т.е. если у пациента №213 во время визита №1564 было 3 жалобы то будет ровно три записи, ниче лишнего...
5. не за что, Ваш энтузазизьм вызывает наш респект, обычно докторам настолько некогда изучать что либо, что как максимум тиражируют эпикризы в ворде, хорошо если особо продвинутые заводят отдельные папки для доков, а не хранят в документс_энд_сеттингс, где все обычно накрывается епанчой при первом же вмешательстве саппорта.  
 
Попробуйте http://www.firststeps.ru/vba/access/vbaaccess1.html - пошаговая стратегия ))

Всего записей: 247 | Зарегистр. 19-09-2007 | Отправлено: 10:21 26-09-2007
trabelsi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня вопрос вот какой: есть база, есть главная таблица, есть форма. В данной форме происходит расчет, резултат отображается в поле (в свойствах данного поля в строке данные указана математическая операция результат, которой и отображается) и нужно чтобы полученные в этом поле данные добавлялись в главную таблицу. Если это уже где-то было, то не ругайтесь или вопрос тупой, то я пока еще учусь и просьба подсказать и если можно поподробнее.

Всего записей: 40 | Зарегистр. 21-09-2007 | Отправлено: 16:08 26-09-2007
Algofil



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
1. У меня вопрос вот какой: есть база, есть главная таблица, есть форма.
2. В данной форме происходит расчет, резултат отображается в поле (в свойствах данного поля в строке данные указана математическая операция результат, которой и отображается)
3. и нужно чтобы полученные в этом поле данные добавлялись в главную таблицу.
4. Если это уже где-то было, то не ругайтесь или вопрос тупой, то я пока еще учусь и просьба подсказать и если можно поподробнее.

1. базу не Вы делали? если все работает - ничего не трогать! )))
2. Замечательно! Редко встретишь такой грамотный подход к расчетам
3. а вот этого, извините, не нужно, таблицы БД не предназначены для хранения расчетных данных, вполне достаточно если расчеты базирующиеся на фактических данных отражаются на формах и в отчетах. Пример:
я сопровождаю БД металлургического предприятия, в справочнике (таблице) ресурсов около 100 000 записей, если для каждой номенклатурной единицы хранить не только марку сплава и геометрические размеры, но и (допустим) плотность сплава и массу изделия, то при изменении каких либо параметров, зависящие от них значения могут не обновиться в некоторых/во всех записях, таким образом на форме будет одно значение массы, а в таблице другое.  
И вообще крайне нежелательно менять структуру таблиц на этапе эксплуатации, ведь на форме результат расчета виден? хотите зафиксировать его? печатайте отчет и прикладывайте мокрую печать, а захотите хранить в таблице - будет геморрой не тока с обновлением (в аксесе ведь нет триггеров) но и с историей значений (типа - а вчера было не так!)
4. см. сцылу "первые шаги" выше

Всего записей: 247 | Зарегистр. 19-09-2007 | Отправлено: 16:32 26-09-2007
trabelsi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Цитата:
. базу не Вы делали? если все работает - ничего не трогать! )))  
2. Замечательно! Редко встретишь такой грамотный подход к расчетам  
3. а вот этого, извините, не нужно, таблицы БД не предназначены для хранения расчетных данных, вполне достаточно если расчеты базирующиеся на фактических данных отражаются на формах и в отчетах. Пример:  
я сопровождаю БД металлургического предприятия, в справочнике (таблице) ресурсов около 100 000 записей, если для каждой номенклатурной единицы хранить не только марку сплава и геометрические размеры, но и (допустим) плотность сплава и массу изделия, то при изменении каких либо параметров, зависящие от них значения могут не обновиться в некоторых/во всех записях, таким образом на форме будет одно значение массы, а в таблице другое.  
И вообще крайне нежелательно менять структуру таблиц на этапе эксплуатации, ведь на форме результат расчета виден? хотите зафиксировать его? печатайте отчет и прикладывайте мокрую печать, а захотите хранить в таблице - будет геморрой не тока с обновлением (в аксесе ведь нет триггеров) но и с историей значений (типа - а вчера было не так!)  
4. см. сцылу "первые шаги" выше

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

Всего записей: 40 | Зарегистр. 21-09-2007 | Отправлено: 16:39 26-09-2007
Algofil



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ценная информация - завести таблицу привязанную к пациентам, типа такой:

Цитата:
например complaint_list со структурой типа:  
id - счетчик, обеспечит уникальность записи  
visit - уникальный номер записи о посещении, позволит привязаться к таблице visit_list, а уж в ней и ФИО (хотя лучше регистрить всех больных в таблице patient_list, тада в списке визитов будет только уникальный номер пациента и если у него изменятся регистрационные данные, например фамилия, адрес или хз еще что, в списке визитов он легко отыщется), дата визита и мало ли что еще...  
complaint - конкретно одна жалоба, точнее ея код из таблицы2 (например complaint_ref) т.е. если у пациента №213 во время визита №1564 было 3 жалобы то будет ровно три записи, ниче лишнего...

но и в этом случае порекомендовал бы хранить в полях этой таблицы, только необходимые для расчетов величины

Всего записей: 247 | Зарегистр. 19-09-2007 | Отправлено: 16:43 26-09-2007
trabelsi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
ценная информация - завести таблицу привязанную к пациентам, типа такой:  
 
Цитата:например complaint_list со структурой типа:  
id - счетчик, обеспечит уникальность записи  
visit - уникальный номер записи о посещении, позволит привязаться к таблице visit_list, а уж в ней и ФИО (хотя лучше регистрить всех больных в таблице patient_list, тада в списке визитов будет только уникальный номер пациента и если у него изменятся регистрационные данные, например фамилия, адрес или хз еще что, в списке визитов он легко отыщется), дата визита и мало ли что еще...  
complaint - конкретно одна жалоба, точнее ея код из таблицы2 (например complaint_ref) т.е. если у пациента №213 во время визита №1564 было 3 жалобы то будет ровно три записи, ниче лишнего...  
 
 
но и в этом случае порекомендовал бы хранить в полях этой таблицы, только необходимые для расчетов величины

Может я не понимаю, может объяснить не могу. Вообщем пришел пациент ему делают рентген  при этом расчет идет по четырем полям: напряжение (она постоянная и указана по умолчанию)*ток (аналогично)*время(должен вводить врач)*коэффициент облучения (выбирается из списка в соответствии с зубом) и произведение выводится в четвертом поле, данные которого необходимо всегда иметь для каждого пациента (для прохождения лицензирования и всяких проверок). Можно конечно все это дело отправить и другую таблицу, но зачем у меня и эта пустая - вы мне скажите как и сделаю, как скажете

Всего записей: 40 | Зарегистр. 21-09-2007 | Отправлено: 16:54 26-09-2007
Algofil



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
хранить в главной таблице для каждой записи значения: время и коэффициент облучения, доза будет каждый раз пересчитываться по текущим данным и отображаться на формах, в отчетах и т.п. в том числе при необходимости суммироваться по всем записям для данного пациента, т.о. когда Вы исправите (например ошибочно выбранный коэф для зуба) доза автоматически поменяется во время последующих расчетов, ну или пишите запрос на обновление если уж так хочется иметь поле со статической записью дозы. Запросы - создание запроса в реж конструктора - Ваша таблица - тип запроса (слева от воскл знака) - на обновление - в поле обновление пишите Вашу формулу. Не забудьте сохранить запрос с нормальным именем, потом легче искать. Удачи.

Всего записей: 247 | Зарегистр. 19-09-2007 | Отправлено: 17:25 26-09-2007
trabelsi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

Пробллема в том, что обновляются-то все записи, а необходимо только последняя.
Извиняюсь, если туплю.

Всего записей: 40 | Зарегистр. 21-09-2007 | Отправлено: 18:44 26-09-2007
agro

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а вообще,уважаемый коллега trabelsi,
 за нас уже всё сделали )))) и продают есть по 50 б
а есть и дороже не мучайтесь лучше купить
 

Всего записей: 18 | Зарегистр. 12-02-2006 | Отправлено: 23:34 26-09-2007
Algofil



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
agro - аха, Стоматология - фулл аксесс!
самому разве не интересно?
trabelsi, а почему обновление всех записей проблема? двойная бухгалтерия? шучу, мне все равно, если хотите можем считать что 2х2=7, но только чтоб не было противоречий в БД ))
как избежать обновления всех записей:
1. не хранить расчетные величины а считать и выводить их по факту обращения к записи (:||||: - боянЪ)
2. хранить историю расчетов в отдельной таблице (://///: - тож боянЪ, но кривоватый)
3. в запросе на обновление поюзать сортировку по времени и групповые операции, типа первая, последняя запись и т.п. (свежее решение, но по сути мегакривой костыль)
 

Всего записей: 247 | Зарегистр. 19-09-2007 | Отправлено: 09:29 27-09-2007
trabelsi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
попробовал на обновление с сортировкой, но когда данные берутся из формы он обновляет запись, но поле попрежнему не заполняется, а при запуске непосредственно самого запроса все нормально. Кстати данные необходимо чтобы он брал из полей формы может быть поэтому он и не работает, как решить эту проблему, а то ведь с работы скоро уже выгонят

Всего записей: 40 | Зарегистр. 21-09-2007 | Отправлено: 10:24 27-09-2007
Algofil



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
1. попробовал на обновление с сортировкой, но когда данные берутся из формы он обновляет запись, но поле попрежнему не заполняется, а при запуске непосредственно самого запроса все нормально. Кстати данные необходимо чтобы он брал из полей формы может быть поэтому он и не работает, как решить эту проблему,
2. а то ведь с работы скоро уже выгонят

1. полях формы данные существуют независимо от полей таблицы?
я не имею в виду процесс редактирования поля. т.е. после снятия фокуса с поля формы в поле таблице ченить появляется?
если в таблице все появляется, запускайте пока запрос на обновление вручную, потом придумаете кнопу на форме, потом макрос, потом модуль на ВБА
 
2. ну-ну... на крайняк по .мдб файлу погадаем )))

Всего записей: 247 | Зарегистр. 19-09-2007 | Отправлено: 12:37 27-09-2007
trabelsi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
нет, не появляется. делал на форме кнопку вызов запроса (запрос к полям формы в двух из них значение стоит по умолчанию в третьем вручную должны вводить врачи, а в третьем выбираем значение из списка в соответствии с необходимым зубом) в пятом поле все это перемножается, а в таблицу к пациенту данное число не добавляется, хотя пишет, что обновляет одну запись. А если запускать запрос вручную, то необходимо заполнить поочередно все поля и потом он только добавит произведение к пациенту. То есть видимо он может взять значения из полей - я так думаю

Всего записей: 40 | Зарегистр. 21-09-2007 | Отправлено: 12:56 27-09-2007
Algofil



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
1. делал на форме кнопку вызов запроса (запрос к полям формы в двух из них значение стоит по умолчанию в третьем вручную должны вводить врачи, а в третьем выбираем значение из списка в соответствии с необходимым зубом) в пятом поле все это перемножается, а в таблицу к пациенту данное число не добавляется, хотя пишет, что обновляет одну запись.
2. А если запускать запрос вручную, то необходимо заполнить поочередно все поля и потом он только добавит произведение к пациенту.
3. То есть видимо он может взять значения из полей - я так думаю

1. значения по умолчанию (2 штуки) - можно просто пробить в формулу расчета, ввод данных в два поля, пофигу как список/вручную надо делать на форме, а вот с расчетным полем вилы - по ходу аксес показывая расчетное значение на форме "не видит" его запросом потому что данные из всех полей попадают в таблицу только при переходе на след запись, т.е. он её обновляет, но как?
2. запрос работает после заполнения, - гут! чтобы не запускать вручную повесить на кнопу макрос с запросом на обновление предыдущего поля (жуть какие костыли приходится изобретать) там то уже все данные есть
3. может конечно, но из полей в таблице - формы и отчеты ваще фикции имхо, вполне достаточно результатов SQL-запросов )))

Всего записей: 247 | Зарегистр. 19-09-2007 | Отправлено: 13:14 27-09-2007
trabelsi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пробовал и обновление и следующую запись, но опять же ничего. Как сделать так, чтобы он (запрос) видил эти значения в полях формы? может макрос какой-нить можно создать? или еще что-нить

Всего записей: 40 | Зарегистр. 21-09-2007 | Отправлено: 14:09 27-09-2007
agro

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Algofil
интересно
 только база у меня получается "мега кривая" как вы выражаетесь ))))
а ещё всё это работает но только для себя
когда за базу берётся др чел то увы.... там начинаются проблемы (на пример пробовал обьяснить как это заполнять мед.сестре.... ну дальше всё понятно?)
 

Всего записей: 18 | Зарегистр. 12-02-2006 | Отправлено: 00:43 28-09-2007
trabelsi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем спасибо! наконец-то сделал.

Всего записей: 40 | Зарегистр. 21-09-2007 | Отправлено: 14:35 28-09-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 61 62 63 64 65 66 67 68

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Access VBA


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru