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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Обработка модифицированных записей вручную, VS 2005 
:(
    Опции темы
Papirus
Дата 2.7.2007, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вынужден повторить свой вопрос, поскольку, имхо, модераторы не обосновано перенесли его на форум "Базы данных под .NET". С сохранением в БД все как раз благополучно. Вопрос как избежать дублирования добавленных записей в таблирце на клиенте?


Собственно говоря, проблема со вставкой данных (Insert). Есть необходимость самому прописать обновление данных, т.к. то, что отображается в гриде - результат объединения нескольких таблиц + некоторые проверки непосредственно в селекте... и т.д. Короче, я посчитал, что проще по примеру VS2003, а возможно и VS2005 в пакет инструкций добавлять Select (SelectCommand.CommandText), в котором ID = identity. Сохранение производится стандартно: 
Код

       Dim tblChange As New DataTable = tbl.GetChanges
        For Each rw As DataRow In tblChange
            Select Case rw.RowState
                Case DataRowState.Added
                Case DataRowState.Deleted
                Case DataRowState.Modified

            End Select
        Next

Однако, пока не удается полученную из БД строку подставить вместо обрабатываемой. 
Пробовал так (CmdIns - сохраненный объект SqlCommand для вставки данных, cnn - SqlConnection, tbl - обновляемая таблица)
Код

        Dim tblChange As New DataTable = tbl.GetChanges
        For Each rw As DataRow In tblChange
            Select Case rw.RowState
                Case DataRowState.Added
                       cnn.Open()
                       Dim rd As SqlDataReader = CmdIns.ExecuteReader
                       Dim tb As New DataTable 
                       tb.Load(rd)
                       rd.Close()
                       cnn.Close()
                       rw.ItemsArray = tb.Rows(0).ItemsArray ' это 1-й способ и он работает, если поле ID не Primary Key. В противном случае - сообщение об ошибке ID is ReadOnly
         
                      tbl.Merge(tb) ' это 2-й способ
                      rw.Delete()  ' вот как быть здесь не знаю(?????????) пока. Без Dalete в гриде видим удвоенное количество этих строк. А с Delete  опять ошибка, но уже в связи с изменением количества элементов в коллекции... :dash1 
                      rw = tb.Rows(0)
                Case DataRowState.Deleted
                Case DataRowState.Modified

            End Select
        Next


А значение ID обязательно надо иметь для последущей работе клиента с данными... 

Может после заполнения таблицы удалять Primary Key?
PM MAIL ICQ   Вверх
stab
Дата 2.7.2007, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

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



Модератор: вынужден закрыть вашу тему. покажите мне хоть одну строчку в вашем коде\посте, которая имеет отношение к WinForms.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




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


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

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