Jump to content

Problema a guardar dados na BD pelo datagrid


Guest Oozelol
 Share

Recommended Posts

Bom dia a todos,

Sou novo no fórum e já tentei procurar por uma solução antes de estar a postar isto mas, o único post que encontrei não foi de grande ajuda (http://www.portugal-a-programar.pt/topic/68447-salvar-dados-de-bindingsource-para-a-base-de-dados/) .

O meu problema está em guardar novos registos na base de dados. Eu tenho um form (KeApN30.jpg) com um datagrid onde é possível ver os produtos que estão na base de dados no entanto, eu queria que também fosse possível adicionar mais e editar os que já lá estão. Como podem ver na imagem o bindingsource ainda tem os botões de adicionar, eliminar e guardar e tenho ainda uns mais intuitivos em baixo do datagrid e o que me está a acontecer é quando eu adiciono um novo produto ele não vai para a bd. Posso adicionar 1000 registos que quando fechar a aplicação volto a ter só esses 3 da imagem que foram adicionados diretamente na bd. Nem com os botões do datagrid está a funcionar, alguém sabe o que pode ser?

Já agora deixo aqui o código do formulário e link do mega para toda a aplicação:

https://mega.co.nz/#F!KBd3EYxb!sQCNi17apxax3y6a4MoyzQ

Public Class Formprodutos
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 Me.Hide()
 Form1.Show()
End Sub

Private Sub Formprodutos_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 'TODO: This line of code loads data into the 'ListaComprasDataSet.Produtos' table. You can move, or remove it, as needed.
 Me.ProdutosTableAdapter.Fill(Me.ListaComprasDataSet.Produtos)
 'TODO: This line of code loads data into the 'ListaComprasDataSet.Tipos' table. You can move, or remove it, as needed.
 Me.TiposTableAdapter.Fill(Me.ListaComprasDataSet.Tipos)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
 ProdutosBindingSource.AddNew()
 ProdutosDataGridView.ReadOnly = False
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
 Try
	 Me.Validate()
	 Me.ProdutosBindingSource.EndEdit()
	 Me.TableAdapterManager.UpdateAll(Me.ListaComprasDataSet)
	 ProdutosDataGridView.ReadOnly = True
 Catch ex As Exception
	 MsgBox(ex.Message)
 End Try
End Sub
Private Sub Formprodutos_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles MyBase.Validating
End Sub
Private Sub Formprodutos_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
 Me.Validate()
 Me.ProdutosBindingSource.EndEdit()
 Me.TableAdapterManager.UpdateAll(Me.ListaComprasDataSet)
End Sub
Private Sub ProdutosBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles ProdutosBindingNavigatorSaveItem.Click
 Me.Validate()
 Me.ProdutosBindingSource.EndEdit()
 Me.TableAdapterManager.UpdateAll(Me.ListaComprasDataSet)
End Sub
End Class

Desde já obrigado 🙂

Link to comment
Share on other sites

Obrigado mas, isso era o que já tinha para guardar registos com o método wizard o problema é que ele não guarda nada embora aceite o código e o programa não tenha erros. Tenho inclusive um try catch e o código passa sem problemas, apenas não grava nada.

Link to comment
Share on other sites

Só para não ficar sem solução já resolvi o problema. Fui ás propriedades da base de dados no solution explorer e em "Copy to Output" coloquei "Copy if newer". Isto resolveu o meu problema pelo menos de primeira vista e o programa já guarda os registos que eu insiro.

E mais uma vez obrigado bioshock 😉

Link to comment
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
 Share

×
×
  • Create New...

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.