powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Выпольнить запрос SQL из 1С
3 сообщений из 78, страница 4 из 4
Выпольнить запрос SQL из 1С
    #36369625
xKIA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, я немного наколол народ, на самом деле Value берётся через переменную:
Код: plaintext
1.
tmp=ЗаписиSQL.NextRecordSet()
tmp.fields( 0 ).Value
Если писать в одну строчку, ругается, что Value потеряло актуальность. Иными слвами, РекордСет уже другой после Next'а, даже если всё в одну строчку.
Нашёл кое каие доки и напал на след, там вообще указывается, что NextRecordSet ОЧИЩАЕТ РекордСет и выполняет следующую часть запроса (Select), то есть вернуться вряд ли получиться. Второй момент, что там описывается, это возможность двигаться в двух направлениях и вообще море возможностей, типа поиска, получаения, удаления, добавления строк, столбцов и даже сортировка и фильтры или Save в XML. Правда я, уже интуитивно, пробовал PreviousRecordSet, но это не сработало. Так вот, там сказано, что работать всё-таки - будет, надо только указать в параметре открытия как-то OpenStatic, что немного замедлит работу. И самое главное - будет возможность получить RecordCount, что вообще решает все мои проблемы. Ну и ещё какой-то метод Clone(), как запасной вариант.
Замечу ещё, что кроме EOF ставится и флаг BOF, так что можно проверять отсутствие записей, если оба этих флага, одновременно True.
Осталось формализовать строчку отрытия.. если кто знает, напишите пожалуйста, у меня с такими элементарными вещами, всегда много мороки - только изучаю всё.
...
Рейтинг: 0 / 0
Выпольнить запрос SQL из 1С
    #36369963
xKIA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего у меня не получается, пишу и просто
СоединениеSQL.Open("Driver={SQL Server Native Client 10.0};Server=SQLVIRTUAL\SQLEXPRESS;Database=EVE;Trusted_Connection=Yes;CursorType=adOpenStatic");
и без CyrsorType, вроде бы не ругается, вроде бы разрешает сделать ParamCount, но результат всегда -1 и вот что написано в хелпе:

"Свойство Recordset.RecordCount нормально функционирует только для курсоров типа Static и Keyset. Для курсоров типа ForwardOnly и Dynamic оно возвращает (-1), поскольку драйвер подключения не может определить количество записей."

Ну прямо хоть Requery() делай или тупо забить целый столбец значением количества строк... :(
...
Рейтинг: 0 / 0
Выпольнить запрос SQL из 1С
    #36370208
xKIA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашёл прекрасную доку и всё заработало .
Ошибка была в том, что установить тип курсора можно только в двух местах: в обработчике Willexecute, который вызывается перед вызовом метода Execute объекта recordSet (что-то там многовато параметров, возможно, они не обязательные, но меня - очень напугало, тем более, что не совсем понятно само это всё будет вызваться или всё-таки надо вызывать.. так и вьются в голове CallBack и Overload procedure)

Либо в самом ObjRecordSet.CursorType=3, но уже с последующим RecordSet.Open("запрос", ObjConnections);

Слегка подрезаный реальный код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
СоединениеSQL = Новый ComObject("ADODB.Connection");
СоединениеSQL.Open("Driver={SQL Server Native Client 10.0};Server=SQLVIRTUAL\SQLEXPRESS;Database=BASE;Trusted_Connection=Yes");
ЗаписиSQL = Новый ComObject("ADODB.RecordSet");
ЗаписиSQL.CursorType =  3 ;
ЗаписиSQL.ActiveConnection = СоединениеSQL;
ЗаписиSQL.Open ("select *",СоединениеSQL);
ЭлементыФормы.ИндикаторЗаполнения.МаксимальноеЗначение=ЗаписиSQL.RecordCount;
Пока ЗаписиSQL.EOF= 0  Цикл 
...


ParamCount заработал - Ура!
Всем спасибо.
...
Рейтинг: 0 / 0
3 сообщений из 78, страница 4 из 4
Форумы / [игнор отключен] [закрыт для гостей] / Выпольнить запрос SQL из 1С
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]