Notesdxlimporter

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

  1. NickProstoNick

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

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Всем привет!
    Вот что случилось... есть импорт таблички при помощи NotesDXLImporter.
    Под версией 8.5 работает.
    Под 7.хх вываливается в ошибку DXL IMPORTER OPERATION FAILED
    Как победить?

    вот фрагмент кода
    Код (Text):
            Call Me.importer.SetInput( Me.stream )
    Call Me.importer.SetOutput (db )

    Me.importer.ReplicaRequiredForReplaceOrUpdate = False
    Me.importer.DocumentImportOption = DXLIMPORTOPTION_CREATE
    Call Me.importer.Process
    Call Me.stream.Close
    ошибка на предпоследней строке
     
  2. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    смотрим ДХЛ - есть ли в ходе версия DTD
     
  3. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    NickProstoNick
    проинсталь нотес клиент, просто нужных DXML схем в клиенте нету, а если их нету то и вывернуть в XML не удастся
     
  4. NickProstoNick

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

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

    Версия dtd 8.5 ;) (это я в логе нашел)
     
  5. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    NickProstoNick
    свезло то как ;)
    у меня дизайнер 8.5 вообще отлетает намертво, ждем 8.5.1
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    можно рискнуть и отрезать ДТД...
    потом попробовать импортнуть
     
  7. NickProstoNick

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

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    это в смысле с сообщением типа "Platform... чего-то там" ?

    Прошу прощения! С этого места по подробней можно?
    Я с ДХЛ не работал до недавно
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    вот так вот указ версия:
    <!DOCTYPE database SYSTEM 'xmlschemas/domino_7_0_3.dtd'>
    <database xmlns='http://www.lotus.com/dxl' version='7.0' maintenanceversion='3.0'

    никто не мешает заменить 8.5 на указ.
    потому отличия м.б. незначительные (в DTD) в случ. с 8.5
    но лучше - при экспорте, использовать DTD от 7-ки (он указ. в экспортере), понятно - что данный ДТД должен присут. в каталогах Нотеса (обычно - он там есть, от предыдущ. версий)
     
  9. NickProstoNick

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

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

    Akupaka А че я?.. О.о

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

    Read-write. Indicates that if a DTD is specified in the XML declaration statement, it should be used to validate the input XML.
    Defined in NotesDXLImporter
    Data type Integer
    Syntax
    To get: option% = notesDXLImporter.InputValidationOption
    To set: notesDXLImporter.InputValidationOption = option%

    Legal values
    VALIDATE_NEVER (0) Do not try to validate.
    VALIDATE_ALWAYS (1) Validate the input.
    VALIDATE_AUTO (2) (Default) If the DTD is specified, validate the input; otherwise, do not validate.
     
  11. NickProstoNick

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

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Akupaka
    Не думал об этом. попробую - отпишусь. Только вопрос... а какой DTD будет использоваться?
     
  12. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    гы :) если VALIDATE_NEVER, то никакой. вот только, возможно, будет ошибка импорта, если импортер наткнется на сложную неизвестную структуру...
    грубо говоря, качество результата я не гарантирую ;)
    ошибку, к стати, можно отловить в другом свойстве - .Log
    и еще глянь .ExitOnFirstFatalError

    к стати! еще камешек в огород lmike :)
    если заменить документ определений ДТД, то (скорее всего) ХМЛ документ не пройдет по нему валидацию, особенно, если в нем содержатся те элементы, которые изменились между версиями документов определений.

    я помню, мы на младших версиях когда импортили в 6-ку док из семерки, то просто брали ДТД семерки и ложили к 6-ке, она нормально хавала описания. но! некоторые вещи ИБМовцы меняли более жестко (у себя в коде), и подкладыванием ДТД оно просто не решалось. пришлось шерстить ДТД искать разницу (благо они упомянули об этом в самих ДТД словом deprecated ?) и приводить документ к оптимальному виду (либо парсером, либо XSLT).
    например, между 6 и 7 была разница в записи таблиц в РТ-полях. потом еще на что-то натыкались, но я уже не помню...
     
  13. NickProstoNick

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

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Ну с этим ничего страшного не произошло :)
    У меня простой импор. пока все работает ;)
     
  14. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    Akupaka - съел ;)
    я оговривался, что в несложных случ. - всё пролезет, и указал "правильный" способ - экспорт с указанием "нижнего" ДТД
     

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