Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись в XML файл 
:(
    Опции темы
golfV
Дата 11.2.2010, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: 1
Всего: 1



Доброго времени суток!
Появилась такая проблемка, Создаю xml файл и записывю туда данные с формы. Записывается все нормально, только ID записи доходит только до 10 и дальше все время повторяется, некак немогу понять почему
Код

            DateTime datetime = DateTime.Now;
            if (textBox1.Text == "") return;
            if (textBox2.Text == "") return;
            if (textBox3.Text == "") return;
            if (textBox4.Text == "") return;
            if (textBox5.Text == "") return;
            DataRow[] datarows = null;
            //Ищу максимальное ID в DataSet (в Datatable)
            string s = string.Empty;
            try
            {
                datarows = MyDatatable.Select("id=max(id)");
                s = datarows[0]["id"].ToString();
            }
            catch (Exception)
            {

            }
            if (s == "" || s == string.Empty)
            {
                s = "0";
            }
           int i = int.Parse(s) + 1;
            DataRow datarow = MyDataSet.Tables[0].NewRow();
                datarow[0] = Convert.ToString(i);
                datarow[1] = textBox2.Text.Trim();
                datarow[1] = comboBox1.Text.Trim();
                datarow[2] = textBox6.Text.Trim();
                datarow[3] = textBox7.Text.Trim();
                datarow[4] = textBox4.Text.Trim();
                datarow[5] = textBox5.Text.Trim();
                datarow[6] = textBox1.Text.Trim();
                datarow[7] = textBox2.Text.Trim();
                datarow[8] = textBox3.Text.Trim();
                datarow[9] = result.Trim();
                datarow[10] = datetime;
                MyDataSet.Tables[0].Rows.Add(datarow);          
            
            if (i == 1)
            {
                MyDataSet.Tables[0].DefaultView.AllowDelete = true;
                MyDataSet.Tables[0].DefaultView.Delete(0);
            }
         
            textBox3.Text = "";
            textBox2.Text = "";
            textBox1.Text = "";
            MyDataSet.WriteXml(sCurDir + @"\scale.xml", XmlWriteMode.WriteSchema);
            MyDataSet = new DataSet();
            MyDataSet.ReadXml(sCurDir + @"\scale.xml", XmlReadMode.Auto);
            MyDatatable = MyDataSet.Tables[0];

        }

подскажите может я неправельно вычисляю id?

Это сообщение отредактировал(а) golfV - 11.2.2010, 12:18
PM MAIL   Вверх
uranpro
  Дата 11.2.2010, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: 1
Всего: 1



тема называется запись в xml

Это сообщение отредактировал(а) uranpro - 11.2.2010, 12:09


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
kobra
Дата 11.2.2010, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 1
Всего: 9



вообшето зачем расчитывать, когда можно сделать 
Код
            System.Data.DataColumn dc = new System.Data.DataColumn();
            dc.AutoIncrement = true;

правда алгоритм мне не понравился, я бы сделал так
Код
            int i = 1;
            if (MyDatatable.Rows.Count > 0)
            {
                System.Data.DataRow[] datarows = MyDatatable.Select("id=max(id)");
                i = int.Parse(datarows[0]["id"].ToString()) + 1;
            }
, но вроде все в порядке.
проидис по коду дебагером и увидиш где глучит
PM MAIL   Вверх
golfV
Дата 11.2.2010, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: 1
Всего: 1



проходился дебагером, после того как id становится 9 он потом прибовляет к ней 1, когда после это снова прохожу опять показывает что id 9. Немогу понять в чем проблема

PM MAIL   Вверх
kobra
Дата 11.2.2010, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 1
Всего: 9



тип полья сделай интегер. 
для стринга 9 болше чем 10, и даже 8999999.
PM MAIL   Вверх
golfV
Дата 12.2.2010, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: 1
Всего: 1



сделал тип полян int тоже не помогло. Вычисляю id по другому
Код

 int i = 1;
                   if (MyDatatable.Rows.Count > 0)
                   {
                       i = MyDatatable.Rows.Count + 1;
                   }

незнаю на сколько это правельно, но работает.

Это сообщение отредактировал(а) golfV - 12.2.2010, 09:36
PM MAIL   Вверх
kobra
Дата 12.2.2010, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 1
Всего: 9



Цитата(golfV @  12.2.2010,  09:35 Найти цитируемый пост)
незнаю на сколько это правельно, но работает.
плохое решение. если по ходу работы удалить уже введенную строку а потом добавить новую, будет накладка.
Цитата(golfV @  12.2.2010,  09:35 Найти цитируемый пост)
сделал тип полян int тоже не помогло
чудес не бывает
Код

            System.Data.DataTable dt = new System.Data.DataTable();
            System.Data.DataColumn c1 = new System.Data.DataColumn("id", System.Type.GetType("System.Int32"));
            dt.Columns.Add(c1);
            System.Data.DataColumn c2 = new System.Data.DataColumn("text");
            dt.Columns.Add(c2);
            for (int c = 10; c < 30; c++)
            {
                System.Data.DataRow dr = dt.NewRow();
                int i = 1;
                if (dt.Rows.Count > 0)
                {
                    System.Data.DataRow[] dra = dt.Select("id = max(id)");
                    i = int.Parse(dra[0]["id"].ToString()) + 1;
                }
                dr[0] = i.ToString();
                dr[1] = c.ToString();
                dt.Rows.Add(dr);
            }

а так и вычислять не нужно
Код
            System.Data.DataTable dt = new System.Data.DataTable();
            System.Data.DataColumn c1 = new System.Data.DataColumn("id", System.Type.GetType("System.Int32"));
            c1.AutoIncrement = true;
            dt.Columns.Add(c1);
            System.Data.DataColumn c2 = new System.Data.DataColumn("text");
            dt.Columns.Add(c2);
            for (int c = 10; c < 30; c++)
            {
                System.Data.DataRow dr = dt.NewRow();
                dr[1] = c.ToString();
                dt.Rows.Add(dr);
            }



Это сообщение отредактировал(а) kobra - 12.2.2010, 11:41
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1181 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.