Простейшей вариант создания CursorAdapter'a для работы с источником данных типа "ADO" мы рассмотрели в предыдущей статье. Теперь посмотрим, как это сделать программно. В действительности все достаточно просто. Во-первых нужно создать объект CA, для чего используем стандартную команду VFP Createobject, при этом условимся, что наш создаваемый программно CursorAdapter будет назваться caADOTypeDS:
caADOTypeDS=Createobject("CursorAdapter")
Установим для нашего СА тип источника данных "ADO", для чего присвоим это значение свойству СА DataSourceTypе:
caADOTypeDS.DataSourceType="ADO"
Если в случае ODBC в качестве источника данных, устанавливаемого для свойства СА DataSource мы использовали хэндл соединения, то в случае, если тип источника данных - ADO, мы будем использовать объект ADODB.Recordset, для которого потребуется иная структура - объект ADODB.Connection. Этот объект мы также создадим стандартной функцией VFP:
loConnection2DataSource = Createobject('ADODB.Connection')
У полученного объекта имеется свойство ConnectionString, которому мы должны присвоить строку, содержащую параметры соединения:
loConnection2DataSource.ConnectionString = ;
[Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;] + ;
[Initial Catalog=Northwind;Data Source=SERVER;]
Объекту ADODB.Recordset, который будет использоваться в качестве источника данных мы можем передать объект ADODB.Connection с открытым соединением, то есть предварительно открыть соединение и, при необходимости, проверить - действительно-ли оно.
loConnection2DataSource.Open()
Вернемся к созданному объекту СА. Установим, как уже говорилось выше, в качестве источника данных объект ADODB.RecordSet, для чего вновь воспользуемся стандартной функцией VFP:
caADOTypeDS.Datasource = Createobject('ADODB.RecordSet')
и пропишем для источника данных значения екоторых его свойств:
caADOTypeDS.Datasource.CursorLocation =3
caADOTypeDS.Datasource.Datasource.LockType =3
caADOTypeDS.Datasource.LockType=3
и в завершении присвоим его свойству ActiveConnection полученный объект loConnection2DataSource.
caADOTypeDS.Datasource.ActiveConnection = loConnection2DataSource
Осталось установить, что мы хотим получить в результате. Как и в предыдущей статье, пусть это будет идентификатор потребителя, имя компании и имя контактного лица - соответственно поля CustomerID,CompanyName и ContactName из таблицы Customers базы данных Northwind. SQL-выражение, обеспечивающее такую выборку мы поместим в свойство SelectCmd нашего объекта СА.
caADOTypeDS.SelectCmd="SELECT CustomerID,CompanyName,ContactName FROM Customers"
Осталось заполнить курсор содержимым выборки, для чего исполним команду:
caADOTypeDS.CursorFill
Поскольку мы не меняли значений прочих установок, то мы получим выборку из 92 записей, содержащихся в таблице Customers. Выпоолним следующую последовательность команд:
Browse
Use
loConnection2DataSource.Close()
Release All
Суимарно - код будет выглядеть так:
caADOTypeDS=Createobject("CursorAdapter")
caADOTypeDS.DataSourceType="ADO"
Set Multilocks On
loConnection2DataSource = Createobject('ADODB.Connection')
loConnection2DataSource.ConnectionString = ж
[Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;] + ;
[Initial Catalog=Northwind;Data Source=SERVER;]
loConnection2DataSource.Open()
caADOTypeDS.Datasource = Createobject('ADODB.RecordSet')
caADOTypeDS.Datasource.CursorLocation =3
caADOTypeDS.Datasource.Datasource.LockType =3
caADOTypeDS.Datasource.LockType =3
caADOTypeDS.Datasource.ActiveConnection = loConnection2DataSource
caADOTypeDS.SelectCmd = ;
"SELECT CustomerID,CompanyName,ContactName FROM Customers"
caADOTypeDS.CursorFill
Browse
Use
loConnection2DataSource.Close()
Release All
Незавершена. Будет продолжено
|