|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
13.3.6 Изменение записей на источнике при помощи объекта RecordsetВнесение изменений в базу данных при помощи объекта Recordset из VBScript, методы AddNew(), Update(), Delete() Очень часто возникает необходимость из приложения не только получать информацию о записях из источника, но и вносить на источник изменения. При этом обычно возникает множество сложностей, связанных с решением вопроса о том, в какой таблице данные изменять (если у нас набор таблиц), с блокировками, производительностью, разрешениями, каскадными обновлениями, возможностью отката внесенных пользователем изменений и т.п. Многие проблемы решаются намного проще, если вы изначально будете следовать правилу: любые изменения можно проводить только при помощи хранимых процедур (и, соответственно, при помощи объекта Command). Ниже будут рассмотрены возможности внесения изменений через объект Recordset, которые следует использовать только в самых простых случаях. Необходимо также помнить, что значение свойства LockType при открытии Recordset по умолчанию устанавливается в adLockReadOnly, что не позволяет вносить изменения в Recordset. Вам потребуется изменить значение этого свойства перед открытием Recordset. Общая схема внесений изменений через Recordset выглядит так: вначале вызывается один из нужных нам методов (AddNew, Delete) и производится внесение изменений в оперативной памяти на клиенте. Следующая операция - вызывается метод Update для Recordset, который и производит запись внесенных изменений на источник данных (после вызова Delete вызывать метод Update не нужно). Чуть подробнее о каждом из этих методов: · работа с методом AddNew - это всегда операция, которая состоит из трех частей: o вначале нужно вызвать этот метод, чтобы создать новую пустую запись (курсор будет установлен на нее автоматически); o затем занести значения в столбцы, используя свойство Value коллекции Fields; o вызвать метод Update для записи изменений на источник. Пример применения этого метода к нашему Recordset может выглядеть так: Dim rs Set rs = CreateObject("ADODB.Recordset") rs.CursorType = 1 rs.LockType = 3 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, но с точки зрения синтаксиса это сложнее. · изменение существующей записи выглядит очень просто: rs.Find "CustomerID='ALFKI'" rs.Fields("ContactName") = "Маша" rs.Update · а удаление - еще проще: rs.Find "CustomerID='TESTR'" rs.Delete Обратите внимание, что в этом случае метод Update вызывать не нужно! Конечно, при внесении изменений на источник ошибки могут возникнуть по множеству причин. Рекомендуется всегда в таких ситуациях устанавливать обрабочтик ошибок и анализировать свойства стандартного объекта Err.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||