我正在Windows窗体上使用DevExpress的GridControl,GridControl为我提供了调用存储过程的选项,但是具有默认值,我需要用户输入值,以便它可以使用存储过程进行搜索。
这是我的主要形式:
这是我的存储过程
ALTER PROCEDURE [dbo].[SPS_PronosticoStock]
@IdProducto INT,
@IdBodega INT,
@FechaInicio DATE,
@FechaFin DATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Contador INT, -- Variable que aumenta hasta llegar a @Rango para el ciclo While
@Rango INT, -- Diferencia de dìas entre @FechaInicio y @FechaFin
@FechaDisplayed DATE, -- Variable que aumentara desde @FechaInicio hasta @FechaFin
@Stock INT
SET @Rango = DATEDIFF(DAY,@FechaInicio , @FechaFin)
SET @Contador = 0
SET @FechaDisplayed = @FechaInicio
SET @Stock = (SELECT Stock FROM Tbl_ProductoBodega WHERE IdProducto = @IdProducto AND IdBodega = @IdBodega)
--Inicia Ciclo WHILE
WHILE @Contador <= @Rango
BEGIN
SELECT
@FechaDisplayed, Tbl_ProductoBodega.Referencia, (@Stock), Tbl_ProductoBodega.ADU,
[Vs_InventarioEnTransitoAcumulado_BETA].CantTotalInsumo, Tbl_ProductoBodega.IdProducto,
Tbl_ProductoBodega.IdBodega
FROM
Tbl_ProductoBodega
INNER JOIN
[Vs_InventarioEnTransitoAcumulado_BETA] ON Tbl_ProductoBodega.IdProducto = [Vs_InventarioEnTransitoAcumulado_BETA].IdProducto
WHERE
Tbl_ProductoBodega.IdProducto = @IdProducto
AND Tbl_ProductoBodega.IdBodega = @IdBodega
--Actualiza las variables locales
SET @FechaDisplayed = DATEADD(DAY, 1, @FechaDisplayed)
SET @Contador = @Contador + 1
SET @Stock= (@Stock) - (SELECT ADU FROM Tbl_ProductoBodega
WHERE IdProducto = @IdProducto AND IdBodega = @IdBodega) +
(SELECT CantTotalInsumo FROM [Vs_InventarioEnTransitoAcumulado_BETA]
WHERE IdProducto = @IdProducto AND IdBodega = @IdBodega)
END
--Finaliza ciclo While
END
带有@的值是用户需要输入到软件的值
这是我一直在处理的代码:
DataTable dt = new DataTable();
String conStr = "Data Source=MSSQLSERVERWA;Initial Catalog=WA_PRUEBAS";
SqlConnection con = new SqlConnection(conStr);
SqlCommand com = new SqlCommand("SPS_PronosticoStock", con);
com.Parameters.AddWithValue(" @IdProducto", Convert.ToInt32(textBox3.Text));
com.Parameters.AddWithValue("@IdBodega", Convert.ToInt32(textBox4.Text));
com.Parameters.AddWithValue("@FechaInicio", Convert.ToInt32(textBox1.Text));
com.Parameters.AddWithValue("@FechaFin", Convert.ToInt32(textBox2.Text));
com.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(com);
try
{
con.Open();
da.Fill(dt);
}
catch (Exception)
{
throw;
}
finally
{
if (con.State == ConnectionState.Open)
con.Close();
}
da.Fill(dt);
gridControl1.DataSource = dt;