Вопрос № 78008: Уважаемые эксперты! вопрос. Access 2000
Запрос на обновление таблицы
Update a,b set a.name=b.name
where a.id=b.id
а если полей много и если имена полей идентичны в обoих таблицах, чтобы не писать весь список, то можно использовать как...
Вопрос № 78.008
Уважаемые эксперты! вопрос. Access 2000
Запрос на обновление таблицы
Update a,b set a.name=b.name
where a.id=b.id
а если полей много и если имена полей идентичны в обoих таблицах, чтобы не писать весь список, то можно использовать как в запросах на вставку Insert into a (id, name) Select * from b where ....
2. Второй вопрос. Есть форма с подчиненной формой. Выбираются клиенты по заданным В форме: зона техобслуживания, имя технка, период.
Как в этой же конструкции изменить паpаметры запроса в подчиненной форме и выбрать клиентов по всем зонам. (например я отмeчаю "птичкой" по всем зонам)
Запрос в подчиненной форме пpиблизительно такой:
Select Client, address, apparat, zona, tecnico
from M_zona
where zona=forms![OrdiniTec]!zona and tecnico=forms![OrdiniTec]!tecnico
Отправлен: 12.03.2007, 20:13
Вопрос задала: Natali (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Natali!
Вопрос 2:
Для строчного поля критерия и поля со списком:
Sub Combo1_AfterUpdate()
Me.ChildForm.Form.RecordSource = "SELECT * FROM Table WHERE CriteriaField='" & Me.Combo1 & "'"
End Sub
числовой критерий и флажок:
Sub Check1_AfterUpdate()
Dim i As Integer
If Me.Check1 = 0 Then
i = Value1
Else
i = Value2
End If
Me.ChildForm.Form.RecordSource = "SELECT * FROM Table WHERE CriteriaField=" & i
End Sub
вопрос 1:
Запрос на обновление не допускает использования '*'
Его можно построить открыв рекордсет и считав имена всех полей (.Recordset.Fields(i).Name) в массив, передаваемые значения также в массив и перебором этих массивов собрать строку запроса, но конструкция громоздка.
При работе с запросом на обновление надо быть крайне аккуратным(!!!)
некорректно написаный запрос (с неоднозначным условием, ошибочным значением...) приводит к потере данных.
Саммый "надежный", способ обновления записи (а не набора записей как в запросе) это обновление полей рекорсета, к ним можно обращаться по индексу (.Fields(i)) а это удобно при построении цикла.
Удачи.
Евгений.
Ответ отправил: Тесленко Евгений Алексеевич (статус: 5-ый класс)
Ответ отправлен: 12.03.2007, 22:33 Оценка за ответ: 5 Комментарий оценки: Спасибо. по 1 вопросу: обычно использую для обновления полей recordset. Потеря данных после обновления по запросу этап пройденный. Буду и дальше обновлять через recordset хотела убедиться что этот путь самый верный. по второму: спасибо за подсказку Form.RecordSource дальше понятно. Как всегда грамотно и точно!