none
Selecionar registro no DataGridView e imprimir (?) RRS feed

  • Pergunta

  • Boa noite amigos,

    Como faço para selecionar um determinado registro no DataGridView e mandar imprimir as colunas do mesmo?

    Atualmente, eu faço a impressão através de variáveis, obtendo os valores do DataGridView

            #region AlterarOrc()
            private void AlterarOrc()
            {
                try
                {
                    sdgvCodigo = dgvOrcamentos.CurrentRow.Cells[0].Value.ToString();
                    sdgvDataHora = dgvOrcamentos.CurrentRow.Cells[1].Value.ToString();
                    sdgvNome = dgvOrcamentos.CurrentRow.Cells[2].Value.ToString();
                    sdgvEndereco = dgvOrcamentos.CurrentRow.Cells[3].Value.ToString();
                    sdgvCEP = dgvOrcamentos.CurrentRow.Cells[4].Value.ToString();
                    sdgvCidade = dgvOrcamentos.CurrentRow.Cells[5].Value.ToString();
                    sdgvEstado = dgvOrcamentos.CurrentRow.Cells[6].Value.ToString();
                    sdgvTelefone = dgvOrcamentos.CurrentRow.Cells[7].Value.ToString();
                    sdgvCelular = dgvOrcamentos.CurrentRow.Cells[8].Value.ToString();
                    sdgvTipo = dgvOrcamentos.CurrentRow.Cells[9].Value.ToString();
                    sdgvMarca = dgvOrcamentos.CurrentRow.Cells[10].Value.ToString();
                    sdgvModelo = dgvOrcamentos.CurrentRow.Cells[11].Value.ToString();
                    sdgvPlaca = dgvOrcamentos.CurrentRow.Cells[12].Value.ToString();
                    sdgvFdPagamento = dgvOrcamentos.CurrentRow.Cells[13].Value.ToString();
                    sdgvKm = dgvOrcamentos.CurrentRow.Cells[14].Value.ToString();
                    sdgvObservacoes = dgvOrcamentos.CurrentRow.Cells[15].Value.ToString();
                    sdgvAlteradoEm = dgvOrcamentos.CurrentRow.Cells[16].Value.ToString();
    
                    faOrcamento _faOrcamento = new faOrcamento(sdgvCodigo, sdgvDataHora, sdgvNome, sdgvEndereco, sdgvCEP,
                    sdgvCidade, sdgvEstado, sdgvTelefone, sdgvCelular, sdgvTipo, sdgvMarca, sdgvModelo, sdgvPlaca, sdgvFdPagamento, sdgvKm, sdgvObservacoes, sdgvAlteradoEm);
                    _faOrcamento.ShowDialog();
                }
                catch
                {
                    MessageBox.Show("Nenhum registro encontrado.", "Aviso do Sistema",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            #endregion
        public partial class faOrcamento : Form
        {
            public faOrcamento(string Codigo, string DataHora, string Nome, string Endereco, string CEP, string Cidade,
            string Estado, string Telefone, string Celular, string Tipo, string Marca, string Modelo, string Placa, string FdPagamento, string Km, string Observacoes, string AlteradoEm)
            {
                InitializeComponent();
                LoadComboBox();
                txtCodigo.Text = Codigo.ToString();
                txtDataHora.Text = DataHora.ToString();
                txtNome.Text = Nome.ToString();
                txtEndereco.Text = Endereco.ToString();
                mtxtCep.Text = CEP.ToString();
                txtCidade.Text = Cidade.ToString();
                cbEstado.Text = Estado.ToString();
                mtxtTelefone.Text = Telefone.ToString();
                mtxtCelular.Text = Celular.ToString();
                cbTipo.Text = Tipo.ToString();
                txtMarca.Text = Marca.ToString();
                txtModelo.Text = Modelo.ToString();
                txtPlaca.Text = Placa.ToString();
                txtFdPagamento.Text = FdPagamento.ToString();
                txtKM.Text = Km.ToString();
                txtObservacoes.Text = Observacoes.ToString();
                txtAlteradoEm.Text = AlteradoEm.ToString();
            }
    
            #region faOrcamento_Load
            private void faOrcamento_Load(object sender, EventArgs e)
            {
                
            }
            #endregion
       public partial class TimpnOrcamento : Form
        {
            public TimpnOrcamento(string DataHora, string Nome, string Endereco, string Cidade, 
            string Cep, string Estado, string Telefone, string Celular, string Tipo, string Marca, string Modelo, string Placa, string FdPagamento, string Km, string Observacoes)
            {
                InitializeComponent();
    
                reportViewer1.LocalReport.DataSources.Clear();
                reportViewer1.LocalReport.ReportEmbeddedResource = "ZTech.ImpnOrcamento.rdlc";
                Microsoft.Reporting.WinForms.ReportParameter[] p = new
                Microsoft.Reporting.WinForms.ReportParameter[15];
                p[0] = new Microsoft.Reporting.WinForms.ReportParameter("DataHora", DataHora.ToString());
                p[1] = new Microsoft.Reporting.WinForms.ReportParameter("Nome", Nome);
                p[2] = new Microsoft.Reporting.WinForms.ReportParameter("Endereco", Endereco);
                p[3] = new Microsoft.Reporting.WinForms.ReportParameter("Cidade", Cidade);
                p[4] = new Microsoft.Reporting.WinForms.ReportParameter("Cep", Cep);
                p[5] = new Microsoft.Reporting.WinForms.ReportParameter("Estado", Estado);
                p[6] = new Microsoft.Reporting.WinForms.ReportParameter("Telefone", Telefone);
                p[7] = new Microsoft.Reporting.WinForms.ReportParameter("Celular", Celular);
                p[8] = new Microsoft.Reporting.WinForms.ReportParameter("Tipo", Tipo);
                p[9] = new Microsoft.Reporting.WinForms.ReportParameter("Marca", Marca);
                p[10] = new Microsoft.Reporting.WinForms.ReportParameter("Modelo", Modelo);
                p[11] = new Microsoft.Reporting.WinForms.ReportParameter("Placa", Placa);
                p[12] = new Microsoft.Reporting.WinForms.ReportParameter("FdPagamento", FdPagamento);
                p[13] = new Microsoft.Reporting.WinForms.ReportParameter("Km", Km);
                p[14] = new Microsoft.Reporting.WinForms.ReportParameter("Observacoes", Observacoes);
                reportViewer1.LocalReport.SetParameters(p);
                reportViewer1.LocalReport.Refresh();
                reportViewer1.RefreshReport();
            }
    
            private void TimpnOrcamento_Load(object sender, EventArgs e)
            {         
                this.reportViewer1.RefreshReport();
            }
        }

    Concluindo o processo inteiro, a busca está sendo realizada através de variáveis que captam o valor do DataGridView. Me deparei com uma situação complicada. Preciso imprimir todas informações da tabela, porém no DataGridView, não posso exibir todos os campos, por questões visuais, então me veio a necessidade de buscar as informações do banco de dados. 

    Ex: Ao selecionar determinado registro no DataGridView, preciso realizar uma verificação através do ID, que seria o primeiro campo, e então buscar todos os outros dados do registro, transformando-os em variáveis, para então imprimir todos campos do registro.

    Como posso fazer?

    quarta-feira, 18 de janeiro de 2017 01:03

Respostas

  • Boa noite amigo,

    Vejo que você está imprimindo através de ReportParameter.

    sugiro que se faça da seguinte forma:

    1º - Criar um DataSet com todas as colunas que deseja imprimir no ReportViewer.

    2º - Criar uma função que faça a conexão com banco de dados, recebendo o ID do item que deseja imprimir de forma que faça a consulta no banco de dados e retorne um objeto do tipo DataTable.

    3º - Passar o DataTable para o ReportViewer.

    4º - E dar um RefreshReport().

    quarta-feira, 18 de janeiro de 2017 02:28

Todas as Respostas

  • Boa noite amigo,

    Vejo que você está imprimindo através de ReportParameter.

    sugiro que se faça da seguinte forma:

    1º - Criar um DataSet com todas as colunas que deseja imprimir no ReportViewer.

    2º - Criar uma função que faça a conexão com banco de dados, recebendo o ID do item que deseja imprimir de forma que faça a consulta no banco de dados e retorne um objeto do tipo DataTable.

    3º - Passar o DataTable para o ReportViewer.

    4º - E dar um RefreshReport().

    quarta-feira, 18 de janeiro de 2017 02:28
  • Boa tarde amigo,

    Poderia me mostrar em códigos, como faço isso, baseado na informação que passei? 

    Obrigado!

    quarta-feira, 18 de janeiro de 2017 19:07
  • Bom dia developer.training,

    Conseguiu encontrar uma solução para o problema postado nessa thread?

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 23 de janeiro de 2017 13:31
    Moderador
  • Bom dia,

    Devido a falta de interação do autor dessa pergunta,

    essa thread está sendo fechada. Caso o problema ainda

    esteja ocorrendo, favor abrir uma nova thread.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 24 de janeiro de 2017 17:52
    Moderador