Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/103: Рейтинг темы: голосов - 103, средняя оценка - 4.66
3 / 3 / 1
Регистрация: 10.03.2011
Сообщений: 39

Access 2007 VBA Обработка строк таблицы

13.03.2011, 03:05. Показов 20325. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Работаю с Access 2007 необходимо обработать запрос (как я понимаю запрос не что иное как таблица), задача: обойти все стоки таблицы, приэтом для каждой строки:
  • считать значение первой ячеки и второй
  • сложить эти значения и записать в 3ю ячейку

необходим пример реализующий подобные действия, обязательно для Access 2007 все что мне удалось осуществить:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim str_my As String
    
    
    Set db = CurrentDb()
    Set rst = db.OpenRecordset("ТАБЛИЦА", dbOpenDynaset) 'dbOpenSnapshot) 
    rst.MoveFirst
    
    Do While Not rst.EOF
        str_my = str_my & vbCrLf + "Number: " & rst![поле]
        rst.MoveNext
    Loop
    
       
    MsgBox str_my, vbInformation, " МЕССЕЖ"
    
    rst.Close
    db.Close
    Set db = Nothing
Однако записать значение в определенную (в уже существующей строке) я чейку у меня не получается.

Еще вопрос, пробовал вставить значения в запрос через конструкцию:

Visual Basic
1
2
3
4
5
6
    With rst
        .AddNew
        .Fields("№ ПОСЫЛКИ") = "MY388073051CN"
        .Fields("КОМУ") = "13.03.2013"
        .Update
    End With
значения появляются в таблице, но отсуствуют в таблице запроса, с чем это связано?

Добавлено через 33 минуты
Извините за флуд, проблема решена, случайно наткнулся на статью:
 Комментарий модератора 
ссылка на другой форум


в итоге 3часа = 3 строчки кода:

Visual Basic
1
2
3
4
5
6
rs.Edit 'Редактируем запись 
'Ставим новые значения 
rs.Fields (0) = "Значение 1" 
rs.Fields (1) = "Значение 2" 
'… 
rs.Update 'Обновляем рекордсет
Все значения сразу вносятся в таблицу...

Добавлено через 32 минуты
Вопрос, после оновления строк в запросе, обновления сохраняюся только в таблице, в таблице запроса они исчезают как поправить эту ситуацию?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2011, 03:05
Ответы с готовыми решениями:

Код VBA в Access 2010 работает, в Access 2007 выдает ошибку
Написала код VBA в Access 2010 - работает, в Access-2007 выдает ошибку. В чем причина - подскажите

access 2007 + sql запрос + vba
накидайте код, пажалуйста :) задача: в vba запилить sql запрос select field1 from table where (table.field2="тут поле из формы...

Как связать функцию VBA с действием кнопки в Access 2007?
Привет всем. У меня такое задание. Дана форма, в ней 4 записи. Нужно создать 4 кнопки с подписями "С", "Д",...

8
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
13.03.2011, 09:05
Цитата Сообщение от rus.nick Посмотреть сообщение
как я понимаю запрос не что иное как таблица
вовсе нет. запрос, который вы имеете в виду, это команда движку БД на выполнение некоторых манипуляций с данными (выборка, обновление, создание индекса ect.). в СУБД MS Access для работы с запросами на сухом языке SQL существует, кроме прочего, графический интерфейс, который позволяет создавать запросы (режим Конструктор или SQL) и предварительно просматривать результат их работы (режим Таблица).
Цитата Сообщение от rus.nick Посмотреть сообщение
задача: обойти все стоки таблицы, приэтом для каждой строки:
считать значение первой ячеки и второй
сложить эти значения и записать в 3ю ячейку
необходим пример реализующий подобные действия, обязательно для Access 2007
для этого идеально подойдет запрос на обновление http://office.microsoft.com/ru... 7.aspx#BM1
1
3 / 3 / 1
Регистрация: 10.03.2011
Сообщений: 39
13.03.2011, 11:55  [ТС]
Цитата Сообщение от ironegg Посмотреть сообщение
вовсе нет. запрос, который вы имеете в виду, это команда движку БД на выполнение некоторых манипуляций с данными (выборка, обновление, создание индекса ect.). в СУБД MS Access для работы с запросами на сухом языке SQL существует, кроме прочего, графический интерфейс, который позволяет создавать запросы (режим Конструктор или SQL) и предварительно просматривать результат их работы (режим Таблица).
Возможно ли обновить данные в таблице запроса? Я так понял все изменения овтоматически применяются к таблицам на основе которых построен данный запрос? Когда происходить обновление результирующей таблицы запроса, и можно вызвать его через команду VBA непосредственно в программе на VBA?
0
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
13.03.2011, 17:27
скорее всего можно, только зачем!?? тут VBA вообще не нужен. требуемую модификацию таблицы можно выполнить SQL запросом на обновление
0
3 / 3 / 1
Регистрация: 10.03.2011
Сообщений: 39
13.03.2011, 22:22  [ТС]
Дело в том что в програме на VBA по своему алгоритму происходят вычисления над строками таблицами, соответсвенно результат после вычислений заносится с нужный столбец строки...
0
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
15.03.2011, 00:52
ну, если дело только в этом... в запросах можно использовать весьма сложные математические выражения, вплоть до пользовательских функций (а тут уже полная свобода).
впрочем, согласен, возможны ситуации, когда задачу нужно решить Только на VBA. с этого и надо было начинать. вообще вопрос не ясен, информацию приходиться клещами тянуть. опиши задачу не опуская ключевых моментов. именно задачу, а не предполагаемый способ решения.
обычно, при программировании приложений БД вычисляемые поля не сохраняют в таблице. вычисления производят заново каждый раз, когда в этом есть необходимость.

Цитата Сообщение от rus.nick Посмотреть сообщение
...столбец строки...
нету, кстати, в таблицах БД столбцов и строк, есть записи и поля. то что в Access обычно называют таблицей, на самом деле специальная системная форма Access, в которую выводятся результаты запроса всех записей из таблицы. таблица же, суть часть файла на жестком диске
0
0 / 0 / 0
Регистрация: 20.12.2012
Сообщений: 9
26.01.2013, 21:41
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Кнопка15_Click()
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("продукты")
rs.MoveFirst
rs.AddNew
rs!№продукта = Me!Поле17
rs!названиепродукта = Me!Поле19
rs!единицы = Me!Поле21
rs.Update
End Sub
это добавление в одну таблицу данные, а как сделать одним кодом добавление в 2 или 3 связанные таблицы?
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
28.01.2013, 08:59
Sancheper,

А вы рекордсет обновляемый создайте и добавляйте:
Visual Basic
1
Set rs = CurrentDb.OpenRecordset("select * from продукты left join продавцы on продукты.кодпродавца = продавцы.код")
1
0 / 0 / 0
Регистрация: 20.12.2012
Сообщений: 9
30.01.2013, 15:23
спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.01.2013, 15:23
Помогаю со студенческими работами здесь

Запуск запроса к таблице на SQL server через VBA access 2007
Здравствуйте! дано: база данных аксес 2007, к ней прилинкованы две таблицы с sql server...

MS Access 2007 Соединить две таблицы в одну
Добрый день, проблема заключается в простом. Есть данные в таблице 1 и в таблице 2. Пример таблицы 1 ...

БД в Access 2007: По каким полям связать таблицы?
Доброго времени суток, господа! Суть проблемы: в базе есть таблица Объектов, которые при контактах с Клиентами могут фигурировать в трех...

Access 2007. Разбивка строк на несколько по условию
Доброго всем времени суток! Столкнулся с неразрешимой проблемой: Имеется таблица с данными вида: ID, Name1, Name2, Name3, Match ...

Правильно сделать выпадающий список из подчиненной таблицы в Access 2007
Здравствуйте, уважаемые форумчане! у меня не хватает ума :wall:, чтобы понять как в моей базе сделать таблицу Тренеры полем со списком,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru