|
|
|
Supreme Being
      
участник
Last Login: 16.04.2008 11:44
Сообщ.: 366,
Visits: 2 473
|
|
Для хранения своих отчетов решил писать их данные в xml файл.<?xml version="1.0" encoding="utf-8" ?> <queries> <qr1> <STYLE_LIST></STYLE_LIST> <server_type>DB2</server_type> <HOST>10.17.226.224</HOST> <DBALIAS>INFVNU</DBALIAS> <LOGIN>ADM</LOGIN> <PSW>*</PSW> <TITLE>TITLE</TITLE> <COL_TITLES> <COL1>1</COL1> <COLn>2</COLn> </COL_TITLES> <SQL_AREA>SELECT * FROM MY_TBL</SQL_AREA> </qr1> <qr2> <STYLE_LIST>pastel.css</STYLE_LIST> <server_type>MS SQL</server_type> <HOST>10.200.1.64</HOST> <DBALIAS>INFVNU</DBALIAS> <LOGIN>user</LOGIN> <PSW>*</PSW> <TITLE>TITLE1</TITLE> <COL_TITLES> <COL1>3</COL1> <COLn>4</COLn> </COL_TITLES> <SQL_AREA>SELECT * FROM MY_TBL where r1='3'</SQL_AREA> </qr2> </queries> Однако при попытке создать для него схему, или перейти в режим просмотра Data выдается сообщение: The same table (Coll_TITLES) cannot be the child table in two nested relations. В чем моя ошибка? С уважением,
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| В самом XML ошибок нет. Насколько я понимаю, ты в Visual Studio все это делаешь. У меня в VS2005 схема для данного файла сгенерировалась без проблем. Точно так же работает переход в режим Data grid. Может у тебя более старая версия VS, которая по каким-то причинам не поддерживает генерацию схем для XML документов с вложенными узлами с одинаковыми именами. Не могу это точно утверждать так как негде проверить. Несмотря на отсутстиве ошибок, я бы этот XML файл по другому бы организовал. К примеру, нет совершенно никакой необходимости включать номер узла в имя тега. Это ненужно и, более того, глупо так как тогда от XML схемы толку никакого не будет. <?xml version="1.0" encoding="utf-8"?> <queries> <query> <style /> <server_type>DB2</server_type> <host>10.17.226.224</host> <dbAlias>INFVNU</dbAlias> <login>ADM</login> <psw>*</psw> <title>title</title> <columns> <column>1</column> <column>2</column> </columns> <sqlQuery>SELECT * FROM MY_TBL</sqlQuery> </query> <query> <style>pastel.css</style> <server_type>MS SQL</server_type> <host>10.200.1.64</host> <dbAlias>INFVNU</dbAlias> <login>user</login> <psw>*</psw> <title>title1</title> <columns> <column>3</column> <column>4</column> </columns> <sqlQuery>SELECT * FROM MY_TBL where r1='3'</sqlQuery> </query> </queries> Кстати, зачем тебе вообще эта XML схема нужна?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 16.04.2008 11:44
Сообщ.: 366,
Visits: 2 473
|
|
Bazile, ты как всегда прав! У меня действительно FCL 1.1 VS2003. И как только я убрал нумерацию в имени тегов схема сгенерилась.
Зачем мне нужна схема?
Каждый раз когда кто нибудь сформирует\сгенрирует отчет, этот набор параметров будет сохраняться в XML файле. При старте приложения содержимое файла считывается и отображается в виде ссылок. Кроме того, возможно этот файл будут редактировать не только через мое приложение. Чтобы контролировать содержимое я хочу использовать схему. Единственное, что меня смущает это возможность совместного доступа к файлу. С XML будет отказ в доступе, как с txt, или поддерживаются какие то методы как СУРБД?
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Понятно. Применение XML схемы в этом случае реально оправданно. Проблемы совместного доступа тебе придется самому разруливать. Это в задачи XML никак не входит. В конце концов на уровне ОС существует достаточно механизмов позволяющих, например, заблокировать файл на запись другими процессами, но разрешить чтение. В данном же случае по моему вообще проблем быть не должно. Открыл XML файл, считал настройки в память, закрыл файл. Если настройки изменились, открыл файл по новой и записал их.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 16.04.2008 11:44
Сообщ.: 366,
Visits: 2 473
|
|
А что же делать если 2 разных отчета попытаются одновременно записать 2 пользователя. Мне лично пока приходит только мысль о новом временном файле, при каждом сохранении отчета, с последующем добавлением их по очереди в главный файл данных. Не пробовал, но боюсь тогда будет медленно работать.
(не говорю о реальной субд по условию, что приложение должно работать с любой БД поддерживающей SQL)
|
|
|
|