powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт из XML в Access 2007 с индексами
4 сообщений из 4, страница 1 из 1
Импорт из XML в Access 2007 с индексами
    #39928404
AM_ufu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня,

Помогите пожалуйста с импортом

Импорт делаю либо штатным инструментом Аксес либо, если несколько файлов подряд, то через
Код: vbnet
1.
Application.ImportXML filename, acAppendData



Файл xml имеет примерно такой вид

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
-<Head>

<DocumentNo>111113339</DocumentNo>

<CustomerNo>120444</CustomerNo>

<CustomerName>Иванов И.И.</CustomerName>

<DocumentType>0</DocumentType>

<DocumentDate>19022020</DocumentDate>

<!-- items part start -->

-<items>


-<item id="1">

<Article>E</Article>

<QtyPerPos>1.00</QtyPerPos>

<PositionTxt>10ESG сатин пс</PositionTxt>


-<Dimensions>

<Height>3183.0</Height>

<Width>1083.0</Width>

</Dimensions>

-<Structure>

-<Glass>

<Glas1Id>11520110</Glas1Id>

<Glas1ShDesc>10ESG сатин пс</Glas1ShDesc>

<Glas1Desc>10ESG сатин пс</Glas1Desc>

<Glas1Thick>10.00</Glas1Thick>

</Glass>


-<Components>


-<ComponentInfo1>

<ComponentID1>1000010</ComponentID1>

<ComponentDesc1>10мм прозр</ComponentDesc1>

<ComponentQty1>1</ComponentQty1>

<ComponentThickness1>10.00</ComponentThickness1>

<ComponentShortDesc1>10M1</ComponentShortDesc1>

</ComponentInfo1>


-<ComponentProcessings>

<ComponentProcessingsID>9551</ComponentProcessingsID>

<ComponentProcessingsDesc>ESG Стекло</ComponentProcessingsDesc>

<ComponentProcessingsGlassNo>1</ComponentProcessingsGlassNo>

<ComponentProcessingsCompNo>0</ComponentProcessingsCompNo>

<ComponentProcessingsID>221</ComponentProcessingsID>

<ComponentProcessingsDesc>Полировка Прямолинейная</ComponentProcessingsDesc>

<ComponentProcessingsInfo>сторона: 1/2/3/4 </ComponentProcessingsInfo>

<ComponentProcessingsColour/>

<ComponentProcessingsGlassNo>1</ComponentProcessingsGlassNo>

<ComponentProcessingsCompNo>0</ComponentProcessingsCompNo>

<ComponentProcessingsID>401</ComponentProcessingsID>

<ComponentProcessingsDesc>Пескоструйка</ComponentProcessingsDesc>

<ComponentProcessingsGlassNo>1</ComponentProcessingsGlassNo>

<ComponentProcessingsCompNo>1</ComponentProcessingsCompNo>

</ComponentProcessings>

</Components>

</Structure>


-<Processing Sequence="0">

<PosQty>1</PosQty>

<ProcId>9551</ProcId>

<ProcShDesc>ESG SG</ProcShDesc>

<ProcDesc>ESG Стекло</ProcDesc>

<ProcQty>1.00</ProcQty>

<ProcQtyUom>Stk</ProcQtyUom>

<Info>,,,,,,</Info>

<ProcLevel>0</ProcLevel>

<GlassNo>1</GlassNo>

<NetProcPrice>0</NetProcPrice>

</Processing>


-<Processing Sequence="1">

<PosQty>1</PosQty>

<ProcId>221</ProcId>

<ProcShDesc>Пол.Прямол</ProcShDesc>

<ProcDesc>Полировка Прямолинейная</ProcDesc>

<ProcQty>8.48</ProcQty>

<ProcQtyUom>Stk</ProcQtyUom>

<Info>,,,1,2,3,4</Info>

<ProcLevel>0</ProcLevel>

<GlassNo>1</GlassNo>

<NetProcPrice>0</NetProcPrice>

</Processing>

</item>



Проблема в том, что при импорте создаётся таблица item, которая во первых не содержит ключа DocumentNo (номер заказа) от таблицы head, и во вторых, в таблице item не создаётся поле "item id", которое должно служить индексом для всех следующих подтаблиц типа "ComponentProcessings" или "ComponentInfo1" (в подтаблицах тоже соответственно такого поля нет).

Я совсем с xml не знаком, но из того, что наискал - нужен файл преобразования .xsl, который "подскажет" аксесу во время импорта как и куда ставить индексы. Но как сделать такой файл - ответа не нашел. А так же второй вопрос - если при импорте вручную штатной обработкой Аксеса можна выбрать такой файл, то как его выбрать в vba используя Application.ImportXML?
Помогите пожалуйста разобратся.
Спасибо
...
Рейтинг: 0 / 0
Импорт из XML в Access 2007 с индексами
    #39928504
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AM_ufu,

Создайте в Access таблицу которая должна соответствовать вашим хотелкам.
Экспортируйте в формат XML вместе со схемой
откройте и посмотрите как выглядит фай XML и XSD это файл схемы.
...
Рейтинг: 0 / 0
Импорт из XML в Access 2007 с индексами
    #39928532
AM_ufu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ROI
AM_ufu,

Создайте в Access таблицу которая должна соответствовать вашим хотелкам.
Экспортируйте в формат XML вместе со схемой
откройте и посмотрите как выглядит фай XML и XSD это файл схемы.


Я уже пробовал делать что-то подобное. Посоздавал ключи в нужных таблицах. Еспортировал в xml. При импорте выбираю "Преобразовать" и созданный при експорте файл xsl.

Выдаёт ошибку - В приложении обнаружены ошибки при обработке схемы xml. Документ должен содержать только один корневой елемент.

Если сделать импорт без файла xsl в уже ранее созданные таблицы с добавленным полем ключа, то выдаёт ошибку "Microsoft Office Access Database Engine: Индекс или ключ не может содержать пустое значение (Null)." (ошибки сохранены в ошибки импорта.

Что я делаю не так.

Простите за наверно глупые вопросы, но я не програмист и до всего пока доходил "методом тыка" и изучения интернета. Потому прошу помощи и разяснений.
...
Рейтинг: 0 / 0
Импорт из XML в Access 2007 с индексами
    #39928535
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прогляди вот это - авось по делу, ибо навскидку похоже.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт из XML в Access 2007 с индексами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]