8.х Не выполняется запрос. ADODB

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Romik, 18 фев 2010.

  1. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    При выполнении происходит ошибка при чтении параметра EOF
    и выдаётся ошибка "Ошибка при вызове метода контекста (EOF). Операция не доускается если объект закрыт."
    В чём проблема?

    Код:
    СтрокаЗапроса = "DECLARE @startDate DATETIME
    | SET @startDate=GetDate()-93
    | CREATE TABLE #temp0
    |(
    |	Fid int, 
    |	OwnerDistID int, 
    |	fType int, 
    |	fActiveFlag int, 
    |	MasterFid int, 
    |	fname nvarchar(100), 
    |	faddress nvarchar(100),
    |	exid nvarchar(50), 
    |	StageFlag int
    |)
    |DECLARE @StageFlag INT
    |SET @StageFlag = 1
    |INSERT INTO #temp0
    |SELECT * FROM (
    |	SELECT  tDS_FACES.Fid, 
    |		tDS_FACES.OwnerDistID, 
    |		tDS_FACES.fType, 
    |		tDS_FACES.fActiveFlag, 
    |		tDS_Orders.MasterFid, 
    |		tDS_FACES.fname, 
    |		tDS_FACES.faddress,
    |		tDS_FACES.exid,
    |		@StageFlag as StageFlag
    .... и тд
    </span>
    RS = Новый COMОбъект("ADODB.Recordset");
    RS.Open(СтрокаЗапроса,Соединение);
    КолСтрокВЗапросе = 0;
    Пока RS.EOF()= 0 Цикл
    КолСтрокВЗапросе = КолСтрокВЗапросе + 1;
    Fid           = RS.Fields("Fid").Value;
    AttrValueName = RS.Fields("AttrValueName").Value;
    fname         = RS.Fields("fname").Value;
    faddress      = RS.Fields("faddress").Value;
    RS.MoveNext();	
    КонецЦикла;
    
    </FONT></FONT></pre>
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    эээ...не вижу RS.Execute() перед перебором результата......
  3. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Метод объекта не обнаружен.....
  4. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Ошибка в запросе....
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    А если без Set И Declare? Я просто сомневаюсь, что по ADODB возможно такое......
  6. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Да, скорей всего.
    Так как скорей всего выполняется последняя команда.
    В общени разделить надо.
    Сейчас попробую.

    Можешь убрать у меня в запросе? Я посмотрю на твой вариант дейсвий.
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    кхм...однако и в синтаксисе у тебя ошибки. С ADO работают так:

    SQL= новый COMОбъект( "ADODB.Connection" );
    SQL.ConnectionString= "driver={SQL Server}; server="+СокрЛП(Сервер)+"; uid="+СокрЛП(Польз)+"; pwd="+СокрЛП(Пароль)+"; Database="+СокрЛП(БазаИсточник);
    SQL.CommandTimeOut=0;
    SQL.open();

    СтрокаЗапроса = "ТекстЗапроса";

    dbf = SQL.execute(СтрокаЗапроса);

    Пока dbf.EOF()= 0 Цикл
    ..........
    ..........
    ..........
    dbf.MoveNext();
    КонецЦикла;
  8. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Разницы нет. Результат тот же самый и моим синтаксисом.
    Скажи лучше как обработать запрос, чтобы работал)
  9. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    разберись с названиями таблиц и полей, которые хочешь выбрать.
    как я уже сказал, SET и DECLARE не используй.

    будет что-то вроде:

    "SELECT "АлиасИмениТаблицы".* FROM ИмяБазы.ВидТаблицы."<НужнаяТаблица>" "АлиасИмениТаблицы"


    Например:

    SELECT "_Acc14".*
    FROM upp81.dbo."_Acc14" "_Acc14".


    Лично я использую MSQuery для того, чтобы создать текст запроса.
  10. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    пример к SQL

    Вложения:

Поделиться этой страницей