none
Exibir dados no DATAGRID á partir do dia selecionado no Calendário. RRS feed

  • Pergunta

  • Olá, boa noite para todos. Gostaria que me ajudassem em uma questão: Possuo uma classe chamada "Eventos" (Título, Data, Hora_Inicio, Hora_Termino, Descrição). No formulário de Eventos, possuo um Calendário(MonthCalendar) no canto da tela, e um DATAGRID. Aqui vai minha dúvida: Gostaria que ao clicar em um dia do mês no Calendário, no DATAGRID exibisse todos os registros daquele dia. Por Exemplo, na hora de registrar o Evento, cadastro que no dia 22/6/2014 terá um Evento, então ao clicar no dia 22 do 6 no Calendário, exibisse todos os dados na Grid(Título,Hora_Inicio,Hora_Termino,Descricao). Inicialmente eu buscava por Título, escrevia o Título na TextBox, e clicava no botão "Pesquisar", mas creio que buscando pelo dia no calendário será mais benéfico para o usuário. Tem como os senhores me ajudarem? Já possuo uma classe de Conexão feita funcionando, porque trabalho Orientado a Objeto.. Muito Obrigado de verdade pela atenção!
    terça-feira, 27 de maio de 2014 23:16

Respostas

  • Amigo, boa noite.

    Se não me engano no MonthCalendar tem um evento chamado DateChanged use ele como dispara para um consulta utilizando a data selecionada como parametro... ou seja cada vez que uma data for selecionada o evento sera disparado e vai fazer a consulta e trazer os elementos para o GridView que voce tem ai.

    Perdoe os erros e a brevidade dessa mensagem estou utilizando meu celular para responder rsrsrs. Veja se te ajuda qualquer coisa posso te mandar um exemplo desse evento ok.

    Abraço.

    terça-feira, 27 de maio de 2014 23:40
  • Hello novamente, segue abaixo um exemplo bem simples de como fazer isto eu utilizei uma tabela que ja tenho pronta aqui onde nela eu grava a data de cadastro de um cliente, lembre-se de utilizar o nome dos campos da sua tabela  ok.

    Primeiro criei um método que vai fazer a minha consulta no banco de dados, este método "consultarRegistrosData() esta recebendo como parâmetro um valor do tipo DateTime e este valor é utilizado como parâmetro na busca SQL "@dataCadastro" até ai sem surpresas rsrs":

    public SqlConnection openConnection() public void closeConnection(SqlConnection _conn) public DataSet consultarRegistrosData(DateTime data) { SqlConnection _conn = null; string query = "SELECT * FROM ClientesTB WHERE dataCadastro = @dataCadastro"; try { _conn = openConnection(); SqlCommand cmd = new SqlCommand(query, _conn); var pmtData = cmd.CreateParameter(); pmtData.ParameterName = "@dataCadastro"; pmtData.DbType = DbType.Date; pmtData.Value = data; cmd.Parameters.Add(pmtData); cmd.ExecuteNonQuery(); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); _conn.Close(); return ds; } catch (Exception erro) { throw new Exception("Dados: Erro ao consultar os dados na base " + erro.Message); } finally { closeConnection(_conn); } }

    Depois vá até o seu monthCalendar click nele e na guia de eventos do seu visual studio procure pelo evento DateChanged e de um duplo click nele, após isto você pode fazer o seguinte:

    //Eu utilizo daoRegistros pois programa utilizando camadas ok não se atente a esta parte rsrs
                daoRegistros _consultarRegistros = new daoRegistros();
                //Criei um DataSet para receber o resultado do metodo consultarRegistrosData() no banco
                DataSet ds = new DataSet();
                //Aqui vou preencher o DataSet com o retorno do método consultarRegistrosData();
                //Estou passando como parâmetro para a minha consulta SQl a data selecionada no momento em que a pessoa clica no dia
                ds = _consultarRegistros.consultarRegistrosData(monthCalendar1.SelectionStart);
                //Nesta parte pego o DataSet ja preenchido com o retorno do metodo e associo ele ao meu GridView
                gridRegistros.DataSource = ds;
                gridRegistros.DataMember = ds.Tables[0].TableName;

    Prontinho toda vez que o usuário clicar em uma data vai mostrar todos os Eventos agendados nela!!

    Espero que tenha entendido, caso não, me avisa qui que se precisar faço um video explicando passo a passo até vc entender não fique com dúvidas rsrsrs!

    Abraço.

    quarta-feira, 28 de maio de 2014 17:34
  • Amigo, uma coisa que só percebi agora, você colocou este tópico no forum de VB rsrs achei que era C#, mais blz.

    Eu nunca programei em VB.NET mais dei uma analisada no seu código e fiz um video acabei de coloca-lo no youtube, de uma olhada veja se te ajuda ok: http://youtu.be/Ojm2sVxOQJk

    Se foi util não esqueça de marcar como resposta aqui e dar um joinha no youtube rsrsrsrs

    Flw.

    quinta-feira, 29 de maio de 2014 20:04

Todas as Respostas

  • Amigo, boa noite.

    Se não me engano no MonthCalendar tem um evento chamado DateChanged use ele como dispara para um consulta utilizando a data selecionada como parametro... ou seja cada vez que uma data for selecionada o evento sera disparado e vai fazer a consulta e trazer os elementos para o GridView que voce tem ai.

    Perdoe os erros e a brevidade dessa mensagem estou utilizando meu celular para responder rsrsrs. Veja se te ajuda qualquer coisa posso te mandar um exemplo desse evento ok.

    Abraço.

    terça-feira, 27 de maio de 2014 23:40
  • Foi nada amigo, eu que agradeço a sua Atenção. Bom, teria como mandar um exemplo? Aí eu já aplico no meu código, pois eu não tenho nenhuma noção de como fazer aparecer os dados a partir de um click no data selecionada. Agradeço desde já rs
    quarta-feira, 28 de maio de 2014 05:18
  • Hello novamente, segue abaixo um exemplo bem simples de como fazer isto eu utilizei uma tabela que ja tenho pronta aqui onde nela eu grava a data de cadastro de um cliente, lembre-se de utilizar o nome dos campos da sua tabela  ok.

    Primeiro criei um método que vai fazer a minha consulta no banco de dados, este método "consultarRegistrosData() esta recebendo como parâmetro um valor do tipo DateTime e este valor é utilizado como parâmetro na busca SQL "@dataCadastro" até ai sem surpresas rsrs":

    public SqlConnection openConnection() public void closeConnection(SqlConnection _conn) public DataSet consultarRegistrosData(DateTime data) { SqlConnection _conn = null; string query = "SELECT * FROM ClientesTB WHERE dataCadastro = @dataCadastro"; try { _conn = openConnection(); SqlCommand cmd = new SqlCommand(query, _conn); var pmtData = cmd.CreateParameter(); pmtData.ParameterName = "@dataCadastro"; pmtData.DbType = DbType.Date; pmtData.Value = data; cmd.Parameters.Add(pmtData); cmd.ExecuteNonQuery(); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); _conn.Close(); return ds; } catch (Exception erro) { throw new Exception("Dados: Erro ao consultar os dados na base " + erro.Message); } finally { closeConnection(_conn); } }

    Depois vá até o seu monthCalendar click nele e na guia de eventos do seu visual studio procure pelo evento DateChanged e de um duplo click nele, após isto você pode fazer o seguinte:

    //Eu utilizo daoRegistros pois programa utilizando camadas ok não se atente a esta parte rsrs
                daoRegistros _consultarRegistros = new daoRegistros();
                //Criei um DataSet para receber o resultado do metodo consultarRegistrosData() no banco
                DataSet ds = new DataSet();
                //Aqui vou preencher o DataSet com o retorno do método consultarRegistrosData();
                //Estou passando como parâmetro para a minha consulta SQl a data selecionada no momento em que a pessoa clica no dia
                ds = _consultarRegistros.consultarRegistrosData(monthCalendar1.SelectionStart);
                //Nesta parte pego o DataSet ja preenchido com o retorno do metodo e associo ele ao meu GridView
                gridRegistros.DataSource = ds;
                gridRegistros.DataMember = ds.Tables[0].TableName;

    Prontinho toda vez que o usuário clicar em uma data vai mostrar todos os Eventos agendados nela!!

    Espero que tenha entendido, caso não, me avisa qui que se precisar faço um video explicando passo a passo até vc entender não fique com dúvidas rsrsrs!

    Abraço.

    quarta-feira, 28 de maio de 2014 17:34
  • Oi parceiro, tudo bom? Então, eu entendi sim a lógica do seu código, até te agradeço ^^. Mas acontece que na hora de aplicar isso no meu código, algo não está batendo e dando erro, deve ser por algo que eu não esteja fazendo. Veja Bem: Na Classe "Eventos", eu criei o Método ->   Public Function PesquisaData()
                                                                                         sql = "SELECT * FROM Evento where Data= '" & Data & "'"
                                                                                         ds = con.listar(sql)
                                                                                         Return ds
                                                                                         End Function

    Não precisei fazer igual seu primeiro bloco de código(entendo eu,rs) por que já tenho uma classe Conexão feita separadamente, então os métodos faço em cada classe. Até aí, tudo bem. no Formulário de Eventos(frmEvento), eu importei lá em cima: 

    Public Class frmEvento
        Dim even As New Evento (classe Evento)
        Dim ds As New DataSet
        Dim dgvds As New DataSet
        Dim campo As DataRow

    Adaptei seu código ao meu, mas quando fui jogar o segundo bloco de código no evento DataChanged do CalendarMonth, ele dava erro. Não sei se foi algo que eu fiz ou não fiz, rs. Porém, a maior dificuldade é adaptar o código á Orientado a Objeto, rsrs. Teria como me ajudar melhor, até mesmo com vídeo, se puder ou tiver tempo? TE AGRADEÇO PELA ATENÇÃO ^^

    Para buscar por título, meu código é assim: 

    Try
       even.Titulo_ = txtTitulo.Text
       ds = even.Pesquisar (esse "Pesquisar", é um método da classe Evento(Select * From Evento...etc)

                dgvVisualizar.DataSource = ds.Tables(0)
                Try
                    lblCodEvento.Text = ds.Tables(0).Rows(0).Item(1).ToString
                    txtDescricao.Text = ds.Tables(0).Rows(0).Item(2).ToString
                    txtTitulo.Text = ds.Tables(0).Rows(0).Item(3).ToString
                    txtLocal.Text = ds.Tables(0).Rows(0).Item(4).ToString
                    mskData.Text = ds.Tables(0).Rows(0).Item(5).ToString
                    mskInicio.Text = ds.Tables(0).Rows(0).Item(6).ToString
                    mskTermino.Text = ds.Tables(0).Rows(0).Item(7).ToString
                Catch ex As Exception
    End Try

     Catch ex As Exception

                MsgBox("Não foi possível pesquisar!")


    quarta-feira, 28 de maio de 2014 23:16
  • Amigo, uma coisa que só percebi agora, você colocou este tópico no forum de VB rsrs achei que era C#, mais blz.

    Eu nunca programei em VB.NET mais dei uma analisada no seu código e fiz um video acabei de coloca-lo no youtube, de uma olhada veja se te ajuda ok: http://youtu.be/Ojm2sVxOQJk

    Se foi util não esqueça de marcar como resposta aqui e dar um joinha no youtube rsrsrsrs

    Flw.

    quinta-feira, 29 de maio de 2014 20:04
  • Olá Parceiro. Isso que eu ía te responder, seu código está em C# rsrs. Mas agradeço sua atenção e respostas, você me falando o Evento do CalendarMonth e a lógica do seu código me ajudou muito. Pode deixar que dou um joinha lá sim. Muito Obrigado, valeu, fica com Deus ;)
    sexta-feira, 30 de maio de 2014 00:24