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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема при изменении значения поля в DataRow 
V
    Опции темы
TheRam
Дата 30.12.2014, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день форумчане и с наступающим новым годом!

Нужна помощь, так как я уже всю голову сломал:

Есть база на Sql Server с несколькими таблицами. В программе предусмотрен отчет "печать конвертов" по тем записям, которые выбрал пользователь. При повторном формирования отчета, уже напечатанные записи включатся не должны, для этого я предусмотрел в таблице признак который показывает печаталась ли уже данная запись или нет. Обновить признак у записей, которые уже напечатались, я пытаюсь с помощью процедуры: 
Код

public void UpdateRepData(DataTable repTable)
        {
            ReestrDataSet.Reestr_outRow outRow;
            foreach (DataRow row in repTable.Rows)
            {
                if ((bool)row["Selected"] == true)
                {
                    outRow = reestrDS.Reestr_out.FindBykod(Convert.ToInt32(row["kod"]));
                    outRow.priz = true;
                    reestr_outTA.Update(outRow);
                }
            }
        }


Проблема в том, что процедура ругается на строчку Update и выдает сообщение: "Переполнение SqlDateTime. Должно находиться в пределах от 1/1/1753 12:00:00 AM и 12/31/9999 11:59:59 PM". стал проверять. Одно из полей с датой показывает дату {01.01.0001}, хотя в базе у меня во всех полях проставлена дата {01.01.1900}(Сделал SQL запрос и после него все равно сделал еще и Update по этому полю всех записей, что б у всех точно стояла там дата {01.01.1900}). Пытался выполнить операцию
Код

outRow.date = outRow.date == new DateTime(1, 1, 1) ? new DateTime(1900, 1, 1) : outRow.date;

Она игнорируется и значение не меняется, хотя дебагер показывает true на outRow.date == new DateTime(1, 1, 1) и new DateTime(1900, 1, 1), по идее, должно измениться . В настройках DataSet'а этой таблицы readonly = false для всех полей, проверил. А вот значение outRow.priz = true; меняется. Менял и текстовые поля - без проблем, с помощью обычной операции присваивания.

Почему дата вдруг из {01.01.1900} превращается в {01.01.0001} и как это исправить? или как насильно поменять дату в outRow.date на нужную мне дату?

Это сообщение отредактировал(а) TheRam - 30.12.2014, 12:02
PM MAIL   Вверх
TheRam
Дата 30.12.2014, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



После проведенного исследования выяснилось, что проблема возникает именно при присвоении значения 01.01.1900, если задать другую дату, проблема решается сама собой. Однако, эта проблема встречается только лишь на одном конкретном поле типа datetime. Остальные 3 поля с этим же типом так себя не ведут. Пересоздание столбца и переопределение датасета не помоглао
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

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

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


 




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


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

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