Как я могу отправить переменные в хранимую процедуру, используя GridControl - PullRequest
0 голосов
/ 10 апреля 2019

Я использую DevExpress GridControl в Windows Forms, GridControl Дайте мне возможность вызывать хранимую процедуру, но со значениями по умолчанию мне нужно, чтобы пользователь вводил значения, чтобы он мог выполнять поиск с помощью хранимой процедуры.

Это моя основная форма:

enter image description here Слева вы видите, что пользователь может вставить значения, для которых требуется хранимая процедура.

Этомоя хранимая процедура

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;
...