2.Копирование записей из одной таблицы в другую с помощью объекта Recordset(Все примеры тестировались в MS Access 97, для того чтобы приведенный здесь код
работал Access 2000 или XP, необходимо включить в Visual Basic поддержку
Microsoft DAO 3.6 Object Library (Tools\References...))
В этом примере мы разберем как осуществить копирование данных из одной таблицы в
другую, сначала для конкретных таблиц. А в следующем примере рассмотрим процедуру
которая копирует информацию из одной прозвольной таблицы в другую произольную
таблицу (для полей с одинаковыми именами).
В нашей тренировочной базе данных добавим в таблицу «СОТРУДНИКИ» поле «должность»,
создадим таблицу «Оклады» с полями «должность» и «оклад»; таблицу «ВедомостьЗП»
с полями «фио», «ЗП»
Заполним таблицу «Оклады», например, так:
Должность
Оклад
Директор
1500,00
ГлавБух
1100,00
Грузчик
500,00
а в таблице «СОТРУДНИКИ» также заполним поле «должность» для всех записей.
Следующая процедура копирет данные из таблицы «СОТРУДНИКИ» в таблицу «ВедомостьЗП»:
Private Sub Кнопка2_Click()
' определяем необходимые переменные
Dim DB As Database, RS As Recordset, RS1 As Recordset
Set DB = CurrentDb ' будем работать с объектами текущей БД
' Открываем Recordset для таблицы из которой будем копировать данные
Set RS = DB.OpenRecordset("СОТРУДНИКИ", dbOpenDynaset)
' Открываем Recordset для таблицы в которую будем копировать данные
Set RS1 = DB.OpenRecordset("ВедомостьЗП", dbOpenDynaset)
' если в исходной таблице присутствуют записи, начинаем цикл по записям
If RS.RecordCount > 0 Then
RS.MoveFirst
Do Until RS.EOF
RS1.AddNew
RS1![фио] = RS![фио]
RS1![ЗП] = DLookup("оклад", "Оклады", "должность = '" & RS![должность] & "'")
' функция DLookup в нашем примере возвращает значение поля "оклад"
' из таблицы "Оклады", из записи в которой поле "должность"
' совпадает со значением поля "должность" таблицы "СОТРУДНИКИ"
RS1.Update
RS.MoveNext
Loop
End If
End Sub
----------------------------------------------------------------------
Архив рассылки
Дополнительная информация, примеры программ http:\\use-access.narod.ru
Написать письмо: use-access@bk.ru