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

malainhocf

Interacção entre Janelas

Mensagens Recomendadas

malainhocf

Olá a todos, bom dia,

Imaginem que tenho uma janela com um datagridview em que nessa janela aparecem todos os clientes da base de dados.

Nessa mesma janela temos um botão para inserir clientes.

Clico no botão e aparece-me outra janela em que vou preencher os dados para inserir o cliente.

Preencho os dados e clico no botão inseir

Mostra-me uma msgbox a dizer que foi inserido com sucesso e fecha a janela.

Ao fechar a janela ficamos com a janela que mostra os clientes

O que eu pretendo é que os dados sejam actualizados na datagrid já constando o cliente que eu inseri.

Como se faz isso ?

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
EclipseX

para já podes utilizar um pequeno código em javascript so para essa nova janelinha de inserção de dados ser um popup

quando carregas para inserir apenas tem de enviar um pedido de refresh this ou algo do género, não sei em que linguagem estas a programar, mas julgo ser c# ?!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ByMySlf

Uma maneira de fazer o que pretendes, é logo após a messagebox voltas a ler os dados da BD e a carregar a datagridview com esses mesmos dados.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

Estou a usar VB.NET e estou a programar a unha

Estou com duas janelas abertas

1º mostra os clientes

2º mostra onde insere os clientes

Como posso reinserir os dados no database e depois fazer referencia a janela que mostra os clientes

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Bem, o que tu precisas de fazer é um "Fill" / "Update".

Eu não tenho aqui à mão o método unha a unha, mas tenho o dos wizards. Não deve ser dificil, pelo contrário, encontrares o que tu queres à unha.

Experimenta o seguinte:

Mete um botão no Form onde tens os clientes que diga "Actualizar".

Mete-lhe este código (wizard - Tens de procurar unha a unha, adapta à tua aplicação)

Me.NomeTabelaTableAdapter.Fill(Me.NomeBaseDadosDataSet.NomeTabela)

Agora, no form de inserção dos clientes, no botão de Sair, metes:

FORMClientes.ButtonActualizarFormClientes.PerformClick()

Este PerfomClick, chama a função do botão actualizar, que neste caso é actualizar a base de dados.  :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

Olá a todos, bom dia,

Bioshock, a tua ideia não funcionou

Devo estar a fazer algo de errado

Fiz assim

No botão actualizar do frmFamilias tenho o seguinte código

--------------------

Private Sub btnActualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualizar.Click
        Dim connstring As String = "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\sqlserver\me.mdf';" & _
  ";Integrated Security=True;User Instance=True"

        Dim conn As New SqlConnection(connstring)

        conn.Open()
        ' Aqui inicia a interação com a base de dados
        Dim sql As String
        sql = "select * from me_familias"

        Dim da As New SqlDataAdapter(sql, conn)

        Dim ds As New DataSet

        da.Fill(ds)

        DataGridView1.DataSource = ds.Tables(0).DefaultView

        conn.Close()
        da = Nothing
        ds = Nothing
    End Sub

--------------------

No frmInsFamilia, tenho o seguinte código

-----------------------

MsgBox("Familia inserida com sucesso!")
frmFamilias.btnActualizar.PerformClick()
Me.Close()

------------------------

O problema é que não actualiza dos dados na datagridview

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

Eu não tenho um botão sair

Quando aparece a caixa de msgbox da-mos ok e a janela fecha-se sozinha.

Por isso coloquei dentro da parte que insere o registo depois do msgbox

Fiz outra experiência e não funcionou

Passei o código do botão actualizar para depois do msgbox do formulário de inserir Familias.

Também não funcionou

Tive cuidado em fazer referencia ao datagrid usando o frmFamilias.datagridview1

Permissões, como assim, não entendi.

São janelas dentro do meu projecto

Penso que não haverá problemas quanto a isso

O que fazer

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

A um detalhe que vocês provavelmente não sabem e por isso não estamos a conseguir resolver o problema

O caso é que estão as duas janelas abertas

Eu preciso de influenciar uma janela que já está aberta.

Eu consigo fazer funcionar só que abre outra janela e eu não quero isso

O código que eu usei foi o seguinte

Dim abre As New frmFamilias
        abre.btnActualizar.PerformClick()
        abre.Show()

Provavelmente por isso não conseguimos até ao momento resolver o problema


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Com duas janelas abertas ao mesmo tempo, tem que funcionar na mesma.

E não precisas disso. No form "Familias" metes um botão que faça aquele código em cima que tu puseste.

Quando clicas para inserir uma nova "Familia" abres apenas o form com o seguinte comando: FormX.show, depois na messagebox quando fecha, tem que fazer o FormFamilia.ButtonX.PerformClick()

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

Eu fiz isso e não funcionou

Não sei o que se passa

Eu preciso de actualizar a 1º janela quando ainda estou dentro da 2º janela

Isto é, na 1º janela está o datagridview que tem que ser actualizado com os dados (já com a família inserida na 2º janela aberta que apos isso se fecha).

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Eu sei o que tu queres, eu já fiz isso e funcionou. Experimenta o seguinte:

No botão de actualizar, tira o código que aí tens e mete

Messagebox.show("teste")

Corre na mesma, e quando estiveres a inserir o utilizador e a gravar, vê se com o código PerformClick ele chama essa mensagem, se não chamar algo se passa.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

O software que eu fiz que tinha isso foi feito com wizards, e eu tinha o seguinte código:

Form Inserir Clientes:

Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click
        If MessageBox.Show("Deseja Sair?", "Sair", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
            Tabelas.ToolStripButton4.PerformClick()
            Me.Close()
        End If
    End Sub

Form Visualizar Clientes, button actualizar:

Private Sub ToolStripButton4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton4.Click
Me.TClientesTableAdapter.Fill(Me.BasedeDadosDataSet.TClientes)
End Sub

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Não sei. Mas envio-te um link, para fazeres download, com um exemplo simples e prático que fiz para te mostrar que funciona.

http://www.megaupload.com/?d=IZ6LXR8M  (está em VS 2008)

Btw, podes muito bem por primeiro o PerformClick e só depois o Me.close como vice versa. Mas experimenta com o exemplo que está no link que te envio.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

A minha aplicação tem um formulário que é o frmPrincipal.

Nesse formulário tem um menu

Nesse menu chama a janela Familias

A janela familias tem a opção para inserir que é a frmInsFamilia.

Se na frmInsFamilia fizer:

frmPrincipal.text="teste" ele altera a propriedade text do formulário que tem o menu

Mas se eu fizer:

frmFamilias.text="teste" ele já não altera a propriedade text do formulário que tem as familias.

Qual será o problema.

Para chamar a form frmFamilias usei o seguinte código:

Dim form As New frmFamilias
        form.MdiParent = Me
        form.Show()

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

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.