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

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aidomars
как раз прикрутить код можно переключившись из sql режима в режим конструктора, access сам все нарисует, останется только добавить к полученному таблицы, связи и поля в запрос

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 13:56 21-11-2011
novo_again



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

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 16:35 29-11-2011
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть двумерный массив с данными (ФИО, НомерДоговора, Контора). Как мне создать для каждой конторы Excel-файл (есть шаблон) с соответствующими ФИО и НомерДоговора? Не хочется возиться с циклами и ячейками. Хочется красиво чтоб), типа через временную таблицу и SQL-запрос. Реализуемо?
Сейчас вот как:

Код:
     
Set wb = Excel.Workbooks.Open(CurrentProject.Path & "\Шаблоны\Акт.xls")
    wb.Application.Visible = True
    With wb.Sheets("Акт")
        For i = 1 To Ubound(arrАкт)
            .Cells(9+i, 1) = arrАкт(a, aFIO)
                              'добавить строку
        Next i
End With
 

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 16:19 10-01-2012
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aidomars
Зачем же так длинно? Просто вставка значений массива

Код:
 
     Dim vRows As Long, vCols As Long
     
    vRows = UBound(arrАкт, 1) - LBound(arrАкт, 1)
    vCols = UBound(arrАкт, 2) - LBound(arrАкт, 2)
    With wb.Sheets("Акт")  
        .Range(.Cells(9, 1), .Cells(9 + vRows, 1 + vCols)).Value = arrАкт
    End With
 


Цитата:
типа через временную таблицу и SQL-запрос

 
Вкладка "Данные" и кнопка из Access (для Excel 2007-2010)

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 05:13 11-01-2012
aidomars



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

Цитата:
Зачем же так длинно? Просто вставка значений массива  

AndVGri, задача в том, чтобы из массива данных создать 5 файлов, т.е. в массиве например имеем: 100 строк, где 5 контор по 20 строк.  
Пока делаю по старинке, по каждой конторе в массиве ищу циклом строки, вношу их в массив2, а его уже вставляю:
Код:
Range("A10").Cells.Resize(UBound(arrUv, 1), UBound(arrUv, 2)) = arrАкт
, сохраняю книгу. И так 5 раз.
 
 

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 07:51 11-01-2012
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aidomars
1. А при чём тут Access VBA?
2. Массив же не данность - каким-то образом заполняется, что мешает сразу создавать 5 массивов?

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 08:35 11-01-2012
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndVGri
1. Работа ведется в Access это раз, думал сделать через вставку массива в таблицу с последующим нахождением каждой конторы через SQL-запрос, это два. В первом посте написано было.
2. Массив читается функией LoadArrayFromWorkbook, т.е. данные с листа сразу заносятся в массив.  
Результат должен быть в виде формирования количества книг (равному количеству уникальных контор) с соотвующими им данными (ФИО, НомерДоговора).

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 09:17 11-01-2012
petrosyanserg

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как можно защитить строки в таблице от редактирования другим пользователем? Нужно, чтобы пользователи вносили свои данные в базу данных, редатировали только свои внесённые данные, производили поиск по всем данным, введённым и другими пользователями тоже.
1) Примерно 10 пользователей, у каждого свой файл .mdb (пример во вложении). Это архив чертежей, номер - название. Каждый пользователь заносит свои в свой файл .mdb, а при поиске через определённую форму все эти файлы объединяются и производится поиск.
2) Либо создается один файл .mdb у администратора, при добавлении своих записей в общий файл форма сама заносит в определённое поле свой id, так форма будет знать, что это её строка и только его можно редактировать.
Возможно есть какой-то другой способ защиты строк? Кто, что применял?
 
Добавлено:
Вложение http://ifolder.ru/28427630

Всего записей: 16 | Зарегистр. 12-06-2008 | Отправлено: 21:33 31-01-2012
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
petrosyanserg
Я сделал просто до ужаса.
Определяешь при запуске комп/ip/username и записываешь в ту же таблицу при вносе данных. Открываешь форму с таблицей (в свойствах - запрещено редактировать), щелчок по строке - открытие формы для забивки данных, в зависимости от роли определяется доступ. Саму таблицу имхо так не защитить.
Формы храни у юзеров локально, таблицы в сети.

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 22:15 31-01-2012
GSkva

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток! Задача:
Есть база данных на Access она довольно часто меняется и каждый раз чтобы обновить ее у всех клиентов приходится брать ихнюю и перекидывать данные в новую. Вопрос: как сделать так чтобы изменения в базе делались с помощью макроса, вне базы данных. Нужно что-то на подобие файла обновления. Как организовать?

Всего записей: 7 | Зарегистр. 31-01-2011 | Отправлено: 12:15 14-02-2012
novo_again



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

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 13:16 14-02-2012
GSkva

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
КАК заставить? Технически?  
Сети нет и не будет, у каждого клиента база называется по своему так что обновление не может найти базу. Нужно чтобы в базе была кнопка "обновить", которая брала бы файл и в соответствии с ним делала изменения в себе. Логика процесса мне и самому понятна, а вот технически!????
 
Добавлено:
Т.Е. как заставить базу выполнить код который храниться во внешнем файле как будто это код самой кнопки "обновить"? Клиент не сможет скопировать и вставить код в кнопку (естественно)!!!

Всего записей: 7 | Зарегистр. 31-01-2011 | Отправлено: 18:21 14-02-2012
novo_again



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

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 18:59 14-02-2012
GSkva

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-то чего то не до понял...... Ладно сначала....
Есть несколько одинаковых по структуре  (клиентских) баз данных (mdb). В каждой базе данных у каждого клиента данные свои и не пересекаются с другими базами, могут лежать  в любой папке и называться как угодно. При необходимости доработать базу (добавление или редактирование таблиц, макросов, кнопок, отчетов и т.п.) приходиться брать базу данных первого клиента, перекидывать из нее данные в доработанную базу и отдавать ему. Брать базу 2-го клиента, перекидывать из нее данные в доработанную базу.......и т.д.
 
Задача: В базе данных у клиента сделать некую кнопку "Обновить" при нажатии которой база считывает, из присланного мной отдельного файла, код процедуры VBA или макроса и запускает его на исполнение. И эта процедура или макрос, в свою очередь, делает изменения с структуре клиентской БД (обновляет БД).
 
Как организовать технически? Или может кто-нибудь посоветует в этой ситуации что-либо другое?
 
Добавлено:
Напомню изменения будут только в структуре БД и на клиентские данные никак влиять не должны!!! Т.Е. импорт новых таблиц из новой базы не прокатит

Всего записей: 7 | Зарегистр. 31-01-2011 | Отправлено: 23:13 14-02-2012
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я вот тоже чего то не до понял.....

Цитата:
При необходимости доработать базу (добавление или редактирование таблиц, макросов, кнопок, отчетов и т.п.)

Интерфейс тоже дорабатывается?
База данных разделена?
Может проще разослать итерфейсную часть клиентам?

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 23:23 14-02-2012
GSkva

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

Всего записей: 7 | Зарегистр. 31-01-2011 | Отправлено: 23:46 14-02-2012
novo_again



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все равно не понял...(((
Зачем клиент должен превращать себя в новую базу? Почему новая база не может всосать в себя данные? Просто сделайте в новой кнопку "Вставить данные из другой базы"...

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 00:12 15-02-2012
GSkva

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1) Потому что вялому и линивому клиенту не объяснишь какую базу он должен выбрать для импортирования
2) И самое важное. Часто бывают случаи, что при неправильном обращении с базой, через проверки все таки проскальзывают данные которые при ИМПОРТИРОВАНИИ могут ругнуться на несовместимость данных с форматом полей. Если при импортированиии возникнет такая проблема или ошибка, то для клиента это катастрофа! И работа остановится.
3) Люди (клиенты) уже на интуитивном уровне привыкли что программа именно обновляется, а не сосет данные из старых версий.
 
Добавлено:
Проблема только в том, как загнать в старую базу новую процедуру из внешнего источника и запустить ее программно?
 
 
Добавлено:
Представьте импортирование базы из 40 таблиц и нескольких сотен тысяч записей, ради того чтобы добавить маленький отчет и поменять название кнопки ...продуктивно!

Всего записей: 7 | Зарегистр. 31-01-2011 | Отправлено: 00:50 15-02-2012
aidomars



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

Цитата:
Представьте импортирование базы из 40 таблиц и нескольких сотен тысяч записей, ради того чтобы добавить маленький отчет и поменять название кнопки ...продуктивно!

А зачем делать импортирование базы из-за нового отчета или кнопки? Разделять базу не пробовал?

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 06:09 15-02-2012
novo_again



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По-моему, ничто не поможет Вашему горю.
С другой стороны, как Вы будете объяснять ленивому клиенту, куда сохранить новую базу?
Конфликта с данными не должно быть, потому что, не понятно, почему, если данные успешно введены один раз, они должны вызвать конфликт при импорте.
Люди на интуитивном уровне привыкли, что Вы им все делаете сами, направления потоков данных их не волнует.
А почему нет? Я рассуждаю как чайник, но по-моему все АБС так обновляют)) Сначала ставят и тестируют новую версию, потом что? Миграция данных! А не кода... Вообще, это возможно только на ассемблере - представьте, вставить в физическое тело файла базы в определенное место биты с кодом... Это похоже на искусственный интеллект)
Опять же, кто-нибудь из Бауманки Вам все на научной основе объяснил бы, но они пока с интересом наблюдают)))

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 06:20 15-02-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 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