Ir para conteúdo

Arquivado

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

Carcleo

Refresh na tabela

Recommended Posts

Ola pessoal.

Aos trancos e barrancos, vou eu conseguindo estudar VB.Net.

Mas, novamente me esbarrei aqui.

Seguinte:

Obs.: Só consigo fazer uma operação por vez no dataset. Eu não consigo por exemplo, gravar uma novo registro e depois navegar a té uns trez ou quatro registros atraz e altera-lo que da erro.

No caso , estou tendo que fechar o form e abrir ele de novo. Nem mesmo gravar dois registros na sequencia não da.

tenho a função que me retorna um dataset:

Public Function ExecuteDS(ByVal sql As String, ByRef tabela As String) As DataSet
		Dim ds As New DataSet
		Dim da As MySqlDataAdapter = New MySqlDataAdapter()

		Try
			OpenConnection()
			cmd.CommandType = CommandType.Text
			cmd.CommandText = sql
			cmd.Connection = Conexao
			da.SelectCommand = cmd
			da.Fill(ds, tabela)
			da.Dispose()
			Return ds
		Catch ex As Exception
			MsgBox(ex.Message)
		End Try
		Return ds
	End Function
Bom, no form tenho o botão novo com o código

Private Sub Novo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Novo.Click
		If Novo.Text = "Novo" Then
			For Each c As Control In Me.grpClientes.Controls
				If TypeOf c Is TextBox Then
					c.Text = ""
				End If
			Next
			Atualizar.Enabled = False
			Eliminar.Enabled = False
			Encerrar.Text = "Cancela"
			Novo.Text = "Incluir"
			Nome.Focus()
			habilita()
			Codigo.Enabled = False
		ElseIf Novo.Text = "Incluir" Then
			Dim dr As DataRow = dt.NewRow
			incluirRegistro(dr)
			Novo.Text = "Novo"
			Encerrar.Text = "Encerrar"
			Atualizar.Enabled = True
			Eliminar.Enabled = True
			desabilita()
		End If
	End Sub
Que chama a função abaixo

Private Sub incluirRegistro(ByVal dr As DataRow)
		Dim sqlinsere As String = "INSERT INTO " & tabela & " (Nome,Endereco,Email)VALUES ('" & Nome.Text & "','" & Endereco.Text & "','" & Email.Text & "')"
		atribuirDados(dr)
		ds = accDb.ExecuteDS(sqlinsere, tabela)
		dt = ds.Tables(tabela)
		Try
			MessageBox.Show("registro de Usuário incluido com sucesso.")
			'accDb.CloseConnection()
			'accDb.OpenConnection()
		Catch ex As Exception
			MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
		End Try
	End Sub
O problema é que quando eu cliko no botão novo e insiro um novo registro, ele não mostra o código autoincrement gerado.

Então, quando eu recebo do script o aviso "Cadastro feito com sucesso", depois volta na mesma tela de cadastro, e, ai se eu tentar incluir um novo registro, ai da erro.

Parece que depois do aviso, tenho que fechar e abrir a conexão novamente como tentei(esta comentado no código).

É isso mesmo, o que eu faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

colega, valeu pela dica mas, tem como voce explicar como fazer?

Nem datasource tem nesse código!

 

Como eu faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outro problema que aconteceu é o seguinte:

 

Eu acabo de dar um delete em um registro.

O script funciona normal, confiro no banco de dados. Ta certinho, registro deletado. Mas, se eu navegar até ele de novo, ele esta la.

Mas, se eu fechar o form e abrir de novo ai ele some.

 

Parece que eu preciso de dar um refresh na tabela apos a mensagem de exclusão.

Como faço isso?

Eis o código do delete

Private Sub atualizarRegistro(ByVal dr As DataRow)
		atribuirDados(dr)
		Dim sql As String = "UPDATE Clientes SET Nome = '" & Nome.Text & "',Endereco= '" & Endereco.Text & "',Email = '" & Email.Text & "' where clienteID='" & dr("clienteID") & "'"
		ds = accDb.ExecuteDS(sql, tabela)
		exibirDados(registro)
		Try
			MessageBox.Show("registro de Usuário alterado com sucesso.")
		Catch ex As Exception
			MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
		End Try
	End Sub

	Private Sub Eliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Eliminar.Click
		If registro < 0 OrElse registro > dt.Rows.Count - 1 Then
			Exit Sub
		Else
			If MessageBox.Show("Deseja Excluir esse registro", "Excluir", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
				Dim codigo As Integer
				Dim dr As DataRow = dt.Rows(registro)
				codigo = dr("clienteID")
				codigo = CType(codigo.ToString, Integer)
				eliminarRegistro(codigo)
			End If
		End If
	End Sub

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.