Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

flaviojef

Clicar no MonthCalendar e mostrar valores guardados nas textbox's

Recommended Posts

flaviojef

boas pessoal estou aqui a tentar resolver uma cena mas ainda não consegui, precisava mesmo de ajuda, então é o seguinte:

eu tenho dados já registados numa base de dados em MySQL por exemplo um serviço, esse serviço foi registado num Form que contem um DataTimePicker a dia 20 de Março, então agora criei um Form novo que quero que contenha um MonthCalendar e que ao clicar no dia 20 de Março (que é onde está guardado esse serviço) me mostre na Textbox ao lado o nome desse serviço que guardei. precisava mesmo que alguem me ajuda-se é bastante importante :S

eu tentei colocar isto no Form_load:

Dim myCommand As New MySqlCommand
        Dim myAdapter As New MySqlDataAdapter
        Dim myData As New DataTable
        Dim mySQL As String = "SELECT * FROM marcacoes"
        Dim conn As MySqlConnection
        conn = New MySqlConnection
        conn.ConnectionString = "server=it.integrale.com.pt; user id=jef; password=jef; database=megastand"

        Try
            conn.Open()
            Try
                myCommand.Connection = conn
                myCommand.CommandText = mySQL
                myAdapter.SelectCommand = myCommand
                myAdapter.Fill(myData)
                DataGridView_ver_marcacoes.DataSource = myData

                With MonthCalendar1
                    .DataSource = myData
                    .DisplayMember = "nome"
                    .ValueMember = "nome"
                    .SelectedIndex = 0
                End With

            Catch myerro As MySqlException
                MsgBox("Erro de leitura na Base de dados : " & myerro.Message)
            End Try
            conn.Close()
        Catch myerro As MySqlException
            MessageBox.Show("Erro ao conectar com a Base de dados : " & myerro.Message)
        Finally
            conn.Dispose()
        End Try

so que nesta parte:

With MonthCalendar1
                    .DataSource = myData
                    .DisplayMember = "nome"
                    .ValueMember = "nome"
                    .SelectedIndex = 0

diz que o dataSource nao é membro do system.windows.forms.monthcalendar e nao aceita :S

Share this post


Link to post
Share on other sites
flaviojef

pois mas no meu caso nao consigo igualar a essa propriedade ao mydata :s

existe alguma outra solução diferente para fazer o que eu pretendo?

eu explico mais profundamente o que quero mesmo talvez nao tenhas percebido...

eu tenho um form que possui tres textbox e mais um datatimepicker, essas tres textbox sao para preencher qual o serviço, o funcionario que faz esse serviço e o cliente, depois o datatimepicker serve para marcar o dia, (fazer essa marcaçao) por exemplo dia 20 de Março, agora criei um outro form que vai visualizar essa informação, ou seja, quero que contenha um monthcalendar e os mesmo campos que estavam no form, menos o datatimepicker, e que ao clicar no dia 20 de março apareça nas textbox os dados que eu registei no form anterior... era isso que pertendia e nao sei muito bem o que fazer... :wallbash:

agradecia mesmo uma ajudinha porque precisava mesmo disso a funcionar...

 

cumpz

Share this post


Link to post
Share on other sites
ByMySlf

Se usares o DataBindings não funcionará?

MonthCalendar.DataBindings.Add(New Binding("Tipo de campo", ds, "campo da BD"))

E depois através do método OnDateSelected da classe MonthCalendar preenches as TextBoxs com os dados que pretendes.

De momento foi o que me ocorreu...

Share this post


Link to post
Share on other sites
flaviojef

a intenção nao é preencher os campos mas sim ir buscar os campos que ja estao preenchidos... nao existe solução para isto?

cumpz

Share this post


Link to post
Share on other sites
ByMySlf

Tu queres preencher as TextBoxs com os dados da BD certo? Se sim, era a isso que me referia.

Share this post


Link to post
Share on other sites
flaviojef

eu dou um exemplo mais especifico ainda:

eu tenho um form que contem 3 textbox mais um datatimepicker, esse datatimepicker serve para marcar um dia.

a primeira textbox é preenchida por um serviço qualquer, por exemplo: pintura, na segunda é o funcionário que faz esse serviço, por exemplo: Manel e na ultima é o cliente por exemplo: Luís

então agora no datatimepicker escolho a data por exemplo 20 de Março e noutro form que criei tenho um monthcalendar mais as textbox's que tinha de preencher no outro form anterior... ou seja o que eu quero mesmo em concreto é, ao clicar no dia 20 de Março me apareça nas textbox aquilo que eu marquei para esse dia, como é óbvio se clicar no dia 21 já não aparece nada porque não marquei nada...

eu consigo resolver essa situação se fosse com uma listbox... vou colocar aqui o código que eu utilizava se fosse por uma listbox: (Testado e funciona)

primeiro colocar o imports mysql.data.mysqlclient no general e no form load isto (onde está LB_clientes é a listbox):

Dim myCommand As New MySqlCommand
        Dim myAdapter As New MySqlDataAdapter
        Dim myData As New DataTable
        Dim mySQL As String = "SELECT * FROM clientes"
        Dim conn As MySqlConnection
        conn = New MySqlConnection
        conn.ConnectionString = "server=it.integrale.com.pt; user id=jef; password=jef; database=megastand"

        Try
            conn.Open()
            Try
                myCommand.Connection = conn
                myCommand.CommandText = mySQL
                myAdapter.SelectCommand = myCommand
                myAdapter.Fill(myData)
                DataGrid_editar_clientes.DataSource = myData

                With LB_clientes
                    .DataSource = myData
                    .DisplayMember = "nome"
                    .ValueMember = "nome"
                    .SelectedIndex = 0
                End With

            Catch myerro As MySqlException
                MsgBox("Erro de leitura na Base de dados : " & myerro.Message)
            End Try
            conn.Close()
        Catch myerro As MySqlException
            MessageBox.Show("Erro ao conectar com a Base de dados : " & myerro.Message)
        Finally
            conn.Dispose()
        End Try

para isto tive de criar uma datagrid para poder aparecer a informação na list e dentro da list tenho isto:

txt_nome_cliente.Text = DataGrid_editar_clientes.CurrentRow.Cells(1).Value.ToString
        txt_bi_cliente.Text = DataGrid_editar_clientes.CurrentRow.Cells(2).Value.ToString
        txt_morada_cliente.Text = DataGrid_editar_clientes.CurrentRow.Cells(3).Value.ToString
        txt_telefone_cliente.Text = DataGrid_editar_clientes.CurrentRow.Cells(4).Value.ToString
        txt_email_cliente.Text = DataGrid_editar_clientes.CurrentRow.Cells(5).Value.ToString
        txt_localidade_cliente.Text = DataGrid_editar_clientes.CurrentRow.Cells(6).Value.ToString
        txt_cp_cliente1.Text = DataGrid_editar_clientes.CurrentRow.Cells(7).Value.ToString
        txt_user_cliente.Text = DataGrid_editar_clientes.CurrentRow.Cells(8).Value.ToString
        txt_pass_cliente.Text = DataGrid_editar_clientes.CurrentRow.Cells(9).Value.ToString
        txt_cp_cliente2.Text = DataGrid_editar_clientes.CurrentRow.Cells(10).Value.ToString

o que irá acontecer aqui não é nada mais nada menos que ao clicar no nome que quero, neste caso do cliente, apareça toda a informação do cliente nas textbox

então agora como faço isto mas com um monthcalendar?

Share this post


Link to post
Share on other sites
ByMySlf

Com o MonthCalendar dentro do evento OnDateSelected  vais buscar essa informação. Como a classe MonthCalendar não tem a propriedade DataSource quando o utilizador, selecciona uma data, efectuas uma query à BD que lhe mostre nas TextBoxs o que pretendes. Isto tudo segunda a data seleccionada pelo utilizador.

De momento é o que me está a ocorrer.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.