Guest Oozelol Posted March 8, 2015 at 11:47 AM Report Share #578936 Posted March 8, 2015 at 11:47 AM 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 More sharing options...
bioshock Posted March 8, 2015 at 12:29 PM Report Share #578938 Posted March 8, 2015 at 12:29 PM Já pouco me lembro disso, mas dá uma vista de olhos http://wiki.portugal-a-programar.pt/dev_net:vb.net:bindingsources Link to comment Share on other sites More sharing options...
Guest Oozelol Posted March 8, 2015 at 12:44 PM Report Share #578940 Posted March 8, 2015 at 12:44 PM 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 More sharing options...
bioshock Posted March 8, 2015 at 12:57 PM Report Share #578942 Posted March 8, 2015 at 12:57 PM Se gravares, fechares a aplicação e voltares a inicializá-la (sem mexer em código nem em lado nenhum) não mostra os registos previamente guardados? Link to comment Share on other sites More sharing options...
Guest Oozelol Posted March 8, 2015 at 01:47 PM Report Share #578946 Posted March 8, 2015 at 01:47 PM Não. Eu insiro registos e enquanto a aplicação está a correr eles ficam lá como é normal mas quando fecho a aplicação e volto a inicializar os registos não estão lá (sem mexer no código). Link to comment Share on other sites More sharing options...
bioshock Posted March 8, 2015 at 01:59 PM Report Share #578947 Posted March 8, 2015 at 01:59 PM Experimenta trocar a linha Me.TableAdapterManager.UpdateAll(Me.ListaComprasDataSet) por Me.ProdutosTableAdapter.Update(Me.ListaComprasDataSet.Produtos) Link to comment Share on other sites More sharing options...
Guest Oozelol Posted March 8, 2015 at 02:04 PM Report Share #578949 Posted March 8, 2015 at 02:04 PM Já experimentei esse código quando enviou a primeira mensagem porque é a assim que está lá e nada. Vou tentar fazer o programa de novo. Muito obrigado pela ajuda. Link to comment Share on other sites More sharing options...
Guest Oozelol Posted March 8, 2015 at 08:18 PM Report Share #578975 Posted March 8, 2015 at 08:18 PM 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now