Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сравнить две таблицы в ACCESS 2013 при помощи VBA / 5 сообщений из 5, страница 1 из 1
02.08.2018, 17:33
    #39682731
alex-access-on
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить две таблицы в ACCESS 2013 при помощи VBA
Доброго дня!
Работаю с таблицами БД, которые достались по наследству.
Необходимо сравнить таблицу 1 (например по значению столбца 7) с таблицей 2 (столбец 7).
Если позиция отсутствует в табл.2, то в таблице 1, например в столбце 8 проставить цифру 777.

Ранее программировал в VBA EXCEL.
В VBA EXCEL это выглядело бы так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub ПОИСК()
X1 = 2
X11 = 5984
X2 = 2
X22 = 6292

For XX1 = X1 To X11
Z1 = Sheets(1).Cells(XX1, 7)
FL = 0
For XX2 = X2 To X22
Z2 = Sheets(2).Cells(XX2, 7)

If Z1 = Z2 Then FL = 1

Next XX2
If FL <> 1 Then
Sheets(1).Cells(XX1, 7)=777
End If
Next XX1

End Sub



Как это может выглядеть в ACCESS (должно быть что-то похожее - и там и там VBA) ?

Если что - тапками и ботинками прошу не кидаться...)))
...
Рейтинг: 0 / 0
02.08.2018, 18:56
    #39682761
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить две таблицы в ACCESS 2013 при помощи VBA
alex-access-on,

зачем это делать средствами VBA? В Access это делается запросами. Для примера посмотри в мастере запросов "Записи без подчинённых".
...
Рейтинг: 0 / 0
02.08.2018, 21:00
    #39682821
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить две таблицы в ACCESS 2013 при помощи VBA
alex-access-on,
создали 2 рекордсета да и сравнивайте.
(DAO)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Private sub Sverka()
const tbl1$="table1"
const tbl2$="table2"
const Prostav$="777": const stolb&=7
Dim rst1 as recordset, rst2 as recordset
Set rst1=CurrentDb.OpenRecordset((tbl1, dbOpenDynaset)' тут будем проставлять в столбце 8 цифры 777
if rst1.absoluteposition=-1 then exit sub
Set rst2=CurrentDb.OpenRecordset((tbl2, dbOpenSnapshot)
if rst2.absoluteposition=-1 then exit sub
with rst1
 .movefirst
   do until .EOF
' ищем совпадение
        rst2.findfirst "[Stolbec7]=" & .fields(6) ' если это число, если это текст нужнодобавить скобки
         If rst2.nomatch then ' совпадений нет
         .edit
           .fields(stolb)=Prostav
           .update
         end if
  .movenext
Loop
end with
end sub

...
Рейтинг: 0 / 0
03.08.2018, 07:22
    #39682890
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить две таблицы в ACCESS 2013 при помощи VBA
alex-access-onНеобходимо сравнить таблицу 1 (например по значению столбца 7) с таблицей 2 (столбец 7).
Если позиция отсутствует в табл.2, то в таблице 1, например в столбце 8 проставить цифру 777.
Код: sql
1.
2.
3.
4.
UPDATE [таблица1]
LEFT JOIN [таблица2] ON [таблица1].[поле7] = [таблица2].[поле7]
SET [таблица1].[поле8] = 777
WHERE [таблица2].[поле7] IS NULL


aleckoсоздали 2 рекордсета да и сравнивайте
Ага... а ещё можно гланды через задницу удалять...
...
Рейтинг: 0 / 0
03.08.2018, 10:09
    #39682938
alex-access-on
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить две таблицы в ACCESS 2013 при помощи VBA
Спасибо за ответы (помогли все)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сравнить две таблицы в ACCESS 2013 при помощи VBA / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]