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

prokton

[Resolvido] Como fazer update/ Refresh

Mensagens Recomendadas

prokton

Bom dia a todos,

Criei um projeto simples de registo de "clientes / produtos vendidos" feito em vb.net 2010 e ms-Access.

Utilizo apenas 1 form: Textbox's para os clientes e DataGrid para os produtos vendidos.

As tabelas estão relacionadas um-muitos.

Funciona tudo lindamente,

mas quando faço criar cliente novo, a Chave primária num.Automatica "Cliente" tem o nº (-1)

Isso faz com que não seja possível registar o produto vendido no datagrid, pois aparece uma mensagem de erro a dizer que tenho que criar primeiro o cliente. A solução é sair e entrar na aplicação novamente

A minha pergunta é: Como é que consigo "atualizar" ou "refresh" a aplicação sem ter que sair/entrar?

tentei:

Me.TableAdapterManager.UpdateAll(Me.dsAplicaçao)

Mas continua sem funcionar bem.

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
prokton

Desculpa, mas não percebi a pergunta.

"Estás a correr diretamente no programa ou na aplicação ?"

Se é pelo botão "debug" do vb ou se é pelo .exe? Faz diferença? Por acaso já tentei das 2 formas mas o problema é o mesmo

Penso que será isso. É que sou muito verdinho nessas coisas da programação.

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NunoDinis

Há uns tempos, uns colegas passaram pelo mesmo problema, e por acaso lembrei-me..

Se é pelo botão "debug" do vb ou se é pelo .exe? Faz diferença? Por acaso já tentei das 2 formas mas o problema é o mesmo

Então nem pelo executável funciona ?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

Bom dia,

O metodo UpdateAll, apenas grava todos os dados de todas as tabelas, que se encontrem em memória. dsAplicação é o dataset da aplicação, suponho. E pelo que percebi queres fazer um refresh de uma tabela e da respectiva datagridview.

DataGridView1.refresh()

Para fazer refresh à datagridview podes usar o metodo refresh() . A questão é que antes de poderes fazer o refresh tens de recarregar os dados da tabela em access para a datatable. Podes limpar as tabelas usando o metodo .clear() , mas vais ter de as preencher a seguir. Como não vi o restante código não sei se estás a usar IDataReader , para carregar os dados, por isso sugiro que re-utilizes o código que usas no inicio da form, para carregar os dados.

Datatable1.clear()

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
prokton

O que eu queria é:

Ao criar um cliente novo; Nome, Morada, etc...( textbox's), depois de clicar em "save" que a numerção automática(Chave primária) fosse também atualizada... mas fica sempre (-1) em vez de IDCliente= 14 por Ex.

e não se consegue introduzir os "produtos" relacionados com esse cliente, porque "produtos" está numa outra tabela em modo "DataGrid". as tabelas estão relacionadas um-muitos no IdCliente

A solução é sair da aplicação, voltar a entrar e aí sim, o IDCliente é 14 e já se consegue associar produtos a ele...

Quero encontrar uma forma de atualizar tudo sem ter que sair da aplicação

Não consigo explicar melhor...

Obrigado a todos pela atenção

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

Boa tarde,

Por acaso viste a resposta que te dei ?

Eu percebi a questão, e expliquei-te uma forma de a resolver. Só não coloquei o código todo prontinho! O problema está no refresh da tabela que não é feito, mas isso tem diversas questões, primeiro não faço ideia de que forma estás a aceder à base de dados, não faço ideia se estás a usar databindings, etc... Depois a solução que apresentei, funciona, basta implementa-la. O que precisas para a implementar está explicado.

Se tiveres dificuldades em implementar diz.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
prokton

Agradeço ter respondido tão prontamente.

A maneira mais fácil que encontrei foi utilizar o "wizrd" para criar o DataSet, ClientesBindingSource, ServicosTableAdapter, etc..

e o único código que há é o infra citado (Gerado pelo VB)

Peço desculpa, se calhar fui eu que não soube interpretar a sua resposta,

mas ainda me faz um pouco de confusão tudo isto dos Binding, Table Adapter, DataSet, etc...

Mais uma vez obrigado pela sua ajuda...

Public Class Form1

Private Sub ClientesBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs) Handles ClientesBindingNavigatorSaveItem.Click

Me.Validate()
Me.ClientesBindingSource.EndEdit()
Me.ServicosBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.TransportesBrancoDataSet)

End Sub


Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'TransportesBrancoDataSet.Servicos' table. You can move, or remove it, as needed.
Me.ServicosTableAdapter.Fill(Me.TransportesBrancoDataSet.Servicos)

'TODO: This line of code loads data into the 'TransportesBrancoDataSet.Clientes' table. You can move, or remove it, as needed.
Me.ClientesTableAdapter.Fill(Me.TransportesBrancoDataSet.Clientes)

End Sub
End Class

Editado por Caça
GeShi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
prokton

Consegui.

Obrigado pela sua ajuda!

Bastou passar o Código do Private Sub Form1_Load para cima (Private Sub ClientesBindingNavigatorSaveItem_Click

Agora existe outro problema para resolver :) )

Ao clicar "save" ele retorna o 1º Registo(Cliente) e tenho que encontrar uma forma de ir para o último automaticamente...

Mais uma vez Obrigado pela sua ajuda!

Como é que se põe [Resolvido] ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
prokton

Super Resolvido. Obrigado pela ajuda.

Bastou passar o Código do (Private Sub Form1_Load) para cima (Private Sub ClientesBindingNavigatorSaveItem_Click)

Para ir automaticamente para o último registo bastou incluir:

BindingNavigatorMoveLastItem.PerformClick()

Como é que se Fecha o tópico? [Resolvido]

Editado por apocsantos

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.