Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Задача – считать с xml'a как будто это база данных

331
29 июня 2008 года
alexburzak
335 / / 23.04.2006
Написал:
Код:
Dim dsUsers As New DataSet
        Dim dtUsers As New DataTable
        Try
            Dim strVirtualPath As String = Request.ApplicationPath & "/wap/Users.xml"
            dsUsers.ReadXml(Request.MapPath(strVirtualPath), XmlReadMode.ReadSchema)
        Catch ex As Exception
            scToLogicPC.Close()
            Response.Redirect("errors.aspx?numerr=506")
        End Try
        dtUsers = dsUsers.Tables.Add("Users")
        Dim i As Integer
        For i = 0 To dtUsers.Rows.Count - 1
            With dtUsers.Rows(i)
                lUsers.Items.Add(.Item("Mobile"))
            End With
        Next

Код:
<?xml version="1.0" standalone="yes"?>
<Users>
  <xs:schema id="Users" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="Users" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="User">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="ID" type="xs:string" minOccurs="0" />
                <xs:element name="FName" type="xs:string" minOccurs="0" />
                <xs:element name="LName" type="xs:string" minOccurs="0" />
                <xs:element name="Mobile" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <User>
    <ID>7</ID>
    <FName>Avi</FName>
    <LName>Amar</LName>
    <Mobile>0555555800</Mobile>
  </User>
</Users>

Почему-то в DataSet'e ничего не наблюдаются.
------------------------------------------------------
Плиз, подскажите где моя ошибка?
241
30 июня 2008 года
Sanila_san
1.6K / / 07.06.2005
Да вроде всё правильно, во всяком случае на этапе чтения таблицы. А что в отладчике? В таблице есть хоть какие-нибудь данные или структура (то есть, читается ли схема)? В целях отладки может быть стоит разделить чтение схемы и данных на два этапа, может быть, стоит схему вообще читать из отдельного файла, благо средствами Студии она создаётся легко.
331
30 июня 2008 года
alexburzak
335 / / 23.04.2006
Цитата: Sanila_san
Да вроде всё правильно, во всяком случае на этапе чтения таблицы. А что в отладчике? В таблице есть хоть какие-нибудь данные или структура (то есть, читается ли схема)? В целях отладки может быть стоит разделить чтение схемы и данных на два этапа, может быть, стоит схему вообще читать из отдельного файла, благо средствами Студии она создаётся легко.



В дебагере написано, что dtUsers.Rows.Count равно нулю. Также и в датасете тоже равно нулю. То есть в Луп он просто не заходит. При это считается без исключений и ошибок.

Вообще то цель пройти лупом по таблице и в ручную добавить информацию.
Плиз, подскажите как я могу это сделать?

241
30 июня 2008 года
Sanila_san
1.6K / / 07.06.2005
Не совсем понял, что там добавляется строкой
 
Код:
With dtUsers.Rows(i)
                lUsers.Items.Add(.Item("Mobile"))
            End With
        Next
Ну это ладно, мне интересно другое. В XML, насколько вижу, уже есть данные в количестве одной строки. А где эта строка в datatable? Она там вообще есть? А названия столбцов есть в таблице? Если схема читается, столбцы должны быть и иметь названия. И потом, у меня вызывает сомнение вот эта строка:
 
Код:
dtUsers = dsUsers.Tables.Add("Users")
Разве это должно работать?
331
30 июня 2008 года
alexburzak
335 / / 23.04.2006
Добавляется:
 
Код:
<mobile:List ID="lUsers" Runat="server"></mobile:List>

"Разве это должно работать?"
А как я могу построчно считать с датасета?
Прикрепил снимок отладчика, столбцов не наблюдается.
Именно поэтому не могу понять, что не так я делаю.

Есть возможность написать пару строчек кода, показать мне как это должно быть?
241
01 июля 2008 года
Sanila_san
1.6K / / 07.06.2005
Студии под руками нет, поэтому отвечаю долго. Итак, ошибка в присваивании. Правильно написать так:
 
Код:
dsUsers.Tables.Add(dtUsers)

Взято в МСДН отсюда и отсюда.

Построчно считать с датасета нельзя, ибо в нём нет строк. Построчно можно считать с таблицы в датасете через обращение DataSet.Tables.Item(). А в снимке отладчика вы как раз самое интересное и забыли: там нельзя посмотреть на ItemArray или на названия столбцов в таблице.
331
02 июля 2008 года
alexburzak
335 / / 23.04.2006
Цитата: Sanila_san
Студии под руками нет, поэтому отвечаю долго. Итак, ошибка в присваивании. Правильно написать так:
 
Код:
dsUsers.Tables.Add(dtUsers)

Взято в МСДН отсюда и отсюда.

Построчно считать с датасета нельзя, ибо в нём нет строк. Построчно можно считать с таблицы в датасете через обращение DataSet.Tables.Item(). А в снимке отладчика вы как раз самое интересное и забыли: там нельзя посмотреть на ItemArray или на названия столбцов в таблице.



Спасибо, разобрался с Вашей помощью.
+1
Так и сделал.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог