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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> изменение параметра у SQLCommand 
:(
    Опции темы
Abr
Дата 13.2.2006, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



хочу отобразить данные из базы, пишу следующий код:
Код


 this.cmdSelEv = new SqlCommand("select * from events", con);
          
 // команда select продукты по конкретному event 
       this.cmdSelProdName = new SqlCommand("select t_name from tovar t, events e" +
         "where e.id_ev=@id_ev ", con);
        cmdSelProdName.Parameters.Add("@id_ev", SqlDbType.Int, 5, "id_ev");
            
            dataAd.SelectCommand = cmdSelEv;
            dataAd.Fill(dset, "Events");
            
            cmdSelProdName.Parameters[0].Value=MyComboBox.SelectedIndex+1;
            dataAd.SelectCommand = cmdSelProdName;
            dataAd.Fill(dset, "ProdName");

            CBoxEvents.DataSource = dset.Tables["Events"];
            CBoxEvents.DisplayMember = "ev_description";
            CBoxEvents.ValueMember = "id_ev";
            cbProd.DataSource = dset.Tables["ProdName"];
            cbProd.DisplayMember = "t_name";


как мне в дальнейшем поменять значение параметра и что б после этого соответственно поменялось отображение данных таблицы "ProdName", например я меняю значение id_ev с помощью одного комбобокса, а в другом мне отображается новые t_name.
я вешаю на событие SelectedIndexChanged следующий код, но без результатно:
Код

cmdSelProdName.Parameters["@id_ev"].Value = CBoxEvents.SelectedIndex + 1;
            dataAd.Update(dset, "ProdName");

PM MAIL   Вверх
-ser-
Дата 14.2.2006, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



как-то все сложно и запутанно. cам запрос, похоже неправильный и, помимо всего, большие сомнения, что строка
Цитата

"where e.id_ev=@id_ev "
вообще будет работать.

идея, как сделать напрямую

в SelectedIndexChanged ты определяешь само значение id_ev и вызываешь метод c параметром id_ev, который заливает один DataSet командой типа
Код

this.cmdSelProdName = new SqlCommand( 
         "SELECT tovar.t_name " + 
         "FROM tovar INNER JOIN " +
               "events ON tovar.tovarID = events.tovarId " +
         "WHERE (events.id_ev = '" + id_ev.ToString() + "')", con);

соответственно, с отображением рез-та запроса в кбоксе.

а еще правильнее, в целях оптимизации, чтобы не насиловать сервер каждый раз при выборе нового индекса (полагаю, у нас не миллионы возможных наименований), я бы залил все возможные tovar.t_name с events.id_ev в DataTable и использовал бы метод Select этой DataTable с необходимым запросом.



--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
Abr
Дата 14.2.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



запрос правильный, я проверял. если поставить вместо
cmdSelProdName.Parameters[0].Value=MyComboBox.SelectedIndex+1;

cmdSelProdName.Parameters[0].Value=1;

то все работает, но ведь это разово, как потом менять параметр и вызывать новое заполнение?

за идею спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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