Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ViNi® MiNeIrIm

[Resolvido] VB + SQL Server Compact

Recommended Posts

Bom pessoal, estou tentando me adaptar com o vb.net, mas estou com alguns problemas ao tratar um bd sql server compact. Ja procurei aqui no fórum e na internet, e não consegui solucionar, sei que é coisa boba, mas to apanhando que nem filho sem mae disso aqui. http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

É o seguinte, no bd tenho o campo ID, como primarykey e autonumeração, então, para adicionar um novo cliente na tabela, deixo a textbox referente ao ID desativado, assim, o usuario preenche os outros dados, e quando salvasse, gostaria que o código aparecesse na textboxID (aparece apenas quando reabro o form)

 

O outro problema, é que, quando tento excluir um registro que acabei de inserir, ocasiona erro "Violação de concorrência: DeleteCommand afetou 0 dos registros 1 esperados."

 

Segue o código de conexão com o bd (quando o form carrega), e o codigo referente aos botões...

 

 

Dim strConn As String = "Data Source=D:\projetos\VBEstoque\VBEstoque\vbbd.sdf"
		Dim Conn As SqlCeConnection = New SqlCeConnection(strConn)
		Dim CMD As SqlCeCommand = New SqlCeCommand("SELECT * FROM clientes ORDER BY id", Conn)
		Dim dAdapter As SqlCeDataAdapter = New SqlCeDataAdapter
		Dim dTable As DataTable = New DataTable
		Dim WithEvents CManager As CurrencyManager
	'conexao bd
		Conn.Open()
	'Data adapter
		dAdapter.SelectCommand = CMD
	'Data table
		dAdapter.Fill(dTable)
	'Currency Manager
		CManager = DirectCast(Me.BindingContext(dTable), CurrencyManager)
	'vinculaçao
		txtID.DataBindings.Add("Text", dTable, "id")
		txtNome.DataBindings.Add("Text", dTable, "nome")
		...


	Private Sub cmdAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAdd.Click
		CManager.AddNew()
	End Sub

	Private Sub cmdSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSalvar.Click
		CManager.EndCurrentEdit()
		Dim CMDBuilder As New SqlCeCommandBuilder(dAdapter)
		dAdapter.Update(dTable)
	End Sub


	Private Sub cmdDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDel.Click
			CManager.RemoveAt(CManager.Position)
			Dim CMDDel As New SqlCeCommandBuilder(dAdapter)
			dAdapter.Update(dTable)
	End Sub

Se alguém puder me ajudar...

Desde já agradeço,

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido Plataforma .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET » Windows Applications

 

Para carregar seu ID terá que fazer um select na base novamente.

Verifique qual registro ele esta tentando excluir, você deve estar passando algum parâmetro errado.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

quintelab, na mosca, problema resolvido... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

foi só recarregar a tabela que funcionou beleza, quanto ao erro na hora de excluir, era justamente no registro recém incluído, pois como não havia recarregado o ID (chave primária), retornava erro ao tentar excluí-lo.

 

então vou deixar o código aqui, caso alguém tenha alguma dúvida parecida:

 

 

 

Private Sub cmdSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSalvar.Click
		CManager.EndCurrentEdit()
		Dim CMDBuilder As New SqlCeCommandBuilder(dAdapter)
		dAdapter.Update(dTable)

		'limpa datatable
		dTable.Clear()
	   
		'recarrega dados
		Dim CMD As SqlCeCommand = New SqlCeCommand("SELECT * FROM clientes ORDER BY id", Conn)
		dAdapter.SelectCommand = CMD
		dAdapter.Fill(dTable)

		'posiciona no último registro
		CManager.Position = CManager.Count - 1
	End Sub

 

Cara, brigadão mesmo ein,

 

Abração

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.