Carcleo 4 Denunciar post Postado Outubro 28, 2008 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 FunctionBom, 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 SubQue 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 SubO 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
quintelab 91 Denunciar post Postado Outubro 29, 2008 Quando você voltar na sua tela de consulta você deve dar um dataBind no seu DataSource novamente para ele mostrar os dados. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 29, 2008 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
quintelab 91 Denunciar post Postado Outubro 29, 2008 Como você faz pra alimentar sua consulta? É através do ExecuteDS? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 29, 2008 sim. é atraves de dataset ExecutDS. E agora. O que eu faço? Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Outubro 29, 2008 Acredito que basta logo após sua inclusão você chamar novamente sua função. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 31, 2008 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
quintelab 91 Denunciar post Postado Novembro 3, 2008 Como eu disse no post acima, chama sua função que carrega a grid novamente. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites