Problema con Insert SqlDataSource

giovedì 26 giugno 2008 - 18.05

paolomanfrin Profilo | Newbie

Buongiorno a tutti... ho il seguente problema:
Viene sollevata una eccezione [ Sintassi non corretta in prossimità di 'InsertOrder' ] quando tento di fare una Insert usando
SqlDataSource e una stored procedure di nome InsertOrder memorizzata su SQL Server 2005.

============================================================
La STORED PROCEDURE è la seguente

CREATE PROCEDURE dbo.InsertOrder
@CustomerID nvarchar(5),
@EmployeeID int,
@OrderAmount money
AS
INSERT INTO [Orders]([CustomerID],[EmployeeID],[OrderDate],[Amount],[Paid])
VALUES (@CustomerID,@EmployeeID,GETDATE(),@OrderAmount,0)
==================================================================
La chiamata da codice viene fatta in questo modo:

SqlDataSource sqlDS = new SqlDataSource();
sqlDS.ConnectionString = CONN_STRING;
sqlDS.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;

sqlDS.InsertParameters.Add("CustomerID", order.CustomerID);
sqlDS.InsertParameters.Add("EmployeeID", order.EmployeeID.ToString());
sqlDS.InsertParameters.Add("OrderAmount", order.Amount.ToString());

sqlDS.InsertCommand = "InsertOrder;

sqlDS.Insert();
sqlDS.InsertParameters.Clear();
===================================================
Non riesco a capire che errore commetto...
Grazie a tutti coloro che sapranno fornirmi indicazioni in merito.
Paolo

Stroke Profilo | Junior Member

Così, detto al volo, se customerID è un numero progessivo automativo non lo puoi inserire così, devi toglierlo dalla query.
ciao
Furio
http://www.opsi.ws

paolomanfrin Profilo | Newbie

Ciao, No non è progressivo. OrderID è progressivo, solo che devo inserire CustomerID e EmployeeID per tener traccia di chi ha compilato l'ordine ( L'impiegato ) e a chi è riferito l'ordine ( Il cliente ).

Stroke Profilo | Junior Member

Un altro errore possibile è un campo in tabella che non può essere lasciato vuoto, oppure la non corrispondenza dei tipo di campi. CustomerID è presumibilmente il codice utente nella store lo metti come testo.

Nel codice che hai inserito:
sqlDS.InsertCommand = "InsertOrder;
mancano gli apici di chiusura
ciao
Furio
http://www.opsi.ws

paolomanfrin Profilo | Newbie

Gli apici del comando sono stata una svista nel Copy & Paste.

Comunque il problema era banalmente il seguente...
Avevo omesso il seguente comando:

sqlDS.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;

che di default è posto su Text
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5