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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск в таблице DataSet, Помогите переделать кривой код 
:(
    Опции темы
Colloseum
  Дата 28.7.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Написал такой вот код для поиска Primary Key в таблице и дальнейшего редактирования записи.
Оно работает нормально, но как правильно такие операции выполнять.
Поле по которому производится поиск уникально, так что дубликатов быть не должно.

Код

        int PKValue = -1;
        
        DataRow[] row = ds.Tables["Countries"].Select("RegionName = 'Россия' ");
        
        foreach (DataRow searchRow in row)
            PKValue = (int)searchRow["ID"];

        ds.Tables["Countries"].Rows.Find(PKValue).ItemArray = aValues;


PM MAIL   Вверх
mr.DUDA
Дата 28.7.2007, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


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

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



Да всё правильно вроде. Только непонятно, что в aValues. И если найдена одна запись, то цикл foreach можно остановить вообще-то..


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 28.7.2007, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Что-то я не понимаю зачем тут цикл foreach вообще?

Код

        DataRow[] rows = ds.Tables["Countries"].Select("RegionName = 'Россия' ");
        
        if (rows.Count >0)
        {
            int PKValue = (int)row[0]["ID"]; // Каждая страна уникальна в таблице
            ds.Tables["Countries"].Rows.Find(PKValue).ItemArray = aValues;
        }

PM MAIL WWW ICQ   Вверх
Colloseum
Дата 29.7.2007, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Не работает, rows не содержит Count 

Error    1    'System.Array' does not contain a definition for 'Count'    C:\Documents and Settings\Администратор\Мои документы\Visual Studio 2005\Projects\Dict_Region_ClassProcess\Dict_Region_ClassProcess\Classes.cs    59    18    Dict_Region_ClassProcess

foreach я тоже дкмаю не нужн но не могу без него переделать код.

А это ж массив значений object[] aValues для изменения значений объекта.
PM MAIL   Вверх
Exception
Дата 29.7.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Можно было догадаться, что имелось ввиду свойство Length. Просто в одних языках длину массива зовут count, в других -- length, запутаться элементарно.
А правильно будет вот так:
Код
DataRow[]  rows = ds.Tables ["Countries"].Select  ("RegionName = 'Россия'");
if  (rows.Length > 0)
{
    int PKValue = (int) rows [0]["ID"];
    ds.Tables ["Countries"].Rows.Find (PKValue).ItemArray = aValues;
}

PM   Вверх
ivashkanet
Дата 29.7.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(Exception @  29.7.2007,  11:50 Найти цитируемый пост)
Можно было догадаться, что имелось ввиду свойство Length.

Ага ;-)
Цитата(Exception @  29.7.2007,  11:50 Найти цитируемый пост)
Просто в одних языках длину массива зовут count, в других -- length, запутаться элементарно.

Нее, язык один и тот же smile Просто я давно не имел дело с массивами, все, понимаешь ли, коллекции, а там Count

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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