ADO 2.0, Хронимые процедуры с параметрами.
От: vita55  
Дата: 07.07.04 07:17
Оценка:
Здравствуйте!
Помогите, пожалуйста, разобраться в работе с хронимыми процедурами.Вопросы касаются работы с компонетом ADOCommand.

1. Прежде чем приступить к испонению процедуры методом Execute одно из необходимых действий установить активное соединение с провайдером данных для данного компонента.
Здесь используется метод put_ActiveConnection. Меня интерисует тот случай, когда в качестве аргумента ему передаётся переменная типа VARIANT. Правильно ли я понимаю что эта переменная должна содержать ссылку на интерфейс IDispatch, того объекта соединения ADOConnection, который нужно сделать активным для данного объекта ADOCommand? Если так, то правильно ли я понимаю, что эта ссылка должна хрониться в свойстве pdispVal переменной типа VARIANT, которая передаётся методу как параметр? Если нет, то каким образом передать через эту переменную ссылку на объект ADOConnection по средством метода put_ActiveConnection?

Моя реализация данного действия следующая:

ADOConnection* pConn;
ADOCommand* cmd;
...
VARIANT vaConn;
VariantInit(&vaConn);
pConn->QueryInterface(IID_IDispatch, (void**)(&(vaConn.pdispVal));
cmd->put_ActiveConnection(vaConn);
Правильно? По крайне мере в правильности этого у меня сомнений мало.

2. Один из параметров метода Execute переменная типа VARIANT* Parameters, которая должна передовать какие то данные о параметрах хронимой процедуры. Правильно ли я понимаю, что в качестве этого аргумента методу необходимо передать указатель на переменную типа VARIANT, которая каким — то образом инкапсулирует в себе(хронит в себе) ссылки на объекты классов ADOParameter для всех параметров хронимой процедуры, которые предварительно были добавлены в коллекцию команды методом CreateParameter? Или же через эоту переменную передаются значения этих параметров? Если ссылки, то каким образом они упаковываются в переменную типа VARIANT и ссылки на что именно передаются по средствам этого аргумента: ссылки на иинтерфейсы объектов ADOParameter IUnknown, IDIspatch или же на сами эти объекты? Как бы то ни было, оситаётся непонятным вопрос, как упаковываются данные о параметрах в этот аргумет. Не могли бы Вы поделиться кодом, реализующим это?

3. Для извлечения параметров, после исполнения процедуры используется метод get_Parameters, где фигурирует аргумент типа ADOParameters**. Меня интирисует тип ADOParameters ялвляется ли COM интерфейсом, т.е. нужно ли его загружать в память по средством CreateInstance или же это обычный тип и его не нужно загружать в память методом CreateInstance?

Как бы то нибыло, спасибо, что проявили интерес к моему вопросу!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.