Set Uimydoc=ws.editdocument(true, Mydoc)

Тема в разделе "Lotus - Программирование", создана пользователем yerke, 9 апр 2009.

  1. yerke

    yerke Well-Known Member

    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    привет всем
    собсвенно сабж

    1) доки с едитабл рич тескст полями
    поля содержат текст формулы и рисунки

    2) отбираю эти доки и в цикле копирую их значения рт полей и вставляю в ворд

    Код (Text):
    Set uimydoc=ws.EditDocument(True, mydoc)
    If Not uimydoc.EditMode Then uimydoc.EditMode=True
    Call uimydoc.Refresh(True)
    Call uimydoc.GotoField("RTF")
    Call uimydoc.SelectAll
    Call uimydoc.Copy
    Call uimydoc.DeselectAll
    Call uimydoc.Close(False)
    Call wdApp.Application.Selection.PasteAndFormat(20)    
    '=
    '=
    но в определенном месте в цикле возникает ошибка и выводится окошка с "NDS is Running"
    и клиент закрывается

    помогите разобратся в чем трабла

    в NSD файле пишется
    ### PASS 2 : FATAL THREAD with STACK FRAMES 1/10 [ NLNOTES:1658:1558]
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Может ошибка на строке Call wdApp.Application.Selection.PasteAndFormat(20)?
     
  3. yerke

    yerke Well-Known Member

    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    нет
    точно знаю ошибка в

    Set uimydoc=ws.EditDocument(True, mydoc)
    пробовал тока его оставить все ровно так выходило


    причем эта ошибка в цикле возникает не везде

    Set uimydoc=ws.EditDocument(True, mydoc)
    иногда работает нормально
     
  4. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    я немного не с ответом, но, возможно, совет придется к стати...

    а что, если не открывать каждый документ, а создать новый, в цикле из каждого выбранного документа взять RT-итем и сложить его в аналогичный в этом новом документе, а в конце открыть только один новый и скопировать оттуда в ворд?..
     
  5. yerke

    yerke Well-Known Member

    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    я так и делаю :)

    Код (Text):
    Function DXL_Q(doc As NotesDocument)
    '=
    On Error Goto EH
    '=
    Dim mydoc As NotesDocument
    Dim uimydoc As NotesUIDocument
    '=
    Set rti=doc.GetFirstItem("QUESTION")
    If rti Is Nothing Then Exit Function
    '=
    Set mydoc=cdb.CreateDocument
    Call mydoc.ReplaceItemValue("FORM", "FOR-PRINT-TODAYS-RESULTS")
    Call rti.CopyItemToDocument(mydoc, "RTF")
    Call mydoc.ComputeWithForm(False, False)
    '=
    Set exporter=ses.CreateDXLExporter
    outputer=exporter.Export(mydoc)
    '=
    isRTI=(Instr(1, outputer, "<picture", 5) > 0) Or (Instr(1, outputer, "<object", 5) > 0)
    '=print
    Writes(doc.NUMBER(0)+") ")
    '=
    If isRTI Then      
    Set uimydoc=ws.EditDocument(True, mydoc)
    If Not uimydoc.EditMode Then uimydoc.EditMode=True
    Call uimydoc.Refresh(True)
    Call uimydoc.GotoField("RTF")
    Call uimydoc.SelectAll
    Call uimydoc.Copy
    Call uimydoc.DeselectAll
    Call uimydoc.Close(False)
    Call wdApp.Application.Selection.PasteAndFormat(20)    
    Else
    Writes(Cstr(rti.Text))
    End If
    '=
    Set mydoc=Nothing
    Set uimydoc=Nothing
    '=
    Writes(Chr(13))
    Exit Function
    EH:
    Resume Next
    End Function
    '=
    '=

    и в цикле вызываю фунцию DXL_Q(doc As NotesDocument)

    и On Error Goto EH
    тоже не ловит ошибку

    блин
     
  6. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    на сколько я понимаю, то ты получил коллекцию документов и для каждого выполняешь функцию DXL_Q,
    которая для каждого документа открывает его (грубо говоря, пусть даже и копируя сначала в новый док)!
    и копирует содержимое в ворд

    а я тебе говорю, что сначала собери все доки из коллекции в один, и только его! открой и скопируй в ворд!
     
  7. yerke

    yerke Well-Known Member

    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    113
    вот магическое число лотуса
    :D

    если вывать в цикле следующую комбинацию
    Set uimydoc=ws.EditDocument(True, mydoc)

    113 раз
    то оказывается клиент лотуса падает :lol:
     
  8. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Т.е. открыть 113 окон? :D

    Хорошо, что он упал отдельно от виндовза...
     
Загрузка...
Похожие Темы - Set Uimydoc=ws editdocument(true
  1. Lamerman
    Ответов:
    0
    Просмотров:
    27
  2. torquemada163
    Ответов:
    18
    Просмотров:
    183
  3. [ixTor]
    Ответов:
    2
    Просмотров:
    149
  4. victorhalf
    Ответов:
    3
    Просмотров:
    225
  5. alexey webware
    Ответов:
    1
    Просмотров:
    633

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