Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

schimanscky

Impressão de DataGridView

Mensagens Recomendadas

schimanscky    0
schimanscky

Boa tarde Pessoal. Eu estou a desenvolver um software de vendas e gestão de estoque em C#. Já implementei quase tudo, mas estou a encontrar dificuldades em implementar a função de impressão. Gostaria que alguém me ajudasse em como posso pegar dados de um DataGridView e passar para um relatório e posteriormente efectuar a impressão. Obrigado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Júnior Pacheco    0
Júnior Pacheco

Olá,

No clique da linha ou botão de "Gerar Relatório" da sua GridView você capturar o ID do linha clicada e realiza uma consulta no banco de dados trazendo todas as informações que preciso para utilizar no relatório.

Creio que pegar os dados da Grid não seria muito seguro, pois os dados podem ter sidos atualizados anteriormente! Entende?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
N3lson    17
N3lson

Faz o seguinte (como eu costumo fazer)

Crias um window form e nesse window form coloca um reportviewer (reportviewer1)

- Nesse ReportViewer associa a um Dataset (Dataset) que irás personalizar

- Desenhas o teu rdlc e colocas os campos da tabela que pretendes imprimir e em seguida personalizas o teu Dataset

============================= CS Code Do windowsForm que contem o ReportViewer ===============


public partial class FormReportOrdem : Form
{
	MySqlDataAdapter da;

	public FormReportOrdem(int id)
	{
		InitializeComponent();
		this.textMaquina.ReadOnly = true;
		this.textMaquina.Text = id.ToString();
		this.lblData.Text = DateTime.Now.ToString("dd/MM/yyyy");

		var setup = this.reportViewer1.GetPageSettings();
		setup.Margins = new System.Drawing.Printing.Margins(4, 4, 4, 4);
		this.reportViewer1.SetPageSettings(setup);
		this.reportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout);
	}

	// Loading do report
	private void FormReportOrdem_Load(object sender, EventArgs e)
	{
		string query = " SELECT * FROM " + Controle.ord_trabalho + " " +
					   " INNER JOIN " + Controle.maquina + " " +
					   " ON ord_trabalho.maquina = maquina.maquina " +
					   " INNER JOIN " + Controle.tecnicos + " ON ord_trabalho.operador = tecnicos.tecnico " +
					   " WHERE ord_trabalho.id = @id";

		using (MySqlConnection con = new MySqlConnection(Controle.ConSql))
		{
			using (MySqlCommand cmd = new MySqlCommand(query, con))
			{
				con.Open();
				cmd.Prepare();
				cmd.Parameters.AddWithValue("@id", this.textMaquina.Text);

				da = new MySqlDataAdapter(cmd);

				DataSet ds = new DataSet();

				da.Fill(ds);

				reportViewer1.LocalReport.DataSources.Clear();

				reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet", ds.Tables[0]));
				this.reportViewer1.RefreshReport();
			}
			con.Close();
		}
	}

	// Actualizar base dados, colocar o estado da impressão p/ impresso, e refresh datagrid.
	private void FormReportOrdem_FormClosing(object sender, FormClosingEventArgs e)
	{
		string query = "UPDATE " + Controle.ord_trabalho + " SET print = 2 WHERE id=@id" ;

		using (MySqlConnection con = new MySqlConnection(Controle.ConSql))
		{
			using (MySqlCommand cmd = new MySqlCommand(query, con))
			{
				con.Open();

				cmd.Prepare();
				cmd.Parameters.AddWithValue("@id", this.textMaquina.Text);

				int printed = cmd.ExecuteNonQuery();

				if (printed > 0)
				{
				   Controle.controlarUpdate = 1;
				}
			}
			con.Close();
		}
		this.reportViewer1.LocalReport.ReleaseSandboxAppDomain();
	}

}

Depois relativamente á impressão é tudo controlado pelos comandos do report

Editado por apocsantos

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.