none
consulta dataset procedimientos almacenados c# RRS feed

  • Pregunta

  • hola gente tengo un dataset con dos datatables cada uno generados por un procedimiento almacenado. Luego en un reporte de crystal report lo que hago son dos subreports uno para cada contenido generado por los SP. como hago para ejecutar los dos SP y llenar el dataset??

    Este es mi código:

     DataSetOrdenProduccion ds = new DataSetOrdenProduccion();
                SqlConnection conexion = new SqlConnection();
                conexion.ConnectionString = conexion.ConnectionString = @"Data Source=.\SQLSERVER2012;" + "Initial Catalog=BdVinoteca;" + "Integrated Security=true";
                conexion.Open();
                SqlCommand cmd = new SqlCommand("sp_reporteOrdenProduccion",conexion);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@idOrdenProd", idOrden);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(ds, "sp_reporteOrdenProduccion");

    Ahi ejecuto un solo procedimiento pero no se como agregar el otro para luego hacer da.Fill() completando los dos datatables.

    Despues en mi informe vinculo el report al dataset y de ahi a sus respectivos subinformes.

    Esta bien plantearlo así??

    saludos

    jueves, 15 de agosto de 2019 5:45

Respuestas

  • hola

    Simplemente realzias el Fill() usando la misma instancia de DataSet indicando el nombre del otro DataTable

    Si tienes

    //resto codigo

    SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds, "sp_reporteOrdenProduccion");

    solo haces

    //resto codigo

    SqlDataAdapter da2 = new SqlDataAdapter(cmd2); da2.Fill(ds, "nombre datatable");

    como veras en ambos el "ds" es el mismo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 15 de agosto de 2019 5:53

Todas las respuestas

  • hola

    Simplemente realzias el Fill() usando la misma instancia de DataSet indicando el nombre del otro DataTable

    Si tienes

    //resto codigo

    SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds, "sp_reporteOrdenProduccion");

    solo haces

    //resto codigo

    SqlDataAdapter da2 = new SqlDataAdapter(cmd2); da2.Fill(ds, "nombre datatable");

    como veras en ambos el "ds" es el mismo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 15 de agosto de 2019 5:53
  • hola

    Simplemente realzias el Fill() usando la misma instancia de DataSet indicando el nombre del otro DataTable

    Si tienes

    //resto codigo

    SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds, "sp_reporteOrdenProduccion");

    solo haces

    //resto codigo

    SqlDataAdapter da2 = new SqlDataAdapter(cmd2); da2.Fill(ds, "nombre datatable");

    como veras en ambos el "ds" es el mismo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    hola kpas me expresé mal , tengo que ejecutar dos SP, cada uno tiene su respectivo datatable
    jueves, 15 de agosto de 2019 6:29
  • hola

    >>tengo que ejecutar dos SP, cada uno tiene su respectivo datatable

    ok pero puedes unirlos en un unico dataset

    ademas en el codigo que nos muestras el procedure carga un dataset, no un datatable, sino deberia ser

    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(dt);

    por otro lado cuando haces

     DataSetOrdenProduccion ds = new DataSetOrdenProduccion();

    eso es un dataset tipado, tienes un xsd que debes cargar, eso de que cada procedure tiene un datatable no aplica, debes cargar los datatable que definan ese dataset tipado sino no vas a poder asignarlo al reporte

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 15 de agosto de 2019 7:14