iQ-XML LoadQueue

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

iQ-XML LoadQueue

Сообщение Андрей »

Всем привет !

Подскажите, как правильно загрузить в очередь из 3 полей ID_PAC, W, DR такой файл
<PERS>
<ID_PAC>15</ID_PAC>
<FAM>*****</FAM>
<IM>Александр</IM>
<OT>Иванович</OT>
<W>1</W>
<DR>****17</DR>
<DOCTYPE>14</DOCTYPE>
<DOCSER>****</DOCSER>
<DOCNUM>****</DOCNUM>
<SNILS>075-*******80</SNILS>
</PERS>
<PERS>
<ID_PAC>20</ID_PAC>
<FAM>*******</FAM>
<IM>Александр</IM>
<OT>Васильевич</OT>
<W>1</W>
<DR>1950-*****</DR>
<DOCTYPE>14</DOCTYPE>
<DOCSER>11***</DOCSER>
<DOCNUM>******</DOCNUM>
<SNILS>************</SNILS>
</PERS>
....
пишу

Код: Выделить всё

 If NOT xml:LoadFromFile(l:NameLM) 
   Xml:PrimaryKeyCascade('ID_PAC')    
   !Xml:PrimaryKeyCascade('DR')    
   !Xml:PrimaryKeyCascade('W')    
   If NOT xml:FindNextNode('PERS')
             SRecs = Xml:loadQueue(q:PersQ,True,True)
             XML:DebugMyQueue(q:PersQ,'q:PersQ Contents 1')
             XML:Free()                
   End 
 End
Получаю:
qprs:id_pac,"qprs:dr","qprs:w"
31,"","0"
31,"1962-10-03","2"
100,"","0"
100,"1933-08-13","2"
210,"","0"
210,"1947-11-13","2"
т.е. каждая запись загружается дважды, приходится дополнительно обрабатывать очередь
А как правильно ?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

iQ-XML LoadQueue

Сообщение Игорь Столяров »

Мы давно завязали с iq-XML и здесь надо конечно рассматривать конкретный пример ...
Но если я не ошибаюсь, то по идеологии библиотеки должно быть:

Код: Выделить всё

   ....
   SRecs = Xml:loadQueue(q:PersQ,FALSE,True)
   ....
Попробуйте проверить ... ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

iQ-XML LoadQueue

Сообщение Андрей »

Пробовал, то же самое
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

iQ-XML LoadQueue

Сообщение Admin »

Как то так. Не помню почему но при использовании Xml:LoadFromFile важно что бы поля были описаны как string
В ином случае что то работает криво.

Код: Выделить всё

XMLQueue           QUEUE
BankID                STRING(255)
_UID                  STRING(255)
BankName              STRING(1024)
BankShortName         STRING(1024)
                   END

Код: Выделить всё

    XML:SetProgressWindow(-1)
    IF NOT Xml:LoadFromFile('banks.xml')
       IF NOT XML:FindNextNode('BANKS')
          IF XML:LoadQueue(XMLQueue,TRUE,TRUE)
          END
          !Err# = XML:SetPointer(XML:GetPointer()-1)
          !IF NOT XML:FindNextNode('PROGRAMS')
          !   IF XML:LoadQueue(XMLQueue:1,TRUE,TRUE)
          !   END
          !END
       END
    END
    XML:Free()

Код: Выделить всё

<?xml version="1.0" encoding="windows-1251" ?>
<!--Created with iQ-XML - Date: 01.02.2018  Time: 16:33-->
<!--Справочник банков и программ кредитования-->
 <DATA TYPE="BANKS" VER="2">
 <Send-to>xxx@xxx.xx</Send-to>
  <BANKS>
  <BANKID>1</BANKID>
  <_UID>0A5EB32F-79DA-483D-8371-1D48E107D9CB</_UID>
  <BANKNAME>Банк Русский СТАНДАРТ</BANKNAME>
  <BANKSHORTNAME>Русский стандарт</BANKSHORTNAME>
  </BANKS>
  <BANKS>
  <BANKID>9</BANKID>
  <_UID>5596A7D3-61F8-4E7D-AF17-15D287759D02</_UID>
  <BANKNAME>АО 034Хоум Кредит энд Финанс Банк034</BANKNAME>
  <BANKSHORTNAME>Хоум кредит</BANKSHORTNAME>
  </BANKS>
  <BANKS>
  <BANKID>11</BANKID>
  <_UID>D6E7E7DA-BC51-4F43-8DA6-957556C112A4</_UID>
  <BANKNAME>АО 034ОТП Банк034</BANKNAME>
  <BANKSHORTNAME>ОТП Банк</BANKSHORTNAME>
  </BANKS>
  <BANKS>
  <BANKID>12</BANKID>
  <_UID>8F466764-B54E-43DB-976B-CE8DD01DC4DA</_UID>
  <BANKNAME>АО 034АЛЬФА045БАНК034</BANKNAME>
  <BANKSHORTNAME>АЛЬФА045БАНК</BANKSHORTNAME>
  </BANKS>
  <BANKS>
  <BANKID>14</BANKID>
  <_UID>75006E30-5129-4947-9D6E-AD7C403BABA0</_UID>
  <BANKNAME>АО 034Совкомбанк034</BANKNAME>
  <BANKSHORTNAME>Совкомбанк</BANKSHORTNAME>
  </BANKS>
  <BANKS>
  ...
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

iQ-XML LoadQueue

Сообщение Андрей »

Admin писал(а): 09 Февраль 2018, 9:53 важно что бы поля были описаны как string
Точно ! Заработало ! Спасибо !
Ответить