Lotus и MS SQL (LCConnection)

Тема в разделе "Lotus - Программирование", создана пользователем nayke, 29 окт 2012.

  1. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Соединяюсь с базой - запускаю хранимую процедуру. Получаю одну запись.
    Код (Text):
            Dim LCRecord As new Lcfieldlist
    Dim LCField As Lcfield
    Dim fff As Boolean
    fff = LCC.Execute({EXEC proc 1,1,'text',''}, LCRecord)
    MsgBox LCRecord.Recordcount ' вывыодится единица
    If (LCC.Fetch(LCRecord) > 0) Then
    Set LCField=LCRecord.Getfield(1)
    ExecuteProcedure$ = LCField.Value(0)
    End If
    На методе Fetch ловлю ошибку
    ---------------------------

    ---------------------------
    Err EXECUTEPROCEDURE / 260 / 12316 Error: This operation requires an active result set, Connector 'oledb', Method -Fetch-
    ---------------------------
    ОК
    ---------------------------
    нашел в редбуке:

    A requested LCConnection operation cannot be performed unless the connection has an active result set. Produce a result set before attempting this operation. This error is generally produced by calling LCConnection.Fetch without a previous call to a method which produces a result set (such as Execute, Select, Call, or Catalog).

    Но в данном случае метод Execute отработал, что-то вернул соединие есть..

    Подскажите у кого какие идеи.. что-то у меня ресурс на сегодня закончен.
     
  2. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
  3. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Переход на ADO как последний из вариантов конечно возможен.. но не хотелось бы заново переписывать все под другой драйвер, да и не 100%, что все заработает. Поэтому пока бьемся с LCConnection.
     
  4. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Работать будет 100 % если хранимки правильно написаны.
    Ну и красота метода - не нужны никакие ODBC коннекторы.
     
  5. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    С LCConnection Вроде как тоже не нужны) и логики много уже описано.

    А есть пример процедуры запуска хранимки чтобы "на лету" попробовать?
     
  6. Кирилл Шваб

    Кирилл Шваб Well-Known Member

    Регистрация:
    30 июн 2006
    Сообщения:
    143
    Симпатии:
    4
    А если одинарные кавычки на двойные заменить?
     
  7. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Я думаю если бы проблема в синтаксисе была, то LCRecord не вернуло бы. И в редбуке апострофы. Попробую..
     
  8. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    И на Линуксе будет работать вся эта красота?

    nayke
    Переходить на ADO не советовал бы! Это даунгрейд.
    У меня цикл организован вот так:
    <!--shcode--><pre><code class='ls'>While Me.m_LCConnector.LCC.Fetch(LCRecord) 'Fetch вытягивает данные в LCRecord
    Set LCField = LCRecord.Lookup(FieldName) 'получаем поле по имени
    If Not LCField Is Nothing Then
    ' = LCField.Value()
    '...
    Else
    'Здесь запись об ошибке: "Ошибка выполнения хранимой процедуры: в возвращаемой записи отсутствует необходимое поле"
    End If
    Wend[/CODE]Для Oracle работает.
    По MsSQL, надеюсь, что ребята, работавшие с ним, подскажут.
     
  9. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Так вот у меня на Fetch как раз и падает.. хотя без хранимых процедур - Select и Catalog, а затем Fetch нормально работает.
    Для out параметров нет какой-то специфики?
     
  10. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Хранимая процедура внутри себя может не найти записей, в этом случае корректнее всего формировать ложную (пустую) запись внутри хранимой процедуры и возвращать её, а после Fetch уже анализировать на пустоту записи. Как это сделать в хранимой процедуре - не знаю, у нас это ораклоиды делали.
     
  11. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    так вроде записи она возвращает. У меня такой вопрос
    Код (LotusScript):
     fff = LCC.Execute({EXEC proc 1,1,'text',''}, LCRecord)
    последний параметр OUT - я прото передаю '' возможно это некорректно?


    И еще решил изменить execute на Call, получил:
    Код (LotusScript):
     
    LCC.Procedure=MSPrBody     
    Dim Parms As New LCFieldList
    Dim Result As New LCFieldList
    Dim Parm As LCField
    Dim Res As LCField

    LCC.Fieldnames="ID_in1, ID_in2, in3, Result"
    Set Parm=Parms.Append("ID_in1", LCTYPE_FLOAT)
    Parm.value=1
    Set Parm=Parms.Append("ID_in2", LCTYPE_FLOAT)
    Parm.value=2
    Set Parm=Parms.Append("in3", Lctype_text)
    Parm.value= {'text'}
    Set Parm=Parms.Append("Result", Lctype_text)
    Parm.value= {""}

    Call LCC.Call (Parms, 1, Result)

    Set Res = Result.Lookup("Result")
    If (LCC.Fetch (Result) > 0) Then
    StorageProc = Res.value(0)
    End If
    при вызове метода Call получаю
    ---------------------------

    ---------------------------
    Err STORAGEPROC / 282 / 12325Error:

    ErrorRecord: HResult: 0x80040e14

    Description: Invalid parameter 7 (''): Data type 0x23 is a deprecated large object,
    ---------------------------
    ОК
    ---------------------------

    Уже начинаю коситься на хранимку.
    Сталкивался кто с таким?
     
  12. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    nayke
    Отпишись, как решил проблему. Удалось ли нормально работать с MS SQL с помощью LCConnection?
     
Загрузка...
Похожие Темы - Lotus SQL (LCConnection)
  1. swyatogor
    Ответов:
    30
    Просмотров:
    1.207
  2. anna
    Ответов:
    15
    Просмотров:
    1.129
  3. NickProstoNick
    Ответов:
    17
    Просмотров:
    5.321
  4. turumbay
    Ответов:
    19
    Просмотров:
    5.873
  5. yerke
    Ответов:
    48
    Просмотров:
    14.333

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