none
Procedimiento almacenado no funciona como deberia RRS feed

  • Pregunta

  • Hola, Tengo un problemita con un procedimiento almacenado que me parece que esta bien, pero en la practica no funciona (asi que no debe estar bien)

    es asi, yo en la tabla de la DB tengo una lista de Obras Sociales, con diferentes atributos, entre los cuales esta el Nombre.

    entonces yo quiero crear un procedimiento almacenado con una consulta del tipo 

    Select Nombre from tblObrasSociales 
    Where Nombre like '%ElDATO%'

    entonces lo estoy haciendo asi:

    En el load del formulario correspondiente lo hago de esta forma ( en el txtBuscar.Text, paso la cadena de caracteres que quiero comparar)

      private void frmBuscaOS_Load(object sender, EventArgs e)
            {
                DataSet ds = FVenta.ObrasSociales(txtBuscar.Text);
    
                dt = ds.Tables[0];
                dgvOS.DataSource = dt;
                if (dt.Rows.Count > 0) //si la datatable dt tiene mas de 1 fila, el label se esconde.
                {
                    lblNODatos.Visible = false;
                }
                else
                {
                    lblNODatos.Visible = true;
                }
            }

    el metodo ObrasSociales(); es asi:

      public static DataSet ObrasSociales(string DATO)
            {
    
                
                SqlParameter[] dbParams = new SqlParameter[]
                    {
                         FDBHelper.MakeParam("@Dato", SqlDbType.VarChar, 0, "'%"+DATO+"%'"),
                         
                    };
                
                return FDBHelper.ExecuteDataSet("usp_Modelo_FVenta_NombreOS", dbParams);
    
            }

    el makeParam y el ExecuteDataSet asi:

          public static SqlParameter MakeParam(string paramName, SqlDbType dbType, int size, object objValue)
            {
                SqlParameter param;
    
                if (size > 0)
                    param = new SqlParameter(paramName, dbType, size);
                else
                    param = new SqlParameter(paramName, dbType);
    
                param.Value = objValue;
    
                return param;
            }
    
     public static DataSet ExecuteDataSet(string sqlSpName, SqlParameter[] dbParams)
            {
                DataSet ds = null;
                //try
                //{
                    ds = new DataSet();
                    SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings.Get("connectionString"));
                    SqlCommand cmd = new SqlCommand(sqlSpName, cn);
    				cmd.CommandTimeout = 600;
                    
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
    
                    if (dbParams != null)
                    {
                        foreach (SqlParameter dbParam in dbParams)
                        {
                            da.SelectCommand.Parameters.Add(dbParam);
                        }
                    }
                    da.Fill(ds);
                //}
                //catch (Exception)
                //{
                //    throw;
                //}
                return ds;
            }

    y finalmene el Procedimiento almacenado asi:

    USE [DBLEOSoft_v5]
    GO
    /****** Object:  StoredProcedure [dbo].[usp_Modelo_FVenta_NombreOS]    Script Date: 19/04/2017 14:10:19 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:		<Author,,Name>
    -- Create date: <Create Date,,>
    -- Description:	<Description,,>
    -- =============================================
    ALTER PROCEDURE [dbo].[usp_Modelo_FVenta_NombreOS]
    
    			(@Dato varchar(1000))
    
    AS
    BEGIN
    
    		select Nombre from [dbo].[tblObraSocial]
    	where Nombre like @Dato
    
    END

    cuando yo ejecuto la consulta Sql en el sqlserver me tira la respuesta apropiada, pero en el formulario no funciona.

    No  tira ningún error asi que pienso que el problema esta en como llega la consulta.

    que dicen?


    • Editado Ickaruz miércoles, 19 de abril de 2017 18:01 Faltaron aclaraciones
    miércoles, 19 de abril de 2017 18:00

Respuestas

  • Hola Ickaruz

    Realiza estos cambios:

     public static DataSet ObrasSociales(string DATO)
            {
    
                
                SqlParameter[] dbParams = new SqlParameter[]
                    {
                         FDBHelper.MakeParam("@Dato", SqlDbType.VarChar, 0, DATO),
                         
                    };
                
                return FDBHelper.ExecuteDataSet("usp_Modelo_FVenta_NombreOS", dbParams);
    
            }
    ALTER PROCEDURE [dbo].[usp_Modelo_FVenta_NombreOS]
    
    			(@Dato varchar(1000))
    
    AS
    BEGIN
    
    		select Nombre from [dbo].[tblObraSocial]
    	where Nombre like '%' + @Dato + '%'
    
    END

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.


    • Editado Brayan De La Cruz miércoles, 19 de abril de 2017 18:15
    • Marcado como respuesta Ickaruz miércoles, 19 de abril de 2017 18:17
    miércoles, 19 de abril de 2017 18:14

Todas las respuestas

  • Hola Ickaruz

    Realiza estos cambios:

     public static DataSet ObrasSociales(string DATO)
            {
    
                
                SqlParameter[] dbParams = new SqlParameter[]
                    {
                         FDBHelper.MakeParam("@Dato", SqlDbType.VarChar, 0, DATO),
                         
                    };
                
                return FDBHelper.ExecuteDataSet("usp_Modelo_FVenta_NombreOS", dbParams);
    
            }
    ALTER PROCEDURE [dbo].[usp_Modelo_FVenta_NombreOS]
    
    			(@Dato varchar(1000))
    
    AS
    BEGIN
    
    		select Nombre from [dbo].[tblObraSocial]
    	where Nombre like '%' + @Dato + '%'
    
    END

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.


    • Editado Brayan De La Cruz miércoles, 19 de abril de 2017 18:15
    • Marcado como respuesta Ickaruz miércoles, 19 de abril de 2017 18:17
    miércoles, 19 de abril de 2017 18:14
  • Haa me funciono barbaro te agradezco un monton!!
    miércoles, 19 de abril de 2017 18:17