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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
jONES1979



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KIP4 И переменные, и функции надо сделать в одном глобальном модуле, видимом из любой формы или запроса. Если сделать именно так, то эти функции будут доступны из постоителя выражений.
...а ты наверное сделал в модуле формы?

Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 12:28 14-08-2007
skinash



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые! Нужна ваша помощь!
В Access имеется таблица:
ID, M1, Shot1, M2, Shot2, M3, Shot2, Remain
 
Можно ли чтобы поле Remain автоматом вычислялось при любом изменении в полях M1, M2, M3, Shot1, Shot2, Shot3 или при добавлении новой записи:
Если ID=1, то Remain = 501 - (M1 * Shot1 + M2 * Shot2 + M3 * Shot3)
иначе Remain = (Remain where ID=ID-1) - (M1 * Shot1 + M2 * Shot2 + M3 * Shot3)
То есть, нужно что-то вроде триггера и хранимой процедуры в MS Access.

Всего записей: 145 | Зарегистр. 21-09-2006 | Отправлено: 09:35 20-08-2007 | Исправлено: skinash, 10:24 10-09-2007
jONES1979



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
skinash так как в "чистом" акцессе нет хранимок и триггеров, необходимую обработку нужно делать в событиях формы ввода. Например в событии BeforeUpdate

Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 17:22 10-09-2007
Diamarina



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.  
С СУБД вообще и с Access в частности столкнулась недавно, а потому в процессе судорожных попыток создания базы возник ряд довольно общих вопросов.  
 
Каким образом в Аксесс распределяются сферы влияния таких способов управления-создания-визуализации-упорядочивания-т.п.-т.д. данны(ми)х  как запросы SQL, выражения (кажется, так это называется... выглядит наподобие этого [...]![...]), функции ну и всякое еще разное добро, что предоставляет Аксесс для работы с данными?  Где для вышепомянутых  задач можно использовать только что-то одно, а где способы взаимозаменяемы? Плюсы, минусы, трудности... Понимаю, что вопрос объемистый, но если невозможно дать ответ в форуме, то дайте, пожалуйста, ссылку на источники, где я могла бы почерпнуть подобную информацию.
Поясню, зачем мне это надо знать. Так получилось, что знакомство с СУБД я начала со стороны изучения SQL. Мне он понравился, и пределом моих мечтаний была бы стряпня базы именно с использованием его. Однако, не тут то было... Когда окунулась в Аксесс, оказалось, что SQLю там как раз не сильно-то и много места дают, а в основном используются интерфейсные методы, всякие там жуткие мастера и проч., либо вышеупомянутые выражения, а еще VB (об этом звере я вообще узнала только вот как нос к носу столкнулась, и как и с чем его едят - я просто не знаю. на вид страшноват. куда как страшнее SQL...). А точнее, вроде как на первый взгляд, его мало используют, однако, если покопаться, то выясняется, что им можно заменить очень многое... Ну, думаю, приблизительно моя дилемма понятна.  
Буду очень благодарна за наведение хотя бы частичного порядка в моей голове. =)

Всего записей: 11 | Зарегистр. 05-02-2007 | Отправлено: 22:02 10-09-2007
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Diamarina
Лучший источник информации - help. Книги нужно спросить в  
Компьютерные (IT) книги на АНГЛИЙСКОМ
Компьютерные (IT) книги на РУССКОМ языке
Отвечать на такое "сочинение" действительно трудновато. Видимо, необходимо немного почитать. А затем, с более конкретными вопросами назад, на форум.
 
PS. [...]![...] похоже на шаблон обращения к полю. [Имя таблицы]![Имя поля]

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 22:40 10-09-2007
Vitus_Bering



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Где взять процедуру, чтобы ФИО в именительном падеже заменить на дательный падеж?
 
Добавлено:
Нашел, может кому-нибудь пригодится
httр://kozin1.narod.ru/sql/fio.html

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 12:48 11-09-2007
skinash



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

Цитата:
Мне он понравился, и пределом моих мечтаний была бы стряпня базы именно с использованием его.

Вообще Access это скорее десктопная БД, т.е. для "нужд офиса", когда сервер и клиент скорее всего на одном компьютере. Хотя и на нём (на Access'е) можно намутить серьёзные вещи.
Если под "стяпнёй базы" ты понимаешь создание таблиц:

Код:
CREATE TABLE ThisTable
        (FirstName CHAR, LastName CHAR);
 

то F1 тебе в помощь:  
создай запрос, вставь туда этот код и нажми на слове CREATE "F1" - откроется нужный раздел справки. К сожалению другого способа добраться до этого раздела я не знаю (у меня Access 2007).

Всего записей: 145 | Зарегистр. 21-09-2006 | Отправлено: 16:05 11-09-2007
Diamarina



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

Цитата:
Если под "стяпнёй базы" ты понимаешь создание таблиц:

 
нет, по "стряпней базы" я понимаю нечто большее, чем просто create table.
это база целиком - от базовых таблиц и связей между ними до запросов и отчетов.  И с самим SQL проблем как таковых вроде нет. Просто при попытках создания хотя бы части нужных таблиц и форм для просмотра, внесения новых строк и поиска я столкнулась с тем, что одним SQLем в Аксесс сыт не будешь. По крайней мере именно так это выглядит в учебных базах.  
Но, собственно, немного поразмыслив, я попытаюсь сама ответить на свой вопрос. Я так поняла, что если мне  нужно создать таблицы, связи между ними и дальнейшая работа с данными будет протекать именно в режиме таблиц, без всяческих красивеньких форм и отчетов, то я вполне могу обойтись одним SQL. А вот если мне понадобятся формы и т.п., то придется добавлять другие средства. Так ли это?
А по поводу "базы для нужд офиса" - то это мне как раз и нужно. Тока не в офисе, а на кафедре. =)

Всего записей: 11 | Зарегистр. 05-02-2007 | Отправлено: 16:54 11-09-2007 | Исправлено: Diamarina, 16:57 11-09-2007
dneprcomp



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

Цитата:
я столкнулась с тем, что одним SQLем в Аксесс сыт не будешь
А в какой базе можно обойтись только SQL ?  SQL - язык базы, а не внешнего интерфейса. Кому нужна база без возможности работы с ней юзера?
Понятно, что интерфейс может быть как внутренним, так и внешним. Но в любом случае одного SQL никак не хватит.

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

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 21:16 11-09-2007 | Исправлено: dneprcomp, 21:29 11-09-2007
Diamarina



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

Цитата:
Использовать только SQL для всего это все-равно, что гудеть в трубку вместо модема  

 =) вот это уже понятнее.  
Ладно, спасибо всем откликнувшимся! бум разбираться.

Всего записей: 11 | Зарегистр. 05-02-2007 | Отправлено: 16:58 12-09-2007
Nedion

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как узнать что были нажаты кнопки перехода ?

Всего записей: 1 | Зарегистр. 21-11-2005 | Отправлено: 01:55 17-09-2007
Chichako



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как всегда возникла проблема на простейшем:
Имеем форму и в ней поле со списком с перечнем стран (берется из таблицы).
Таблица имеет вид:
State_ID - счетчик
State_Name - название страны
В связанных таблицах идет подстановка - реально везде хранятся индексы стран из поля State_ID - счетчик, а выводятся названия стран из State_Name.
Соответственно в поле со списком
Данные = SELECT [Страны].[State_ID], [Страны].[State_Name] FROM Страны ORDER BY [Страны].[State_Name];  
Число столбцов = 2
Присоединенный столбец = 1
Ширина столбцов = 0см;4см
 
Задача - при вводе новой страны в поле формы:
1) Проверить - нет ли его в списке
2) В случае, если нет - добавить в таблицу и выбрать в поле формы
 
Что сделано (использована функция NotInList для объекта DropDownBox):
1) Сама функция NotInList + для подстраховки от пробелов Trim + DCount - если по введеному значению ф-ция возвращает 0, значит такой страны нет и переходим ко второму
 
2) Добавление делаю через:
   DBEngine(0).BeginTrans
   CurrentDb.Execute ("INSERT INTO " & "[Страны]" & "(" & "[State_Name]" & ")SELECT '" & NewData & "'"), dbFailOnError
   DBEngine.CommitTrans
   Проканывает
 
Обновляю список
    Me!DropDownBox.ListIndex = 0
(Если без этой строки требует сохранить значение поля)
 
    Me!DropDownBox.Requery
 
Теоретически осталось только выполнить
    Me!DropDownBox.ListIndex = NN, где NN это номер той самой записи, которую мы добавляли. НО
а) не знаю как выловить только что добавленное значение, поскольку DropDownBox сортируется по алфавиту...
б) при присвоении ListIndex = NN при экспериментах с фиксированными NN выявилось, что после этой операции список остается открытым/выпавшим. Иначе как уходом фокуса на другой объект формы решить не смог. А хотелось бы остаться на этом поле.
 
Ну, на крайняк - как заблокировать поле со списком от ввода туда чего либо с клавиатуры, при том, что в форме еще есть поля куда ввод блокировать Точно не стоит

Всего записей: 23 | Зарегистр. 02-04-2004 | Отправлено: 15:39 17-09-2007 | Исправлено: Chichako, 15:59 17-09-2007
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chichako
Попробуй запоминать max ListIndex при инициализации формы. Соответсвенно, новый на один больше.
Запрет ввода - на KeyDown присваивай KeyCode=0

Цитата:
Иначе как уходом фокуса на другой объект формы решить не смог. А хотелось бы остаться на этом поле.
Кто мешает програмно изменить фокус и тут же вернуться? Как сделать - ну хотя бы поставить любой контрол в заэкранную область. Менять фокус на него. В его эвенте на получение фокуса прописать возврат на лист.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 21:15 17-09-2007
roman nelish

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Посмотрите пожалуйста базу: http://slil.ru/24869973
Не получается сделать вот такие вещи:
1) На форме ListOfEes имеется поле badge, существует номер у каждого сотрудника (я сделал его с раскрываюшемся списом), хочу чтобы можно было выбирать по номеру любого сотрудника, и остальные поля заполнялись согласно номеру. Какой запрос необходимо созать чтобы осуществить это?
2) На форме TimeSheet-Day, выбираю номер сотрудника, нажимаю на кнопку Information, открывается форма ListOfEes, но с самого начала, а я хочу чтобы какой номер я выбрал на форме TimeSheet-Day, такой номер передавался в ListOfEes в поле badge и выводилась информация о сотруднике под его номером.
3) Проблема создания отчета, отчет на основе таблицы, которую заполняет запрос. Например поле с раскрывающемся списком badge, соединяет 3 столбца таблицы, badge + имя + фамилия, т.о. в таблице сохраняется только поле badge, и соотвественно в отчете выводится только номер, как же свзязать имя + фамилию к номеру, чтобы они тоже выводились на отчете?

Всего записей: 8 | Зарегистр. 03-05-2007 | Отправлено: 10:43 18-09-2007
splintt

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

Всего записей: 2 | Зарегистр. 02-02-2007 | Отправлено: 16:52 24-09-2007
Vitus_Bering



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
splintt
Запрос на добавление.

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 17:06 24-09-2007
Algofil



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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vitus_Bering, Algofil, спасибо вам большое!
Выручили!
 

Всего записей: 2 | Зарегистр. 02-02-2007 | Отправлено: 17:42 24-09-2007 | Исправлено: splintt, 17:43 24-09-2007
agro

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я не програмист но для облегчения ручного труда написания документов необходимо реализовать вот что:
1. есть таблица1 с полем где должны записываться жалобы больного
2. при заполнении в форме жалобы должны набираться из списка подстановки ---> есть таблица2 со списком возможных жалоб
3. в таб1 поле жалобы должны попадать не 1 жалоба из списка а СРАЗУ НЕСКолько
========
по книгам я разобрался что такие конструкции в аксесе это связь многие-ко-многим, принцип понял, связь в схеме сделал, делаю поле подстановки не работает (обращения к таблицам через запросы и формы)
 
помогите пожалуйста
 
с уважением Евгений.

Всего записей: 18 | Зарегистр. 12-02-2006 | Отправлено: 03:47 25-09-2007 | Исправлено: agro, 03:50 25-09-2007
Algofil



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
докторам надо помогать при первой же возможности, "уж лучше Вы к нам" (С)
1. итак, несколько жалоб из списка + возможно, жалобы которых нет в списке, так?
тада поле типа МЕМО, в ём подстановку ниасилил, т.е. визуальными средствами.
2. создадим десяток полей жалоба1..жалоба10
3. провяжем их к таблице2
4. по каждому полю (а мож лучше одно создать а потом покопировать?) в конструкторе жмакаем Подстановка, выбираем Поле со списком, Таблица или запрос, ну и выбираем источник строк.  
5. типа у меня работает красиво, тока начинаешь набирать жалобу так на букву г вылетает гемморой, жмешь следом р - меняется на грипп (т.е. я догадываюсь что это не жалобы, но я ж не дохтур)
6. осталось наклацать запрос который тупо объединит все жалобные поля из одной записи в одно поле. кажется аксес не любит НУЛЛ строк, надо бы подстраховаться

Всего записей: 247 | Зарегистр. 19-09-2007 | Отправлено: 10:07 25-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