Re[10]: XML. Как прочитать связанные таблицы
От: Lloyd Россия  
Дата: 01.06.07 14:44
Оценка: +1 :)
Здравствуйте, <Аноним>, Вы писали:

А>Как мне сначала считать все между тегами <TABLE S_INCKEY="1"> ... </TABLE >. Потом между тегами <TABLE S_INCKEY="2"> ... </TABLE > и т.д. Причем считывая распознавать получаемые поля.


Для чего?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[15]: XML. Как прочитать связанные таблицы
От: Аноним  
Дата: 04.06.07 09:29
Оценка: :)
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, <Аноним>, Вы писали:


L>>>Почему именно кусками? Ты же что-то про датасет говорил.


А>>Два вариента

А>>1) Кусками
А>>2) В датасет, в котором будут 2 связанные таблицы, с той целью чтобы потом поэлементно по нему пробежаться и закинуть все в базу.

L>Ну так воспользуйся вторым вариантом. Или с ним тоже какие-то проблемы?


Да, проблема
Дело в том, что когда я загружаю в датасет то таблицы получаются не связанные. Надо как-то в ручную считывать...
XML. Как прочитать связанные таблицы
От: Аноним  
Дата: 31.05.07 12:11
Оценка:
Есть XML файл, примерно такой:


<?xml version="1.0" encoding="windows-1251"?>
<TABLE S_INCKEY="1">
     <FEILD1>TEMP1</FEILD1>
     <FEILD2>TEMP2</FEILD2>
     <FEILD3>
          <ADD_FEILD1>TEMP1.1<ADD_FEILD1>
          <ADD_FEILD2>TEMP1.2<ADD_FEILD2>
     </FEILD3>
</TABLE >
<TABLE S_INCKEY="2">
     <FEILD1>TEMP3</FEILD1>
     <FEILD2>TEMP4</FEILD2>
     <FEILD3>
          <ADD_FEILD1>TEMP2.1<ADD_FEILD1>
          <ADD_FEILD2>TEMP2.2<ADD_FEILD2>
     </FEILD3>
</TABLE >
......


Когда я читаю его методом DataSeta — ReadXML, то получается 2 не связанные таблицы. Но мне необходимо считывать учитывая данные связи. Может это можно сделать вручную?
Помогите плиз примером.
Re: XML. Как прочитать связанные таблицы
От: Аноним  
Дата: 01.06.07 12:07
Оценка:
Хотя бы в каком направлении копать?
Re[2]: XML. Как прочитать связанные таблицы
От: Lloyd Россия  
Дата: 01.06.07 12:09
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Хотя бы в каком направлении копать?


Не совсем понятно, что ты хочешь.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: XML. Как прочитать связанные таблицы
От: Аноним  
Дата: 01.06.07 13:43
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Не совсем понятно, что ты хочешь.


Есть XML файл, примерно такой:


<?xml version="1.0" encoding="windows-1251"?>
<TABLE S_INCKEY="1">
     <FEILD1>TEMP1</FEILD1>
     <FEILD2>TEMP2</FEILD2>
     <FEILD3>
          <ADD_FEILD1>TEMP1.1<ADD_FEILD1>
          <ADD_FEILD2>TEMP1.2<ADD_FEILD2>
     </FEILD3>
</TABLE >
<TABLE S_INCKEY="2">
     <FEILD1>TEMP3</FEILD1>
     <FEILD2>TEMP4</FEILD2>
     <FEILD3>
          <ADD_FEILD1>TEMP2.1<ADD_FEILD1>
          <ADD_FEILD2>TEMP2.2<ADD_FEILD2>
     </FEILD3>
</TABLE >
......


Прочитав его мне необходимо получить следующее:
Таблица1: TABLE
--------------------------
FEILD1 | FEILD2 | FEILD3 |
--------------------------
TEMP1 | TEMP2 | ключ1 |
--------------------------
TEMP3 | TEMP4 | ключ2 |
--------------------------

И Таблица2:
------------------------------------
<ADD_FEILD1> | <ADD_FEILD2> | Ключ |
------------------------------------
TEMP1.1 | TEMP1.2 | ключ1|
------------------------------------
TEMP2.1 | TEMP2.2 | ключ2|
------------------------------------

Т.е. мне необходимо получить 2 связанные таблицы. Вообще я не понимаю как можно вручную, по очереди считывать
сначала все что относится к <TABLE S_INCKEY="1">, потом все что относится к <TABLE S_INCKEY="2">, тем самым формируя запись для Таблицы1 и относящиеся к ней записи из таблицы2.
Re[4]: XML. Как прочитать связанные таблицы
От: Lloyd Россия  
Дата: 01.06.07 13:47
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Т.е. мне необходимо получить 2 связанные таблицы.


Что такое связанные таблицы и где вы их хотите получить?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: XML. Как прочитать связанные таблицы
От: Аноним  
Дата: 01.06.07 13:57
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Что такое связанные таблицы и где вы их хотите получить?


Хочу их получить в ДатаСете, а вообще без разницы.
Самое лучше это читать частями, т.е. сначала получить и разобрать по полям все что относится к
<TABLE S_INCKEY="1">
<FEILD1>TEMP1</FEILD1>
<FEILD2>TEMP2</FEILD2>
<FEILD3>
<ADD_FEILD1>TEMP1.1<ADD_FEILD1>
<ADD_FEILD2>TEMP1.2<ADD_FEILD2>
</FEILD3>
</TABLE >

потом все
<TABLE S_INCKEY="2">
<FEILD1>TEMP3</FEILD1>
<FEILD2>TEMP4</FEILD2>
<FEILD3>
<ADD_FEILD1>TEMP2.1<ADD_FEILD1>
<ADD_FEILD2>TEMP2.2<ADD_FEILD2>
</FEILD3>
</TABLE >

и т.д.
Под связанными таблицами понимаю то что у одной есть primary key, а у второй foreign key. По ключам осуществялется связь
Re[6]: XML. Как прочитать связанные таблицы
От: Lloyd Россия  
Дата: 01.06.07 14:03
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Под связанными таблицами понимаю то что у одной есть primary key, а у второй foreign key. По ключам осуществялется связь


Приведенный xml не содержит информации о ключах. Просто добавь их в коде, или используй типизированный датасет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: XML. Как прочитать связанные таблицы
От: Аноним  
Дата: 01.06.07 14:18
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, <Аноним>, Вы писали:


А>>Под связанными таблицами понимаю то что у одной есть primary key, а у второй foreign key. По ключам осуществялется связь


L>Приведенный xml не содержит информации о ключах. Просто добавь их в коде, или используй типизированный датасет.


А как можно кусками считывать?
Чтобы выставлять ключи
Re[8]: XML. Как прочитать связанные таблицы
От: Lloyd Россия  
Дата: 01.06.07 14:23
Оценка:
Здравствуйте, <Аноним>, Вы писали:

L>>Приведенный xml не содержит информации о ключах. Просто добавь их в коде, или используй типизированный датасет.


А>А как можно кусками считывать?

А>Чтобы выставлять ключи

Ниче не понял. Попробуй еще раз.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: XML. Как прочитать связанные таблицы
От: Аноним  
Дата: 01.06.07 14:40
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Ниче не понял. Попробуй еще раз.


Вот файл
<?xml version="1.0" encoding="windows-1251"?>
<TABLE S_INCKEY="1">
     <FEILD1>TEMP1</FEILD1>
     <FEILD2>TEMP2</FEILD2>
     <FEILD3>
          <ADD_FEILD1>TEMP1.1<ADD_FEILD1>
          <ADD_FEILD2>TEMP1.2<ADD_FEILD2>
     </FEILD3>
</TABLE >
<TABLE S_INCKEY="2">
     <FEILD1>TEMP3</FEILD1>
     <FEILD2>TEMP4</FEILD2>
     <FEILD3>
          <ADD_FEILD1>TEMP2.1<ADD_FEILD1>
          <ADD_FEILD2>TEMP2.2<ADD_FEILD2>
     </FEILD3>
</TABLE >
......


Как мне сначала считать все между тегами <TABLE S_INCKEY="1"> ... </TABLE >. Потом между тегами <TABLE S_INCKEY="2"> ... </TABLE > и т.д. Причем считывая распознавать получаемые поля.
Re[11]: XML. Как прочитать связанные таблицы
От: Аноним  
Дата: 04.06.07 06:28
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, <Аноним>, Вы писали:


А>>Как мне сначала считать все между тегами <TABLE S_INCKEY="1"> ... </TABLE >. Потом между тегами <TABLE S_INCKEY="2"> ... </TABLE > и т.д. Причем считывая распознавать получаемые поля.


L>Для чего?


Если подробней. У меня есть dll, которую я использую для складывания данных в базу. Поэтому необходимо вынимать данные такими кусками и каждый кусок сохранять в базу.
Re[12]: XML. Как прочитать связанные таблицы
От: Lloyd Россия  
Дата: 04.06.07 09:06
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>>>Как мне сначала считать все между тегами <TABLE S_INCKEY="1"> ... </TABLE >. Потом между тегами <TABLE S_INCKEY="2"> ... </TABLE > и т.д. Причем считывая распознавать получаемые поля.


L>>Для чего?


А>Если подробней. У меня есть dll, которую я использую для складывания данных в базу. Поэтому необходимо вынимать данные такими кусками и каждый кусок сохранять в базу.


Почему именно кусками? Ты же что-то про датасет говорил.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[13]: XML. Как прочитать связанные таблицы
От: Аноним  
Дата: 04.06.07 09:10
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, <Аноним>, Вы писали:


А>>>>Как мне сначала считать все между тегами <TABLE S_INCKEY="1"> ... </TABLE >. Потом между тегами <TABLE S_INCKEY="2"> ... </TABLE > и т.д. Причем считывая распознавать получаемые поля.


L>>>Для чего?


А>>Если подробней. У меня есть dll, которую я использую для складывания данных в базу. Поэтому необходимо вынимать данные такими кусками и каждый кусок сохранять в базу.


L>Почему именно кусками? Ты же что-то про датасет говорил.


Два вариента
1) Кусками
2) В датасет, в котором будут 2 связанные таблицы, с той целью чтобы потом поэлементно по нему пробежаться и закинуть все в базу.
Re[14]: XML. Как прочитать связанные таблицы
От: Lloyd Россия  
Дата: 04.06.07 09:26
Оценка:
Здравствуйте, <Аноним>, Вы писали:

L>>Почему именно кусками? Ты же что-то про датасет говорил.


А>Два вариента

А>1) Кусками
А>2) В датасет, в котором будут 2 связанные таблицы, с той целью чтобы потом поэлементно по нему пробежаться и закинуть все в базу.

Ну так воспользуйся вторым вариантом. Или с ним тоже какие-то проблемы?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[16]: XML. Как прочитать связанные таблицы
От: Lloyd Россия  
Дата: 04.06.07 09:48
Оценка:
Здравствуйте, <Аноним>, Вы писали:

L>>Ну так воспользуйся вторым вариантом. Или с ним тоже какие-то проблемы?


А>Да, проблема

А>Дело в том, что когда я загружаю в датасет то таблицы получаются не связанные. Надо как-то в ручную считывать...

Я вроде тебе написал уже, что нужно или вручную создать связи, или использовать типизированный датасет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[16]: XML. Как прочитать связанные таблицы
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.06.07 10:00
Оценка:
Здравствуйте, <Аноним>, Вы писали:
А>Да, проблема
А>Дело в том, что когда я загружаю в датасет то таблицы получаются не связанные. Надо как-то в ручную считывать...
В тех примерах, которые ты привел, таблицы никак не связаны. Поэтому и непонятно, чего ты хочешь получить.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[17]: XML. Как прочитать связанные таблицы
От: Аноним  
Дата: 04.06.07 10:55
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, <Аноним>, Вы писали:

А>>Да, проблема
А>>Дело в том, что когда я загружаю в датасет то таблицы получаются не связанные. Надо как-то в ручную считывать...
S>В тех примерах, которые ты привел, таблицы никак не связаны. Поэтому и непонятно, чего ты хочешь получить.

Может я не так понимаю как отобразить связанные таблицы в XML. Если сохранять их датасетовским методом, то в выходном файле остатся записи о ключах, которые мне не нужны.

Вот 2 таблицы

t1:
id
text

t2:
id
text
id1_in_t1


По полю id1_in_t1 вторая таблица связана с первой.
Связь такого же плана отображена в xml файле. Вопрос в том как считывать полученный файл.

А вообще задача заключается в том чтобы сделать импорт и экспорт из своей базы в заданный xml файл.
Re[18]: XML. Как прочитать связанные таблицы
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.06.07 11:25
Оценка:
Здравствуйте, <Аноним>, Вы писали:
А>Может я не так понимаю как отобразить связанные таблицы в XML. Если сохранять их датасетовским методом, то в выходном файле остатся записи о ключах, которые мне не нужны.
Таак, теперь пошла уже запись в XML, который до сих пор мы только читали.
Постарайся сосредоточиться (крайне рекомендую отказаться от препаратов, искажающих сознание), перечитать свои постинги и 1 (один) раз внятно объяснить, что тебе нужно, а не что ты делаешь. Какие записи? Куда остаются? Зачем тебе отображать что-то куда-то? Ты не знаешь, как добавлять констреинты в DataTable.Constraints?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[19]: XML. Как прочитать связанные таблицы
От: Аноним  
Дата: 04.06.07 13:58
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, <Аноним>, Вы писали:

А>>Может я не так понимаю как отобразить связанные таблицы в XML. Если сохранять их датасетовским методом, то в выходном файле остатся записи о ключах, которые мне не нужны.
S>Таак, теперь пошла уже запись в XML, который до сих пор мы только читали.
S>Постарайся сосредоточиться (крайне рекомендую отказаться от препаратов, искажающих сознание), перечитать свои постинги и 1 (один) раз внятно объяснить, что тебе нужно, а не что ты делаешь. Какие записи? Куда остаются? Зачем тебе отображать что-то куда-то?

Ok, постараюсь.

S> Ты не знаешь, как добавлять констреинты в DataTable.Constraints?

знаю

Начну с самого начала.
В моей клиентской программе отображаются три связанные таблички. Все связи добавлены в DataSet и все работает нормально. Стоит задача — обеспечить возможность экспорта этих табличек в XML(в определенном виде), а также импорта данных из XML файла(который также создан в определенном виде).

Экспорт данных в XML я сделал. Т.к. метод DataSet.WriteXml мне не подошел, потому что требуется определенный вид выходного XML файла, то экспорт пришлось сделать вручную.
Теперь осталось сделать импорт из XML файла с заданной структурой.

Вот такую структуру XML файла от меня требуют:

<?xml version="1.0" encoding="windows-1251"?>
<EXPORT> - это основной нод
    <CODE_TABLE S_INCKEY="1"> - это имя таблицы и проперти в виде имени ключа и его значения
        <CODE>code1</CODE>
        <CREATEDT>23.05.2007 10:15:37</CREATEDT>
                .........
                <ADD_CODE1> - вот здесь начинается перечисление записей ПЕРВОЙ зависимой таблицы которые соответсвуют S_INCKEY="1"
                        .........
                </ADD_CODE1> 
                <ADD_CODE1> - следующая строчка зависимой таблицы и т.д.
                        .........
                </ADD_CODE1> 
                <ADD_CODE1> 
                        .........
                </ADD_CODE1> 
                ... и т.д.

                <ADD_CODE2> - вот здесь начинается перечисление записей ВТОРОЙ зависимой таблицы которые соответсвуют S_INCKEY="1"
                        .........
                </ADD_CODE2> 
                ... и т.д.
        </CODE_TABLE>
        далее идет следующая запись CODE_TABLE, уже с другим ключем (S_INCKEY="2") и т.д.
        ....
</EXPORT>


Такую структуру я сформировал вручную из ДатаСета, в котором отображаются 3 зависимые таблицы.
Теперь надо прочитать такой XML файл и сформировать из него ДатаСет из 3х зависимых таблиц.
Или построчно читать XML файл следующим образом: прочитать запись CODE_TABLE которая соответствует S_INCKEY="1" и добавить ее в базу и так до конца.
Вот именно с этим этапом у меня возникли затруднения.
Re[20]: XML. Как прочитать связанные таблицы
От: Lloyd Россия  
Дата: 04.06.07 14:04
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Такую структуру я сформировал вручную из ДатаСета, в котором отображаются 3 зависимые таблицы.

А>Теперь надо прочитать такой XML файл и сформировать из него ДатаСет из 3х зависимых таблиц.
А>Или построчно читать XML файл следующим образом: прочитать запись CODE_TABLE которая соответствует S_INCKEY="1" и добавить ее в базу и так до конца.
А>Вот именно с этим этапом у меня возникли затруднения.

Смотри класс XmlDocument. А лучше — написать xslt, который перегонит твой xml в xml, кторый сможет обработать DataSet.ReadXml.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: XML. Как прочитать связанные таблицы
От: Mihas  
Дата: 06.08.08 07:02
Оценка:
Всем привет.
Позвольте поднять тему — у меня схожая проблема.

Eсть xsd-схема:

    <xs:element name="DataSet">
      <xs:complexType>
        <xs:sequence>

          <xs:element name="Table1" >
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Field1" >
                <xs:element name="Field2"   />

                <xs:element name="Table2"  >
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element name="Field1" />
                      <xs:element name="Field2" />
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>


Как видно, таблица Table2 "вложена" в Table1.
Когда я загружаю схему в DataSet с помощью ReadXmlSchema, в обеих таблицах автоматически создаются поля Table1_Id и формируется связь Table2.Table1_Id -> Table1.Table1_Id.
Теперь мне нужно как-то научиться управлять созданием этого ключа. Т.е. самому описать в XSD какие именно поля должны связывать таблицы.

Немного поковырявшись, нашел такой способ:
      <xs:unique name="Constrain1">
        <xs:selector xpath=".//Table1" />
        <xs:field xpath="@link" />
      </xs:unique>

      <xs:keyref name="Relation1" refer="Constrain1">
        <xs:selector xpath=".//Table2" />
        <xs:field xpath="@link_up" />
      </xs:keyref>


Действительно, связь создается. Но и автоматическая при этом не пропадает.

Помогите, плиз, справиться с излишней самостоятельностью десериалайзера.
Re[2]: XML. Как прочитать связанные таблицы
От: Mihas  
Дата: 06.08.08 11:29
Оценка:
Одолел
Всем спасибо за участие
Re: XML. Как прочитать связанные таблицы
От: _Morpheus_  
Дата: 06.08.08 12:19
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Есть XML файл, примерно такой:


А>Когда я читаю его методом DataSeta — ReadXML, то получается 2 не связанные таблицы. Но мне необходимо считывать учитывая данные связи. Может это можно сделать вручную?


перед тем как загружать xml, загрузи вначале в датасет схему данных (XSD), где у тебя будет описана связь таблиц...
... << RSDN@Home 1.2.0 alpha rev. 676>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.