powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как получить результат ХП на aspx странице
12 сообщений из 12, страница 1 из 1
Как получить результат ХП на aspx странице
    #38994333
Фотография febonacci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток всем,

у меня вот такой вопрос:

есть ХП:

Код: sql
1.
2.
3.
4.
5.
ALTER PROC [dbo].[GetID] 
AS
BEGIN
SELECT MAX(record_id) FROM  [dbo].[sampletbl]
END



И мне нужно получить результат в страницу:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ACSConnectionString"].ConnectionString);
SqlCommand comm2 = new SqlCommand();

            comm2.CommandText = "GetID";
            comm2.CommandType = CommandType.StoredProcedure;
            comm2.Connection = conn;

            // необходимо добавить следующую запись в БД  
            string idinserter = "ХК05-" + comm2.CommandText + "/21"; 

            SqlParameter sentnumParam = new SqlParameter("sentnumber", idinserter);

            comm.Parameters.Add(sentnumParam);
            
            conn.Open();
            comm2.ExecuteNonQuery();
            conn.Close();



Но я получаю следующую запись в БД:

ХК05-System.Data.Sql

За ранее благодарю !
...
Рейтинг: 0 / 0
Как получить результат ХП на aspx странице
    #38994335
Фотография febonacci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
идея такого, что при каждой новой записи, ХП выдает последний ID таблицы, и на основе этого создается номер записи.
...
Рейтинг: 0 / 0
Как получить результат ХП на aspx странице
    #38994338
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых я не нашел, где вообще что-то вставляется в таблицу.
Во-вторых, почему бы не воспользоваться Identity, зачем вычислять новый номер вручную?
...
Рейтинг: 0 / 0
Как получить результат ХП на aspx странице
    #38994413
Фотография febonacci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
спасибо, ЗА исправление)

Вот моя задача:
страница ввода_данных.aspx
страница просмотр.aspx (здесь стоит GridView к которому привязаны три таблицы, через View)

Organ: @organ varchar (100) TextBox
Subject: @sunject varchar (200) TextBox
Sent number: "text1" + @sentnumber + "text2" varchar (20) // планирую получить через код С#
Entry date:    @date smalldatetime Label

Значение трех полей я получаю через ХП DataInsert:

Код: sql
1.
2.
3.
4.
5.
6.
7.
ALTER PROC [dbo].[DataInsert]
(@organ varchar (100), @subject varchar(200), @sentnumber varchar(20), @entrydate smalldatetime)
AS
BEGIN
INSERT INTO [dbo].[sampletbl] (organ, subject, sentnumber, entrydate)
VALUES (@organ, @subject, @sentnumber, @entrydate)
END



Последний ID таблицы получаю через ХП GetID:

Код: sql
1.
2.
3.
4.
5.
ALTER PROC [dbo].[GetID] 
AS
BEGIN
SELECT MAX(record_id) FROM  [dbo].[sampletbl]
END



Добавление в БД (C# code):

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
            //sozdanie connectionsting-a
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ACSConnectionString"].ConnectionString);
            SqlCommand comm = new SqlCommand();

            // vizov xranimoi proceduri
            comm.CommandText = "DataInsert"; 
            comm.CommandType = CommandType.StoredProcedure;
            comm.Connection = conn;

            // vizov vtoroi xranimoi proceduri dlya polucheniya poslednego ID
            comm2.CommandText = "GetID";
            comm2.CommandType = CommandType.StoredProcedure;
            comm2.Connection = conn;
               
            string idinserter = "ХК05-" + comm2.CommandText + "/21";
            SqlParameter organParam = new SqlParameter("organ", organtxt.Text);
            SqlParameter subjectParam = new SqlParameter("subject", subjecttxt.Text);
            SqlParameter sentnumParam = new SqlParameter("sentnumber", idinserter);

            DateTime dt = DateTime.Now;
            datelbl.Text = dt.ToString("d", CultureInfo.CreateSpecificCulture("de-DE"));


            SqlParameter entrydateParam = new SqlParameter("entrydate", datelbl.Text);

            comm.Parameters.Add(organParam);
            comm.Parameters.Add(subjectParam);
            comm.Parameters.Add(sentnumParam);
            comm.Parameters.Add(entrydateParam);

            conn.Open();
            comm.ExecuteNonQuery();
            comm2.ExecuteNonQuery();
            conn.Close();

            GridView1.DataBind();





Проблема:

при добавлении новой записи, @sentnumber должен быть равным "ID последней записи + 1".
Как получить это значение ?
...
Рейтинг: 0 / 0
Как получить результат ХП на aspx странице
    #38994416
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
febonacciпри добавлении новой записи, @sentnumber должен быть равным "ID последней записи + 1".
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
ALTER PROC [dbo].[DataInsert]
(@organ varchar (100), @subject varchar(200), @entrydate smalldatetime)
AS
declare @sentnumber varchar(20)
SELECT @sentnumber=cast(MAX(record_id)+1 as varchar(20)) FROM  [dbo].[sampletbl]

INSERT INTO [dbo].[sampletbl] (organ, subject, sentnumber, entrydate)
VALUES (@organ, @subject, @sentnumber, @entrydate)

так что ли?
...
Рейтинг: 0 / 0
Как получить результат ХП на aspx странице
    #38994433
Фотография febonacci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый Shocker.Pro,

спасибо, работает.

Подскажите пож-ста, где здесь моя ошибка:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ALTER PROC [dbo].[DataInsert]
(@organ varchar (100), @subject varchar(200), @emp_id int, @entrydate smalldatetime)
AS
BEGIN
declare @sentnumber varchar(20)
SELECT @sentnumber=cast(MAX(record_id)+1 as varchar(20)) FROM  [dbo].[sampletbl]

INSERT INTO [dbo].[sampletbl] (organ, subject, sentnumber, emp_id, entrydate)
VALUES (@organ, @subject, 'ХК/05-' + @sentnumber + @emp_id, @emp_id, @entrydate)

END



Как ранее писал:
Sent number: "text1" + @sentnumber + "text2" varchar (20) // планирую получить через код С#
где,
text1 = const
text2 = @employee_id // планирую получить из dropdownlist.

Но в MS Sql получаю следующую ошибку:

Сообщение 245, уровень 16, состояние 1, процедура DataInsert, строка 9
Ошибка преобразования значения varchar "ХК/05-8" в тип данных int.

Как правильно передать @sentnumber в виде:
@sentnumber = "XK/05-" + @sentnumber + @employee_id

Спасибо, за саппорт !
...
Рейтинг: 0 / 0
Как получить результат ХП на aspx странице
    #38994434
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно немного включить серое вещество, ведь ответ есть на две строки выше

Код: sql
1.
cast(@emp_id as varchar)
...
Рейтинг: 0 / 0
Как получить результат ХП на aspx странице
    #38994435
Фотография febonacci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый Shocker.Pro,

действительно все заработало!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
ALTER PROC [dbo].[DataInsert]
(@organ varchar (100), @subject varchar(200), @emp_id int, @entrydate smalldatetime)
AS
BEGIN
declare @sentnumber varchar(20)
SELECT @sentnumber=cast(MAX(record_id)+1 as varchar(20)) FROM  [dbo].[sampletbl]

INSERT INTO [dbo].[sampletbl] (organ, subject, sentnumber, emp_id, entrydate)
VALUES (@organ, @subject, 'ХК/05-' + @sentnumber + '/' + cast(@emp_id as varchar(10)), @emp_id, @entrydate)



Спасибо, еще раз !

p.s.: посоветуйте литературу, пож-ста, по этим темам. Пользуюсь сайтом lynda.com, где полезного много, но все в узкой форме дается.
...
Рейтинг: 0 / 0
Как получить результат ХП на aspx странице
    #38994465
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смотря по каким "этим".
в данном случае явно нужно прочитать учебник по основам БД и по SQL/TSQL на базе MSSQL Server
...
Рейтинг: 0 / 0
Как получить результат ХП на aspx странице
    #38994471
Фотография febonacci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

понятно, спасибо!
...
Рейтинг: 0 / 0
Как получить результат ХП на aspx странице
    #38999865
Фотография febonacci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток,

я добавил еще несколько контролов в страницу, и изменил код. Но к сожалению получаю в конце ошибку.
Помогите, плиз, где моя ошибка:

Store Procedure:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ALTER PROC [dbo].[DataInserter]
(@employee_id int, @doctype_id int, @docchar_id int, @authority varchar (100), @subject varchar (200), @entrydate datetime, @login varchar (50))
AS
BEGIN
DECLARE @sentnumber varchar (20)
SELECT @sentnumber = CAST(MAX(Letter_ID)+1 as varchar(20)) FROM [dbo].[SentLetters]

INSERT INTO [dbo].[SentLetters] (Employee_ID, DocType_ID, DocChar_ID, Authority, Subject, Sentnumber, Entrydate, Login)
VALUES (@employee_id, @doctype_id, @docchar_id, @authority, @subject, 'ХК/05-' + @sentnumber + '/' + cast(@employee_id as varchar(10)),@entrydate,@login)
END



Code behind:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
  SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["NameofCS"].ConnectionString);
        SqlCommand comm = new SqlCommand();
        
        // присоединяем ХП.
        comm.CommandText = "DataInserter";
        comm.CommandType = CommandType.StoredProcedure;
        comm.Connection = conn;

        // Добавление значений в поля таблицы
        SqlParameter employeeparam = new SqlParameter("employee_ID", int.Parse(ddlemployee.SelectedItem.Value));
        SqlParameter doctypeparam = new SqlParameter("doctype_ID", int.Parse(ddldoctype.SelectedItem.Value));
        SqlParameter doccharparam = new SqlParameter("docchar_ID", int.Parse(ddlemployee.SelectedItem.Value));
        SqlParameter authorityparam = new SqlParameter("authority", txtauthority.Text);
        SqlParameter subjectparam = new SqlParameter("subject", txtsubject.Text);
        SqlParameter sentnumberparam = new SqlParameter("sentnumber", @sentnumber);
        SqlParameter entrydateparam = new SqlParameter("entrydate", txtentrydate.Text);
        SqlParameter loginparam = new SqlParameter("login", "jsomon");

        comm.Parameters.Add(employeeparam);
        comm.Parameters.Add(doctypeparam);
        comm.Parameters.Add(doccharparam);
        comm.Parameters.Add(authorityparam);
        comm.Parameters.Add(subjectparam);
        comm.Parameters.Add(sentnumberparam);
        comm.Parameters.Add(entrydateparam);
        comm.Parameters.Add(loginparam);
       
        // открываем коннекшен, и выполняем команду записи
        conn.Open();
        comm.ExecuteNonQuery();
        //закрываем коннекшен
        conn.Close();



Далее в поля формы добавляю данные, и при нажатии кнопки получаю ошибку:

Код: css
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Ошибка сервера в приложении '/'.

Для процедуры или функции DataInserter указано слишком много аргументов.

Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода. 

Сведения об исключении: System.Data.SqlClient.SqlException: Для процедуры или функции DataInserter указано слишком много аргументов.

Ошибка источника: 


Строка 46:         // открываем коннекшен, и выполняем команду записи
Строка 47:         conn.Open();
[color=red]Строка 48:         comm.ExecuteNonQuery();[/color]
Строка 49:         //закрываем коннекшен
Строка 50:         conn.Close();

Исходный файл: c:\Users\wert\Documents\Visual Studio 2013\WebSites\Letters\EnrollLetter.aspx.cs    Строка: 48 

Трассировка стека: 


[SqlException (0x80131904): Для процедуры или функции DataInserter указано слишком много аргументов.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +1789294
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5340642
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +244
   System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +1691
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +275
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) +1421
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +177
   System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) +208
   System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +163
   EnrollLetter.Button1_Click(Object sender, EventArgs e) in c:\Users\wert\Documents\Visual Studio 2013\WebSites\Letters\EnrollLetter.aspx.cs:48
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9628614
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724



Помогите найти мою ошибку.

Спасибо !
...
Рейтинг: 0 / 0
Как получить результат ХП на aspx странице
    #38999919
Фотография febonacci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел проблему.

Поле sentnumber получает значение здесь:
Код: sql
1.
 SqlParameter sentnumberparam = new SqlParameter("sentnumber", @sentnumber);

;

А остальные поля:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
comm.Parameters.Add(employeeparam);
        comm.Parameters.Add(doctypeparam);
        comm.Parameters.Add(doccharparam);
        comm.Parameters.Add(authorityparam);
        comm.Parameters.Add(subjectparam);
        comm.Parameters.Add(sentnumberparam); // экстра запись 
        comm.Parameters.Add(entrydateparam);
        comm.Parameters.Add(loginparam);
       



Поэтому получал ошибку:
Код: css
1.
Для процедуры или функции DataInserter указано слишком много аргументов.



Спасибо, всем !
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как получить результат ХП на aspx странице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]