locked
¿como puedo relacionar un dataset con un formulario? RRS feed

  • Pregunta

  • TENGO UN FORMULARIO AL QUE LE QUIERO SACAR UN REPORTE Y QUIERO MANDARLE LOS DATOS MEDIANTE UN DATASET PERO NO SE COMO RELACIONAR EL DATASET CON EL FORMULARIO  ME PODRIAN AYUDAR (USO COMO LENGUAJE C#)
    viernes, 31 de enero de 2020 15:00

Respuestas

  • hola

    >>cargar los datos del form al dataset para despues mandarlo al reporte 

    solo deberias crear una row en el datatable del dataset, es un dataset tipado, o sea tienes un xsd

    DataRow row = dt.AddRow();
    
    row["campo1"] = textbox1.Text;
    
    //resto campos
    
    dt.Rows.Add(row);


    asi volcarias los datos que usarias en el reporte

    igual esto cambia si usas en dataset tipado, porque pone nombres a las tablas, pero igual la idea es la misma

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 31 de enero de 2020 16:27
  • Los pasos serian:

    1) Construye una instancia del Dataset usando el operador "new".

    2) Usa las propiedades del Dataset para agregarle las tablas y columnas que requiera tu reporte.

    3) Escribe lineas de codigo que vayan leyendo uno por uno cada uno de los datos del formulario e inyectandolos en el dataset. Esto puede ser mas o menos complejo dependiendo de como y donde esten ubicados los datos en tu formulario, pero en el caso mas general de que lo tengas todo en controles separados, puede suponer escribir cientos de lineas de codigo. No hay un mecanismo automatico que te pase al datatable todos los datos de un formulario cualquiera.

    viernes, 31 de enero de 2020 16:27
    Moderador
  • hola 

    con relacionar me refiero a cargar los datos del form al dataset para despues mandarlo al reporte  

    y para el reporte utilizo devexpress

    viernes, 31 de enero de 2020 16:02

Todas las respuestas

  • hola

    A que llamas relacionar ?

    Ese dataset donde los estas cargando sus datos? tienes mas de un form y quieres pasar este de uno a otro

    cuando dices reporte seria? es reporting service, crystal reports, etc

    explicate un poco mas completo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 31 de enero de 2020 15:18
  • hola 

    con relacionar me refiero a cargar los datos del form al dataset para despues mandarlo al reporte  

    y para el reporte utilizo devexpress

    viernes, 31 de enero de 2020 16:02
  • hola

    >>cargar los datos del form al dataset para despues mandarlo al reporte 

    solo deberias crear una row en el datatable del dataset, es un dataset tipado, o sea tienes un xsd

    DataRow row = dt.AddRow();
    
    row["campo1"] = textbox1.Text;
    
    //resto campos
    
    dt.Rows.Add(row);


    asi volcarias los datos que usarias en el reporte

    igual esto cambia si usas en dataset tipado, porque pone nombres a las tablas, pero igual la idea es la misma

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 31 de enero de 2020 16:27
  • Los pasos serian:

    1) Construye una instancia del Dataset usando el operador "new".

    2) Usa las propiedades del Dataset para agregarle las tablas y columnas que requiera tu reporte.

    3) Escribe lineas de codigo que vayan leyendo uno por uno cada uno de los datos del formulario e inyectandolos en el dataset. Esto puede ser mas o menos complejo dependiendo de como y donde esten ubicados los datos en tu formulario, pero en el caso mas general de que lo tengas todo en controles separados, puede suponer escribir cientos de lineas de codigo. No hay un mecanismo automatico que te pase al datatable todos los datos de un formulario cualquiera.

    viernes, 31 de enero de 2020 16:27
    Moderador
  • perdona  mi ignorancia pero como creo un row?
    viernes, 31 de enero de 2020 16:32
  • hola

    >>pero como creo un row?

    depende, estas usando dataset tipado ? o sea el reporte utiliza un xsd

    sino puede usar

    Agregar datos a un objeto DataTable

    que es mas o menos lo que puse en el ejemplo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 31 de enero de 2020 16:36
  • Leandro Tuttini como aplico lo mismo pero con una datagridview
    viernes, 31 de enero de 2020 17:00
  •  >>como aplico lo mismo pero con una datagridview

    es igual solo que vas a tener que iteras las rows del grid en un foreach

    foreach(var row in DataGridView1.Rows){
    
       //aqui creas la row del datatable
    
    }

    saludos

    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 31 de enero de 2020 17:09
  • Leandro este es mi codigo  esta bien asi o que tengo que hacerle?

                                        

     DataTable dt = new DataTable();
                DataRow workRow = dt.NewRow();


                workRow["codigof"] = codigof.Text;
                workRow["cliente"] = cliente.Text;
                workRow["proveedor"] = proveedor.Text;
                workRow["total"] = total.Text;


                dt.Rows.Add(workRow);


                foreach(var row in tblarticulo.Rows)
                {
                    NpgsqlDataAdapter DaRec2 = new NpgsqlDataAdapter();
                    DataTable ddt = new DataTable();
                    DaRec2.Fill(ddt);
                    tblarticulo.DataSource = ddt;
                    tblarticulo.DataMember = "column1";
                    tblarticulo.DataMember = "column2";
                }

    viernes, 31 de enero de 2020 17:29
  • hola

    No entiendo ese codigo, porque haces un foreach de tblarticulo si despues ejecutas un adapter que termina cargando el DataSource del mismo tblarticulo, eso no tiene ningun sentido. No iteras algo que despues vas asignar

    Ademas usas un NpgsqlDataAdapter pero de cual command ? que SELECT ejecutas ?

    de donde sale tblarticulo ? es el datagridview?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 31 de enero de 2020 17:39
  • lo siento es que soy nuevo en esto, me podrías dar un ejemplo de como debería hacerlo bien
    viernes, 31 de enero de 2020 18:11