Попытка вставить строку, используя хранимую процедуру с параметром, связанным с выражением - PullRequest
0 голосов
/ 08 марта 2010

Окружающая среда: asp.net 3.5 (C # и VB), Ms-sql server 2005, экспресс

Таблица

Таблица: tableUser ID (первичный ключ) Имя пользователя

Таблица: userSchedule ID (первичный ключ) thecreator (внешний ключ = tableUser.ID) другие поля

Я создал процедуру, которая принимает параметр username, получает идентификатор пользователя и вставляет строку в Table: userSchedule

Проблема: Использование хранимой процедуры с управлением списком данных только для извлечения данных из базы данных путем передачи текущего имени пользователя с помощью приведенного ниже оператора работает нормально

protected void SqlDataSourceGetUserID_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        e.Command.Parameters["@CurrentUserName"].Value = Context.User.Identity.Name; 
    }

Но при вставке с использованием DetailsView выдает ошибку

Procedure or function OASNewSchedule has too many arguments specified. 

Я использовал

protected void SqlDataSourceCreateNewSchedule_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        e.Command.Parameters["@CreatedBy"].Value = Context.User.Identity.Name;
    }

Подробности Просмотр свойств: поля автогена: выключено, режим по умолчанию: вставка, он показывает все поля, которые могут не ожидаться процедурой, такие как идентификатор (первичный ключ), который не требуется в процедуре, и поле CreatedBy (идентификатор пользователя).

Итак, я попытался удалить 2 поля из подробного просмотра и выдает ошибку

Cannot insert the value NULL into column 'CreatedBy', table 'D:\OAS\OAS\APP_DATA\ASPNETDB.MDF.dbo.OASTest'; column does not allow nulls. INSERT fails. The statement has been terminated.

По некоторым причинам значение параметров не устанавливается.

Кто-нибудь может потрудиться понять это и помочь?

1 Ответ

0 голосов
/ 09 марта 2010

Хорошо, моя ошибка, я не знал, как работает делегирование и что это было. Вместо SqlDataSourceCreateNewSchedule_Selecting (....) я должен был использовать SqlDataSourceCreateNewSchedule_Inserting, чтобы изменить параметр после того, как все было необходимо установить параметр при вставке без выбора.

...