Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Программирование в Microsoft Office для пользователей
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

9.5.6 Изменение записей на источнике при помощи объекта Recordset

Добавление, изменение, удаление записей в Recordset, методы AddNew(), Update(), Delete()

Очень часто возникает необходимость из приложения не только получать информацию о записях из источника, но и вносить на источник изменения. При этом обычно возникает множество сложностей, связанных с решением вопроса о том, в какой таблице данные изменять (если у нас набор таблиц), с блокировками, производительностью, разрешениями, каскадными обновлениями, возможностью отката внесенных пользователем изменений и т.п. Многие проблемы решаются намного проще, если вы изначально будете следовать правилу: любые изменения можно проводить только при помощи хранимых процедур (и, соответственно, при помощи объекта Command). Ниже будут рассмотрены возможности внесения изменений через объект Recordset, которые следует использовать только в самых простых случаях.

Необходимо также помнить, что значение свойства LockType при открытии Recordset по умолчанию устанавливается в adLockReadOnly, что не позволяет вносить изменения в Recordset. Вам потребуется изменить значение этого свойства перед открытием Recordset.

Общая схема внесений изменений через Recordset выглядит так: вначале вызывается один из нужных нам методов ( AddNew(), Edit(), Delete()) и производится внесение изменений в оперативной памяти на клиенте. Следующая операция — вызывается метод Update() для Recordset, который и производит запись внесенных изменений на источник данных (после вызова Delete() вызывать метод Update не нужно). Чуть подробнее о каждом из этих методов:

работа с методом AddNew() — это всегда операция, которая состоит из трех частей:

  • вначале нужно вызвать этот метод, чтобы создать новую пустую запись (курсор будет установлен на нее автоматически);
  • затем занести значения в столбцы, используя свойство Value коллекции Fields;
  • вызвать метод Update() для записи изменений на источник.

Пример применения этого метода к нашему Recordset может выглядеть так:

Dim rs As ADODB.Recordset

Set rs = CreateObject("ADODB.Recordset")

rs.CursorType = adOpenKeyset

rs.LockType = adLockOptimistic

rs.Open "select * from dbo.customers", cn

rs.AddNew

rs.Fields("CompanyName") = "Test rs company"

rs.Fields("Country") = "Germany"

rs.Fields("CustomerId") = "TESTR"

rs.Update

В принципе, можно присваивать новые значения и в самом методе AddNew(), но с точки зрения синтаксиса это сложнее.

изменение существующей записи при помощи метода Edit() выглядит очень просто:

rs.Find "CustomerID='ALFKI'"

rs.Fields("ContactName") = "Маша"

rs.Update

а удаление — еще проще:

rs.Find "CustomerID =' TESTR'"

rs.Delete

Обратите внимание, что в этом случае метод Update() вызывать не нужно!

Конечно, при внесении изменений на источник ошибки могут возникнуть по множеству причин. Рекомендуется всегда в таких ситуациях устанавливать обработчик ошибок и анализировать свойства стандартного объекта Err.

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 
© 2004-2016, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru