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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глюки в СУБД? 
:(
    Опции темы
ДобренькийПапаша
Дата 18.3.2010, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

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



В клиенте есть две функции, одна вызывает в цикле хранимку выполняющую INSERT, работает корректно. И почти такая же функция вызывает почти такую же хранимку только выполняющую UPDATE, но работает некорректно.

Код

private void InsertWeekControl(KeyValuePair<string, ControlPlan> discipline)
        {
            for (byte j = 0; j < dgvWeekPlan.Columns.Count; j++)
            {
                ProcInvoke.ExecuteQuery("InsertWeekControl", QueryType.ExecuteNonQuery,
                                        CommandType.StoredProcedure,
                                        new ProcParams("@term", SqlDbType.TinyInt, 0,
                                                       byte.Parse(cbTerms.Text[0].ToString()),
                                                       ParameterDirection.Input),
                                        new ProcParams("@year", SqlDbType.Int, 0,
                                                       int.Parse(udYear.Value.ToString()),
                                                       ParameterDirection.Input),
                                        new ProcParams("@specialitySypher", SqlDbType.VarChar, 50,
                                                       GetSpecialitySypher(), ParameterDirection.Input),
                                        new ProcParams("@disciplineSypher", SqlDbType.VarChar, 50,
                                                       discipline.Key,
                                                       ParameterDirection.Input),
                                        new ProcParams("@group", SqlDbType.VarChar, 50, this.chosenGroup,
                                                       ParameterDirection.Input),
                                        new ProcParams("@week", SqlDbType.TinyInt, 0, j + 1,
                                                       ParameterDirection.Input),
                                        new ProcParams("@controlType", SqlDbType.VarChar, 50,
                                                       discipline.Value.WeekControl[j],
                                                       ParameterDirection.Input));
            }
        }
        private void UpdateWeekControl(KeyValuePair<string, ControlPlan> discipline)
        {
            for (byte j = 0; j < dgvWeekPlan.Columns.Count; j++)
            {
                //string all = string.Format("Term:{0};Year:{1};Spec:{2};Discipl:{3};Group:{4};Week:{5};type:{6}",
                //    cbTerms.Text[0].ToString(), udYear.Value.ToString(), GetSpecialitySypher(), discipline.Key,
                //    chosenGroup, j + 1, discipline.Value.WeekControl[j]);
                //MessageBox.Show(all, "UpdateDebug");
                ProcInvoke.ExecuteQuery("UpdateWeekControl", QueryType.ExecuteNonQuery,
                                        CommandType.StoredProcedure,
                                        new ProcParams("@term", SqlDbType.TinyInt, 0,
                                                       byte.Parse(cbTerms.Text[0].ToString()),
                                                       ParameterDirection.Input),
                                        new ProcParams("@year", SqlDbType.Int, 0,
                                                       int.Parse(udYear.Value.ToString()),
                                                       ParameterDirection.Input),
                                        new ProcParams("@specialitySypher", SqlDbType.VarChar, 50,
                                                       GetSpecialitySypher(), ParameterDirection.Input),
                                        new ProcParams("@disciplineSypher", SqlDbType.VarChar, 50,
                                                       discipline.Key,
                                                       ParameterDirection.Input),
                                        new ProcParams("@group", SqlDbType.VarChar, 50, this.chosenGroup,
                                                       ParameterDirection.Input),
                                        new ProcParams("@week", SqlDbType.TinyInt, 0, j + 1,
                                                       ParameterDirection.Input),
                                        new ProcParams("@controlType", SqlDbType.VarChar, 50,
                                                       discipline.Value.WeekControl[j],
                                                       ParameterDirection.Input));
            }
        }


В столбы week и controlType в БД при операции UPDATE вставляются (по всем строкам) только последнее значение из discipline.
Цикл по сути идёт от 1 до 18. Но после Update cтолбец week по всем строкам содержит число 18... 
Код

ALTER PROCEDURE [dbo].[UpdateWeekControl]
@term tinyint,
@year int,
@specialitySypher varchar(50),
@disciplineSypher varchar(50),
@group varchar(50),
@week tinyint,
@controlType varchar(50)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE studying_graphics_weekControl
    SET [week]=@week, controlType=@controlType
    WHERE term=@term                   and 
          [year]=@year                 and 
    specialitySypher=@specialitySypher and 
    disciplineSypher=@disciplineSypher and [group]=@group
END
 


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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