Ir para conteúdo
Fórum Script Brasil

Carlos Rocha

Membros
  • Total de itens

    1.300
  • Registro em

  • Última visita

Tudo que Carlos Rocha postou

  1. Carlos Rocha

    RecordSet

    Oi Junior. isMDIContainer:=False é coisa do VS.net no delphi é MDIForm = pai ou filho, ou normal rss mas, sobre o txt é text mas aqui digitei errado. SOBRE a validação não entendi o depende do que vem antes e depois O código que to usando, se usar ele dentro do botão SALVAR,da certo mas se dentro do botão SALVAR eu chamar uma função que chama esse código ai não funciona: if nome.text = "" then messagebox.show("Preencha Nome!") nome.focus() exit sub endif ou Public Function valida() If Nome.Text = "" Then MessageBox.Show("Preencha Nome!") Nome.Focus() Exit Function End If End Function Queria aproveitar aqui para pedir masi uma ajuda, o código abaixo seria para habilitar a tecla enter para saltar de um textbox para outra no preenchimento do form mas acho que não funciona na .Net. Como seria na .Net? Private Sub Clientes_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress 'permitir que a mudança de um campo para outro do formulário seja possível com o pressionamento da tecla ENTER If e.KeyChar = Convert.ToChar(13) Then e.Handled = True SendKeys.Send("{TAB}") End If End Sub Agora, e sobre o form maximizado?
  2. Carlos Rocha

    RecordSet

    Pega loa que ficou pronto. form de cadastro com load alimentando textbox's e gridviwie. parte de pesquisa dentro do mesmo form de cadastro (nada de abrir janelinha) com a mesma gridview filtrando: http://www.carcleo.com/vendas.zip será necessario criar as taelas no banco (já tem um arquivo .sql com as tabelas criadas la) Agora preciso de: 1) Validaçao de formulario, if nome.txt = "" then messagebox.show("Preencha Nome!") nome.focus() exit endif No vb não to sabendo fazer. Ele da a mensagem "Preencha Nome!", joga o focus no campo nome mas não para a execução e acaba gravando mesmo assim com campos vazios. 2) Uma função que valide cpf/cnpj 3) E, uma forma de fazer meu programinha de desktop em vb abrir as janelas dos forms filhos (isMDIContainer:=False) abrirem maximizadas. Eu coloco na ultima propiedade do form, na propriedade windows state do form Maximized mas não maximiza de jeito nenhum. O que pode ser feitro nesses 3 casos? Um abç!
  3. Carlos Rocha

    RecordSet

    pessoal, estou estudando sozinho e estou tendo muita dificuldade para aprender. primeiro por não ter um professor e segundo porque o pessoal não esta respondendo meus post's. Eu preciso dessa resposta para continuar. conto com voces
  4. Carlos Rocha

    RecordSet

    Ola, gostaria de saber se tem jeito de fazer um RecordSet sem ser nem em ADO nem em DAO? Meu código para conexão do mysql com o VB (sem ODDC) é: Imports MySql.Data.MySqlClient 'Comentando varias linhas Ctrl + K + C 'Descomentando varias linhas Ctrl + K + U Public Class DBConnection Dim Conexao As MySqlConnection Dim cmd As MySqlCommand = New MySqlCommand() Dim dt As DataTable Public Sub New() Conexao = New MySqlConnection() End Sub Public Sub OpenConnection() Dim strConnString As String = "server=localhost;userid=root;password=;database=Vendas" If Conexao Is Nothing Or Conexao.State = ConnectionState.Broken Or Conexao.State = ConnectionState.Closed Then Conexao = New MySqlConnection() Conexao.ConnectionString = strConnString Conexao.Open() End If End Sub Public Sub CloseConnection() If Conexao.State = ConnectionState.Open Then Conexao.Close() Conexao.Dispose() Conexao = Nothing End If End Sub End Class Se tem, como ficaria então?
  5. Ola Pessoal. Sou iniciante em .Net e to precisando de uma luz tua ai fazendo um favor: Peguei teu tuto http://www.macoratti.net/08/05/vbn8_psv.htm. Normalmente, a gente faz um formulário para cadastro de clientes e nele, um botão localizar que abre outro formulário para pesquisa(como você fez no tuto) de clientes certo? Nesse formulário de pesquisa, quando selecionamos no gridview o cliente que queremos e clikamos no botão selecionar, a rotina pega o id desse cliente, fecha o form de pesquisa e exibe os dados do cliente selecionado no form de cadastro de clientes. Certo? Pois bem. Eu resolvi, em vez de criar um form separado para pesquisa, criar um panel no próprio form de cadastro de clientes. Tudo ocorre normalmente, exceto um coisa: Após a pesquisa entregar os dados do cliente escolhido para o form de cadastro, caso eu clique no botão alterar do form para alterar o registro vindo da parte da pesquisa, caso o registro anterior tenha sido excluído, a rotina diz que o registro anterior não existe. Daí tentei pegar pelo posição do registro mas não deu também pois essa posição não é a do cadastro e sim da pesquisa. No mnomento em que eu faço o filtro no textbox ai o registro toma outra posição. Porem, isso só acontece com no caso da edição com registros que vem do form de pesquisa. Caso eu navegue pelos botões, próximo anterior... até esse mesmo registro, aí não da erro. Exemplo: registro na tabela: clientes exibidos: 01, 02, 03 e 05 (o 04 foi deletado) Se eu escolher os clientes de 01 a 03 no form de pesquisa, a edição funciona normal. Mas, se escolher o 05, ai ele diz que não existe registro na posição 04. Mas, isso só acontece quando o registro é alterado vindo do form de pesquisa. O que pode estar errado? O foco é na ultima parte La embaixo onde ta assim: Private Sub P_Nome_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles P_Nome.TextChanged Try Dim sql As String = "Select * from " & tabela & " where ativo='S' and nome like '" & P_Nome.Text & "%'" ds = accDb.ExecuteDS(sql, tabela) DGWClientes.DataSource = ds.Tables(0).DefaultView Catch ex As Exception MessageBox.Show("Erro: " & ex.Message, "Sem conexão", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try End Sub Private Sub Selecionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Selecionar.Click registro = DGWClientes.CurrentRow.Index exibirDados(registro) End Sub Bom, segue meu código completo: Imports MySql.Data.MySqlClient Public Class Clientes Dim accDb As New DBConnection Dim registro As Integer Dim dr As DataRow Dim dt As DataTable Dim ds As DataSet = Nothing Dim tabela As String = "Clientes" Public Sub habilita() For Each c As Control In Me.grpClientes.Controls If TypeOf c Is TextBox Then c.Enabled = True End If Next End Sub Public Sub desabilita() For Each c As Control In Me.grpClientes.Controls If TypeOf c Is TextBox Then c.Enabled = False End If Next End Sub Private Sub atribuirDados(ByVal dr As DataRow) dr("clienteID") = Codigo.Text dr("nome") = Nome.Text dr("endereco") = Endereco.Text dr("email") = Email.Text End Sub Private Sub exibirDados(ByVal m As Integer) Dim i As Integer = dt.Rows.Count - 1 If m < 0 OrElse i < 0 Then Exit Sub Dim dr As DataRow = dt.Rows(m) Codigo.Text = dr("clienteID") Nome.Text = dr("nome") Endereco.Text = dr("endereco") Email.Text = dr("email") End Sub Private Sub Clientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try Dim sql As String = "Select * from " & tabela & " where ativo='S'" ds = accDb.ExecuteDS(sql, tabela) dt = ds.Tables(tabela) DGWClientes.DataSource = ds.Tables(0).DefaultView registro = dt.Rows.Count - 1 exibirDados(registro) desabilita() If dt.Rows.Count = 0 Then Primeiro.Enabled = False Anterior.Enabled = False Proximo.Enabled = False Ultimo.Enabled = False Atualizar.Enabled = False Eliminar.Enabled = False Pesquisar.Enabled = False End If If dt.Rows.Count > 0 Then registro = 0 Primeiro_Click(Nothing, Nothing) Else registro = -1 End If Catch ex As Exception MessageBox.Show("Erro: " & ex.Message, "Sem conexão", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try End Sub Private Sub Primeiro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Primeiro.Click registro = 0 exibirDados(registro) End Sub Private Sub Anterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Anterior.Click registro = registro - 1 If registro < 0 Then registro = 0 exibirDados(registro) End Sub Private Sub Proximo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Proximo.Click Dim i As Integer = dt.Rows.Count - 1 registro = registro + 1 If registro > i Then registro = i exibirDados(registro) End Sub Private Sub Ultimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ultimo.Click registro = dt.Rows.Count - 1 exibirDados(registro) End Sub 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" habilita() Nome.Focus() Codigo.Enabled = False ElseIf Novo.Text = "Incluir" Then dr = dt.NewRow incluirRegistro(dr) Novo.Text = "Novo" Encerrar.Text = "Encerrar" Atualizar.Enabled = True Eliminar.Enabled = True desabilita() End If End Sub Private Sub incluirRegistro(ByVal dr As DataRow) Dim sql As String = "INSERT INTO " & tabela & " (nome,endereco,email,ativo)VALUES ('" & Nome.Text & "','" & Endereco.Text & "','" & Email.Text & "','S')" ds = accDb.ExecuteDS(sql, tabela) Try MessageBox.Show("registro de Usuário incluido com sucesso.") exibirDados(registro) 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 Clientes_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress 'permitir que a mudança de um campo para outro do formulário seja possível com o pressionamento da tecla ENTER If e.KeyChar = Convert.ToChar(13) Then e.Handled = True SendKeys.Send("{TAB}") End If End Sub Private Sub Atualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Atualizar.Click If Atualizar.Text = "Atualizar" Then registro = registro Novo.Enabled = False Eliminar.Enabled = False Encerrar.Text = "Cancela" Atualizar.Text = "Salvar Alteração" Nome.Focus() habilita() Codigo.Enabled = False ElseIf Atualizar.Text = "Salvar Alteração" Then Dim kk As String = registro Codigo.Enabled = False If registro < 0 OrElse registro > dt.Rows.Count - 1 Then Exit Sub dr = dt.Rows(registro) atualizarRegistro(dr) Atualizar.Text = "Atualizar" Encerrar.Text = "Encerrar" Novo.Enabled = True Eliminar.Enabled = True desabilita() End If End Sub Private Sub atualizarRegistro(ByVal dr As DataRow) atribuirDados(dr) Dim kk As String = registro Dim sql As String = "UPDATE " & tabela & " 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 Private Sub eliminarRegistro(ByVal codigo As Integer) Dim sql As String = "UPDATE " & tabela & " SET ativo = 'N' where clienteID = " & codigo ds = accDb.ExecuteDS(sql, tabela) Proximo_Click(Nothing, Nothing) Try MessageBox.Show("registro de Usuário excluido 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 Encerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Encerrar.Click If Encerrar.Text = "Encerrar" Then If MessageBox.Show("Deseja encerrar a aplicação", "Encerrar", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then If ds.HasChanges Then ds.AcceptChanges() End If Me.Close() End If ElseIf Encerrar.Text = "Cancela" Then desabilita() Encerrar.Text = "Encerrar" Atualizar.Enabled = True Eliminar.Enabled = True Novo.Text = "Novo" Novo.Enabled = True Atualizar.Text = "Atualizar" Anterior_Click(Nothing, Nothing) End If End Sub Private Sub P_Nome_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles P_Nome.TextChanged Try Dim sql As String = "Select * from " & tabela & " where ativo='S' and nome like '" & P_Nome.Text & "%'" ds = accDb.ExecuteDS(sql, tabela) DGWClientes.DataSource = ds.Tables(0).DefaultView Catch ex As Exception MessageBox.Show("Erro: " & ex.Message, "Sem conexão", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try End Sub Private Sub Selecionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Selecionar.Click registro = DGWClientes.CurrentRow.Index exibirDados(registro) End Sub End Class
  6. Ola Pessoal. Sou iniciante em .Net e to precisando de uma luz tua ai fazendo um favor: Peguei teu tuto http://www.macoratti.net/08/05/vbn8_psv.htm. Normalmente, a gente faz um formulário para cadastro de clientes e nele, um botão localizar que abre outro formulário para pesquisa(como você fez no tuto) de clientes certo? Nesse formulário de pesquisa, quando selecionamos no gridview o cliente que queremos e clikamos no botão selecionar, a rotina pega o id desse cliente, fecha o form de pesquisa e exibe os dados do cliente selecionado no form de cadastro de clientes. Certo? Pois bem. Eu resolvi, em vez de criar um form separado para pesquisa, criar um panel no próprio form de cadastro de clientes. Tudo ocorre normalmente, exceto um coisa: Após a pesquisa entregar os dados do cliente escolhido para o form de cadastro, caso eu clique no botão alterar do form para alterar o registro vindo da parte da pesquisa, caso o registro anterior tenha sido excluído, a rotina diz que o registro anterior não existe. Daí tentei pegar pelo posição do registro mas não deu também pois essa posição não é a do cadastro e sim da pesquisa. No mnomento em que eu faço o filtro no textbox ai o registro toma outra posição. Porem, isso só acontece com no caso da edição com registros que vem do form de pesquisa. Caso eu navegue pelos botões, próximo anterior... até esse mesmo registro, aí não da erro. Exemplo: registro na tabela: clientes exibidos: 01, 02, 03 e 05 (o 04 foi deletado) Se eu escolher os clientes de 01 a 03 no form de pesquisa, a edição funciona normal. Mas, se escolher o 05, ai ele diz que não existe registro na posição 04. Mas, isso só acontece quando o registro é alterado vindo do form de pesquisa. O que pode estar errado? O foco é na ultima parte La embaixo onde ta assim: Private Sub P_Nome_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles P_Nome.TextChanged Try Dim sql As String = "Select * from " & tabela & " where ativo='S' and nome like '" & P_Nome.Text & "%'" ds = accDb.ExecuteDS(sql, tabela) DGWClientes.DataSource = ds.Tables(0).DefaultView Catch ex As Exception MessageBox.Show("Erro: " & ex.Message, "Sem conexão", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try End Sub Private Sub Selecionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Selecionar.Click registro = DGWClientes.CurrentRow.Index exibirDados(registro) End Sub Bom, segue meu código completo: Imports MySql.Data.MySqlClient Public Class Clientes Dim accDb As New DBConnection Dim registro As Integer Dim dr As DataRow Dim dt As DataTable Dim ds As DataSet = Nothing Dim tabela As String = "Clientes" Public Sub habilita() For Each c As Control In Me.grpClientes.Controls If TypeOf c Is TextBox Then c.Enabled = True End If Next End Sub Public Sub desabilita() For Each c As Control In Me.grpClientes.Controls If TypeOf c Is TextBox Then c.Enabled = False End If Next End Sub Private Sub atribuirDados(ByVal dr As DataRow) dr("clienteID") = Codigo.Text dr("nome") = Nome.Text dr("endereco") = Endereco.Text dr("email") = Email.Text End Sub Private Sub exibirDados(ByVal m As Integer) Dim i As Integer = dt.Rows.Count - 1 If m < 0 OrElse i < 0 Then Exit Sub Dim dr As DataRow = dt.Rows(m) Codigo.Text = dr("clienteID") Nome.Text = dr("nome") Endereco.Text = dr("endereco") Email.Text = dr("email") End Sub Private Sub Clientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try Dim sql As String = "Select * from " & tabela & " where ativo='S'" ds = accDb.ExecuteDS(sql, tabela) dt = ds.Tables(tabela) DGWClientes.DataSource = ds.Tables(0).DefaultView registro = dt.Rows.Count - 1 exibirDados(registro) desabilita() If dt.Rows.Count = 0 Then Primeiro.Enabled = False Anterior.Enabled = False Proximo.Enabled = False Ultimo.Enabled = False Atualizar.Enabled = False Eliminar.Enabled = False Pesquisar.Enabled = False End If If dt.Rows.Count > 0 Then registro = 0 Primeiro_Click(Nothing, Nothing) Else registro = -1 End If Catch ex As Exception MessageBox.Show("Erro: " & ex.Message, "Sem conexão", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try End Sub Private Sub Primeiro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Primeiro.Click registro = 0 exibirDados(registro) End Sub Private Sub Anterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Anterior.Click registro = registro - 1 If registro < 0 Then registro = 0 exibirDados(registro) End Sub Private Sub Proximo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Proximo.Click Dim i As Integer = dt.Rows.Count - 1 registro = registro + 1 If registro > i Then registro = i exibirDados(registro) End Sub Private Sub Ultimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ultimo.Click registro = dt.Rows.Count - 1 exibirDados(registro) End Sub 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" habilita() Nome.Focus() Codigo.Enabled = False ElseIf Novo.Text = "Incluir" Then dr = dt.NewRow incluirRegistro(dr) Novo.Text = "Novo" Encerrar.Text = "Encerrar" Atualizar.Enabled = True Eliminar.Enabled = True desabilita() End If End Sub Private Sub incluirRegistro(ByVal dr As DataRow) Dim sql As String = "INSERT INTO " & tabela & " (nome,endereco,email,ativo)VALUES ('" & Nome.Text & "','" & Endereco.Text & "','" & Email.Text & "','S')" ds = accDb.ExecuteDS(sql, tabela) Try MessageBox.Show("registro de Usuário incluido com sucesso.") exibirDados(registro) 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 Clientes_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress 'permitir que a mudança de um campo para outro do formulário seja possível com o pressionamento da tecla ENTER If e.KeyChar = Convert.ToChar(13) Then e.Handled = True SendKeys.Send("{TAB}") End If End Sub Private Sub Atualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Atualizar.Click If Atualizar.Text = "Atualizar" Then registro = registro Novo.Enabled = False Eliminar.Enabled = False Encerrar.Text = "Cancela" Atualizar.Text = "Salvar Alteração" Nome.Focus() habilita() Codigo.Enabled = False ElseIf Atualizar.Text = "Salvar Alteração" Then Dim kk As String = registro Codigo.Enabled = False If registro < 0 OrElse registro > dt.Rows.Count - 1 Then Exit Sub dr = dt.Rows(registro) atualizarRegistro(dr) Atualizar.Text = "Atualizar" Encerrar.Text = "Encerrar" Novo.Enabled = True Eliminar.Enabled = True desabilita() End If End Sub Private Sub atualizarRegistro(ByVal dr As DataRow) atribuirDados(dr) Dim kk As String = registro Dim sql As String = "UPDATE " & tabela & " 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 Private Sub eliminarRegistro(ByVal codigo As Integer) Dim sql As String = "UPDATE " & tabela & " SET ativo = 'N' where clienteID = " & codigo ds = accDb.ExecuteDS(sql, tabela) Proximo_Click(Nothing, Nothing) Try MessageBox.Show("registro de Usuário excluido 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 Encerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Encerrar.Click If Encerrar.Text = "Encerrar" Then If MessageBox.Show("Deseja encerrar a aplicação", "Encerrar", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then If ds.HasChanges Then ds.AcceptChanges() End If Me.Close() End If ElseIf Encerrar.Text = "Cancela" Then desabilita() Encerrar.Text = "Encerrar" Atualizar.Enabled = True Eliminar.Enabled = True Novo.Text = "Novo" Novo.Enabled = True Atualizar.Text = "Atualizar" Anterior_Click(Nothing, Nothing) End If End Sub Private Sub P_Nome_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles P_Nome.TextChanged Try Dim sql As String = "Select * from " & tabela & " where ativo='S' and nome like '" & P_Nome.Text & "%'" ds = accDb.ExecuteDS(sql, tabela) DGWClientes.DataSource = ds.Tables(0).DefaultView Catch ex As Exception MessageBox.Show("Erro: " & ex.Message, "Sem conexão", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try End Sub Private Sub Selecionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Selecionar.Click registro = DGWClientes.CurrentRow.Index exibirDados(registro) End Sub End Class
  7. pessoal, matei mais essa ficou assim:> Private Sub P_Nome_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles P_Nome.TextChanged Try Dim sql As String = "Select * from " & tabela & " where ativo='S' and nome like '" & P_Nome.Text & "%'" ds = accDb.ExecuteDS(sql, tabela) DGWClientes.DataSource = ds.Tables(0).DefaultView Catch ex As Exception MessageBox.Show("Erro: " & ex.Message, "Sem conexão", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try End Sub Private Sub Selecionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Selecionar.Click Dim linha As Integer = DGWClientes.CurrentRow.Index 'Obtem o elemento da coluna ClienteID registro = DGWClientes.Item("ClienteID", linha).Value.ToString - 1 Dim i As Integer = dt.Rows.Count - 1 If registro > i Then registro = i exibirDados(registro) End Sub Agora. Poque coloco nas propriedades do form para ele abrir maximizado e ele n ão abre?
  8. pessoal, matei mais essa ficou assim:> Private Sub P_Nome_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles P_Nome.TextChanged Try Dim sql As String = "Select * from " & tabela & " where ativo='S' and nome like '" & P_Nome.Text & "%'" ds = accDb.ExecuteDS(sql, tabela) DGWClientes.DataSource = ds.Tables(0).DefaultView Catch ex As Exception MessageBox.Show("Erro: " & ex.Message, "Sem conexão", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try End Sub Private Sub Selecionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Selecionar.Click Dim linha As Integer = DGWClientes.CurrentRow.Index 'Obtem o elemento da coluna ClienteID registro = DGWClientes.Item("ClienteID", linha).Value.ToString - 1 Dim i As Integer = dt.Rows.Count - 1 If registro > i Then registro = i exibirDados(registro) End Sub Agora. Poque coloco nas propriedades do form para ele abrir maximizado e ele n ão abre?
  9. já que ninhguem ainda respondeu, vou tentar ser mais específico. Normalmente, a gente faz um formulario para cadastro de clientes e nele, um botão localizar que abre outro formulario para pesquiza de clientes certo? Nesse formulario de pesquisa, quando selecionamos no gridview o cliente que queremos e clikamos no botão selecionar, a rotina pega o id desse cliente, fecha o form de pesquisa e exibe os dados do cliente selecionado no form de cadastro de clientes. Certo? Pois bem. Eu resolvi, em vez de criar um form separado para pesquisa, criar um panel no proprio form de cadastro de clientes. Tudo ocorre normalmente, exceto um coisa: Após a pesquisa entrgar os dados do cliente escolhido para o form de cadastro, caso eu clique no botão alterar do form para alterar o registro vindo da parte da pesquisa, caso o registro anterior tenha sido excluido, a rotina diz que o registro anterior não existe. Porem, isso só acontece com no caso da ediçao com registros que vem do form de pesquisa. Caso eu navegue pelos botões, proximo anterior... até esse mesmo registro, aí não da erro. Exemplo: registro na tabela: clientes exibidos: 01, 02, 03 e 05 (o 04 foi deletado) Se eu escolher os clientes de 01 a 03 no form de pesquisa, a edição funciona normal. Mas, se escolher o 05, ai ele diz que não existe registro na posição 04. Mas, isso só acontece quan do o registro é alterado vin do do form de pesquisa. O que pode estar errado?
  10. Ola pessoal. Peguei o tutorial que esta em http://www.macoratti.net/08/06/vbn_psv2.htm, e resolvi colocar o form de pesquisa que la esta no formulario de cadastro de clientes. Meu código abaixo, faz a filtragem normal e exibe no gridview normal seleciona normal o registro no gridview e entregar os dados ao formulario (textbox). Quem conhece o table do delphi, estou fazendo algo que é semelhante ao table.locate() O problema é que, quando eu abro o form, navego normalmente entre os registros, edito. Porem, se eu deletar algum registro, no momento em que eu fizer o "Pesquisar" dentro do form, ai o script da erro. Vejam meu código: No código, tem um linha que me retorna o valor do clienteID que esta na tabela do banco de dados. Como resolvo isso? Private Sub P_Nome_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles P_Nome.TextChanged Try Dim sql As String = "Select * from " & tabela & " where ativo='S' and nome like '" & P_Nome.Text & "%'" ds = accDb.ExecuteDS(sql, tabela) DGWClientes.DataSource = ds.Tables(0).DefaultView Catch ex As Exception MessageBox.Show("Erro: " & ex.Message, "Sem conexão", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try End Sub Private Sub Selecionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Selecionar.Click Dim linha As Integer = DGWClientes.CurrentRow.Index 'Obtem o elemento da coluna ClienteID registro = DGWClientes.Item("clienteID", linha).Value - 1 exibirDados(registro) End Sub aqui você ve o form em execuçao: http://www.carcleo.com/execucao.jpg aqui você ve o form em depuraçao: http://www.carcleo.com/depuraçao.jpg Ah mais 2 coisas: tem a função exibirdados: Private Sub exibirDados(ByVal m As Integer) Dim i As Integer = dt.Rows.Count - 1 If m < 0 OrElse i < 0 Then Exit Sub Dim dr As DataRow = dt.Rows(m) Codigo.Text = dr("clienteID") Nome.Text = dr("Nome") Endereco.Text = dr("endereco") Email.Text = dr("Email") End Sub E a outra coisa é, mesmo colocando o form de clientes para abrir maximizado ele não abre como voces podem ver na figura. Por que?
  11. Esse eu já matei mas agora deu um problema. No código quie puz para resolver este problema, tem um linha que me retorna o valor do clienteID que esta na tabela do banco de dados. O problema é que não esta me retornando o valor do clienteID mas sim quantos resultados foram aferidos na consulta exposta no grid. Por exemplo: No grid sairam os id's: 01, 02, 03 e 05 Caso eu selecione no grid o id 05, o código abaixo esta me retornando 04 pois é o 04 registro a ser listado no grid. Como resolvo isso? Private Sub P_Nome_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles P_Nome.TextChanged Try Dim sql As String = "Select * from " & tabela & " where ativo='S' and nome like '" & P_Nome.Text & "%'" ds = accDb.ExecuteDS(sql, tabela) DGWClientes.DataSource = ds.Tables(0).DefaultView Catch ex As Exception MessageBox.Show("Erro: " & ex.Message, "Sem conexão", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try End Sub Private Sub Selecionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Selecionar.Click Dim linha As Integer = DGWClientes.CurrentRow.Index 'Obtem o elemento da coluna ClienteID registro = DGWClientes.Item("clienteID", linha).Value - 1 exibirDados(registro) End Sub
  12. Ola pessoal. Peguei o tutorial que esta em http://www.macoratti.net/08/06/vbn_psv2.htm, e resolvi colocar o form de pesquisa que la esta no formulario de cadastro de clientes. Meu código abaixo, faz a filtragem normal e exibe no gridview normal mas na hora que eu vou selecionar o registro no grid e entregar ao formulario, simplesmente não funciona. O que será que esta faltando? Meu código: Private Sub P_Nome_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles P_Nome.TextChanged Try Dim sql As String = "Select * from " & tabela & " where Nome like '" & P_Nome.Text & "%'" ds = accDb.ExecuteDS(sql, tabela) DGWClientes.DataSource = ds.Tables(0).DefaultView Catch ex As Exception MessageBox.Show("Erro: " & ex.Message, "Sem conexão", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try End Sub Private Sub Selecionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Selecionar.Click Dim linha As Integer = DGWClientes.CurrentRow.Index 'Obtem o elemento da coluna ClienteID Dim P_Codigo As String = DGWClientes.Item("ClienteID", linha).Value.ToString 'Definimos como OK o resultado da janela de diálogo Me.DialogResult = System.Windows.Forms.DialogResult.OK End Sub
  13. 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
  14. 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?
  15. Carlos Rocha

    Classe DBConnect

    alguém se habilita? Será que a dúvuda foi posta em forum errado?
  16. Carlos Rocha

    Classe DBConnect

    Bom, to indo bem mas ainda preciso da ajuda de voces. Seguinte. Criei a Classe dbconection com o código abaixo. Imports MySql.Data.MySqlClient 'Comentando varias linhas Ctrl + K + C 'Descomentando varias linhas Ctrl + K + U Public Class DBConnection Dim Conexao As MySqlConnection Dim cmd As MySqlCommand = New MySqlCommand() Public Sub New() Conexao = New MySqlConnection() End Sub Public Sub OpenConnection() Dim strConnString As String = "server=localhost;userid=root;password=;database=Vendas" If Conexao Is Nothing Or Conexao.State = ConnectionState.Broken Or Conexao.State = ConnectionState.Closed Then Conexao = New MySqlConnection() Conexao.ConnectionString = strConnString Conexao.Open() End If End Sub ... Agora, preciso adaptar o código do cadastro de clientes para pegar a variavel conexao que esta na classe dbconection assim: Private Sub incluirRegistro(ByVal dr As DataRow) 'Dim Conexao As MySqlConnection 'Dim comando As MySqlCommand 'Conexao = New MySqlConnection("server=localhost;uid=root;pwd=;database=vendas") 'Conexao.Open() 'comando = New MySqlCommand("INSERT INTO Clientes (Nome,Endereco,Email)VALUES ('" & Nome.Text & "','" & Endereco.Text & "','" & Email.Text & "')", Conexao) 'comando.ExecuteNonQuery() 'Conexao.Close() ' Dim Conexao As MySqlConnection Dim comando As MySqlCommand Conexao = New MySqlConnection("server=localhost;uid=root;pwd=;database=vendas") Conexao.Open() comando = New MySqlCommand("INSERT INTO Clientes (Nome,Endereco,Email)VALUES ('" & Nome.Text & "','" & Endereco.Text & "','" & Email.Text & "')", Conexao) comando.ExecuteNonQuery() Conexao.Close() End Sub E agora, como faz isso?
  17. Carlos Rocha

    Classe DBConnect

    Acho que consegui e jaja posto aqui. Por enquanto + uma dúvida: Criei uma classe cham,ada DBConnection. Quero, no formulario de cadastro de clientes fazer uso de uma variavel da classe DBConection como faço? Não quero acessar à função alguma só a propriedade stringconnection da variavel de conexão para preencher uma função de iserrt que esta lego abaixo desse código. Como faço? DBConnection.vb Imports MySql.Data.MySqlClient 'Comentando varias linhas Ctrl + K + C 'Descomentando varias linhas Ctrl + K + U Public Class DBConnection Dim mSqlConexao As MySqlConnection Dim cmd As MySqlCommand = New MySqlCommand() Public Sub New() mSqlConexao = New MySqlConnection() End Sub Public Sub OpenConnection() Dim strConnString As String = "server=localhost;userid=root;password=;database=Vendas" If mSqlConexao Is Nothing Or mSqlConexao.State = ConnectionState.Broken Or mSqlConexao.State = ConnectionState.Closed Then mSqlConexao = New MySqlConnection() mSqlConexao.ConnectionString = strConnString mSqlConexao.Open() End If End Sub Public Sub CloseConnection() If mSqlConexao.State = ConnectionState.Open Then mSqlConexao.Close() mSqlConexao.Dispose() mSqlConexao = Nothing End If End Sub 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 = mSqlConexao da.SelectCommand = cmd da.Fill(ds, tabela) da.Dispose() Return ds Catch ex As Exception MsgBox(ex.Message) End Try Return ds End Function End Class Clientes.v ... Private Sub incluirRegistro(ByVal dr As DataRow) Dim sqlInclui As String Dim reg As Integer Dim sqlComando As MySqlCommand atribuirDados(dr) sqlInclui = "INSERT INTO Clientes (Nome,Endereco,Email)VALUES ('" & Nome.Text & "','" & Endereco.Text & "','" & Email.Text & "')" Dim connBD As MySqlConnection = New MySqlConnection sqlComando = New MySqlCommand(sqlInclui, connBD) <<<<<<<<<<<--- aqui que eu preciso da.InsertCommand = sqlComando Try connBD.Open() reg = sqlComando.ExecuteNonQuery If reg > 0 Then MsgBox("Incluido com sucesso.") da.Update(ds, tabela) ds.Tables(tabela).Reset() da.Fill(ds, tabela) dt = ds.Tables(tabela) End If Catch ex As Exception MessageBox.Show("Erro : " & vbCrLf & ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error) Finally connBD.Close() End Try End Sub ... Ta dando o seguinte erro: Object reference not set to an instance of an object. parece que aqui a conexão não esta sendo feita
  18. Carlos Rocha

    Classe DBConnect

    Ok. Quanto a comentários entendi e agradeço. Agora. E, com relação ao código? Veja no inicio deste tópico a descrição da dúvida. Tem como me ajdar tambem?
  19. Carlos Rocha

    Classe DBConnect

    Pessoal, desculpe-me se estou sendo chato ou até mesmo enjoado. Mas, ainda não obtive reposta as minhas duvidas. Minhas duvidas não são duvidas complexas (avançadas) e sim duividas de iniciantes (básicas). Não sei se estou postando a dúvida no fórum correto. Eu quero é comentar um bloco de texto. Por exemplo, um comentário que gastaria umas 5 linhas ou um bloco de código de 20 linhas. O que eu to querendo é por um sinal de comentário no inicio da primeira linha e outro sinal de comentário no final da ultima linha. No Delphi comentário de uma linha só é assim: // comentário de uma linha só No VB comentário de uma linha só é assim: ' comentário de uma linha só No Delphi comentário de um bloco de linhas é assim: { .. bloco de comentários .. } E no VB, comentário de um bloco de linhas como seria?: ??????????????? E, com relação ao código, eu quero criar uma classe de conexão com o banco MySql só para conectar o banco de dados sem conectar a tabela. La no formulario de cadastro ou pesquiza, faria mensão à classe de conexão com o banco e faria a conexão com a tabela. Coisa basica mesmo só que estou comessando agora em VB.Net e ainda não conesgui nada que eu consiga entender nas minhas pesquisas na internte. Por enquanto é só isso que preciso. Fui mais claro agora?
  20. Carlos Rocha

    Classe DBConnect

    Gente, isso no Delphi é moleza mas em VB.Net ninguém responde? Para voces terem uma ideia, até um outro problema que eu tinha anterior a esse ninguém respondeu: Tenho o form pai e os forms filhos, todos abrindo com maximizados na proprioedade porem só o Pai abre maximizado e os filhos abrem restaurados. Por que? Outro problema que to enfentando é com comentarios. Para comentar 1 linha, coloco o ' e linha comentada. Agora, e para comentar varias linhas ao mesmo tempo, tenho que por um ' em todas as linhas?
  21. Bom, no Delphi, o nome da "coisa" que quero é Data Module e em VB me parece ser Classe DBConnect. Bom, eu criei um aplicação com Visual Basic 2008 e Mysql com acesso apenas pela Mysql.data.dll e o resto tudo no código. Nem mesmo a paleta do MySql estou usando. Criei um projeto no VB2008 e dei o nome de Vendas ao projeto e criei um formulario e o que chamei de menu.vb e coloquei ele como pai (isMDIContainer=True), puz tb uma classe DBContainer.vb (ainda não preenchi com nada) e um formulario dew cadastro de Clientes. Só que meu projeto não terá apenas um formulario de cadastro. Dai, surge a nescessidade de criar um datamodule ou DBConnection para colocar a conexão com o banco lá e, estando nos forms de cadastro, fazer uma chamada ao DBConection. Acontece, que li e re-li alguns ewxemplos que tem ai na internet mas não consegui nem entender nem muito menis adaptar ao meu código. Se alguém puder me ajudar: Eis aí o código que tenho agora: Clientes.vb Imports MySql.Data.MySqlClient Public Class Clientes Dim dt As DataTable Dim da As MySqlDataAdapter Dim connBD As MySqlConnection Dim ds As DataSet Dim registro As Integer Dim strcon As String Public Sub habilita() For Each c As Control In Me.grpClientes.Controls If TypeOf c Is TextBox Then c.Enabled = True End If Next End Sub Public Sub desabilita() For Each c As Control In Me.grpClientes.Controls If TypeOf c Is TextBox Then c.Enabled = False End If Next End Sub Private Sub Clientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load strcon = "server=localhost;user id=root;password=;database=vendas" Dim strSQL As String = "Select * from clientes order by clienteID" Try 'cria um dataset , preenche e carrega a tabela clientes Dim conBD As New MySqlConnection(strcon) ds = New DataSet da = New MySqlDataAdapter(strSQL, strcon) da.Fill(ds, "Clientes") dt = ds.Tables("Clientes") desabilita() If dt.Rows.Count > 0 Then registro = 0 Primeiro_Click(Nothing, Nothing) Else registro = -1 Atualizar.Enabled = False Eliminar.Enabled = False End If Catch ex As Exception MessageBox.Show("Erro: " & ex.Message, "Sem conexão", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try End Sub Private Sub Primeiro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Primeiro.Click registro = 0 exibirDados(registro) End Sub Private Sub Anterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Anterior.Click registro = registro - 1 If registro < 0 Then registro = 0 exibirDados(registro) End Sub Private Sub Proximo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Proximo.Click Dim i As Integer = dt.Rows.Count - 1 registro = registro + 1 If registro > i Then registro = i exibirDados(registro) End Sub Private Sub Ultimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ultimo.Click registro = dt.Rows.Count - 1 exibirDados(registro) End Sub Private Sub atribuirDados(ByVal dr As DataRow) 'dr("clienteID") = Codigo.Text dr("Nome") = Nome.Text dr("Endereco") = Endereco.Text dr("Email") = Email.Text End Sub Private Sub exibirDados(ByVal m As Integer) Dim i As Integer = dt.Rows.Count - 1 If m < 0 OrElse i < 0 Then Exit Sub Dim dr As DataRow = dt.Rows(m) Codigo.Text = dr("clienteID") Nome.Text = dr("Nome") Endereco.Text = dr("endereco") Email.Text = dr("Email") Atualizar.Enabled = True Eliminar.Enabled = True End Sub 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 Private Sub incluirRegistro(ByVal dr As DataRow) Dim sqlInclui As String Dim reg As Integer Dim sqlComando As MySqlCommand atribuirDados(dr) sqlInclui = "INSERT INTO Clientes (Nome,Endereco,Email)VALUES ('" & Nome.Text & "','" & Endereco.Text & "','" & Email.Text & "')" connBD = New MySqlConnection(strcon) sqlComando = New MySqlCommand(sqlInclui, connBD) da.InsertCommand = sqlComando Try connBD.Open() reg = sqlComando.ExecuteNonQuery If reg > 0 Then MsgBox("Incluido com sucesso.") da.Update(ds, "Clientes") ds.Tables("Clientes").Reset() da.Fill(ds, "Clientes") dt = ds.Tables("Clientes") End If Catch ex As Exception MessageBox.Show("Erro : " & vbCrLf & ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error) Finally connBD.Close() End Try End Sub Private Sub Atualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Atualizar.Click If Atualizar.Text = "Atualizar" Then Novo.Enabled = False Eliminar.Enabled = False Encerrar.Text = "Cancela" Atualizar.Text = "Salvar Alteração" Nome.Focus() habilita() Codigo.Enabled = False ElseIf Atualizar.Text = "Salvar Alteração" Then Codigo.Enabled = False If registro < 0 OrElse registro > dt.Rows.Count - 1 Then Exit Sub Dim dr As DataRow = dt.Rows(registro) atualizarRegistro(dr) Atualizar.Text = "Atualizar" Encerrar.Text = "Encerrar" Novo.Enabled = True Eliminar.Enabled = True desabilita() End If End Sub Private Sub atualizarRegistro(ByVal dr As DataRow) ' Private Sub Atualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Atualizar.Click Dim sqlAltera As String Dim reg As Integer Dim sqlComando As MySqlCommand atribuirDados(dr) sqlAltera = "UPDATE Clientes SET Nome = '" & Nome.Text & "',Endereco= '" & Endereco.Text & "',Email = '" & Email.Text & "' where clienteID='" & dr("clienteID") & "'" connBD = New MySqlConnection(strcon) sqlComando = New MySqlCommand(sqlAltera, connBD) 'define o sql para atualizar os dados da.UpdateCommand = sqlComando Try connBD.Open() reg = sqlComando.ExecuteNonQuery If reg > 0 Then MsgBox("Registro alterado com sucesso.") da.Update(ds, "Clientes") da.Fill(ds, "Clientes") dt = ds.Tables("Clientes") End If Catch ex As Exception MessageBox.Show("Erro : " & vbCrLf & ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error) Finally connBD.Close() 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 Private Sub eliminarRegistro(ByVal codigo As Integer) Dim sqlElimina As String Dim reg As Integer Dim sqlComando As MySqlCommand sqlElimina = "DELETE FROM Clientes WHERE clienteID = " & codigo connBD = New MySqlConnection(strcon) sqlComando = New MySqlCommand(sqlElimina, connBD) da.DeleteCommand = sqlComando Try connBD.Open() reg = sqlComando.ExecuteNonQuery If reg > 0 Then MsgBox("Registro Excluído com sucesso.") da.Update(ds, "Clientes") ds.Tables("Clientes").Reset() da.Fill(ds, "Clientes") dt = ds.Tables("Clientes") End If Catch ex As Exception MessageBox.Show("Erro : " & vbCrLf & ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error) Finally connBD.Close() End Try End Sub Private Sub Encerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Encerrar.Click If Encerrar.Text = "Encerrar" Then If MessageBox.Show("Deseja encerrar a aplicação", "Encerrar", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then If ds.HasChanges Then ds.AcceptChanges() End If Me.Close() End If ElseIf Encerrar.Text = "Cancela" Then desabilita() Encerrar.Text = "Encerrar" Atualizar.Enabled = True Eliminar.Enabled = True Novo.Text = "Novo" Novo.Enabled = True Atualizar.Text = "Atualizar" Anterior_Click(Nothing, Nothing) End If End Sub End Class E o desenho do form: http://www.carcleo.com/Clientes.vb.jpg Menu.vb (só tem o menu mesmo com uma chamada só para o Cadastro de clientes Public Class Menu Private Sub Menu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For Each ctl As Control In Me.Controls If TypeOf ctl Is MdiClient Then ctl.BackColor = Me.BackColor End If Next ctl End Sub Private Sub ClientesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClientesToolStripMenuItem.Click My.Forms.Clientes.MdiParent = Me My.Forms.Clientes.Show() End Sub End Class E o projeto para download esta em http://www.carcleo.com/Vendas.zip Classe DBConnect Como adaptar a esse código? Se aguem puder ajudar
  22. Seguinte, agora estou precisando das seguintes informações: criei os botões no formulario: Novo Registro Salvar Registro Excluir Registro Cancelar Alterar Registro Qual código devo usar no botao Novo Registro? Este botão é aquele que abre o form para digitação novamente. no Delphi, é tabela.append ou tabela.insert. E nbo VB??
  23. Deixa arder. Esquece. Em vez de eu criar um form de classe criei um form aplication. Brigado inté!
  24. Estou tentando me encontrar ainda e estou terntandeo criar uma especie de DataModule que me permita usar a conecção com, o banco nos forms sem ter que escrever a conecção em todos os forms. acheiu um modelo na net que ensina isso. pOrem, esta dando 1 erro na conecçao Public Sub New() mSqlConexao = New MySqlConnection() Me.HostName = My.Settings.host Me.DataBase = My.Settings.database Me.Login = My.Settings.login Me.Senha = My.Settings.pwd End Sub Nessa parte do código ta dando esse erro: Warning 1 'Public Sub New()' in designer-generated type 'Vendas.DBConnection' should call InitializeComponent method. C:\Nova pasta\Visual Studio 2008\Projects\Vendas\DBConnection.vb 51 16 Vendas Eis o código todo: Imports MySql.Data.MySqlClient Public Class DBConnection Dim mSqlTransacao As MySqlTransaction Dim mSqlConexao As MySqlConnection Dim mSqlServerHost As String = String.Empty Dim cmd As MySqlCommand = New MySqlCommand() Dim mSqlDataBase As String = "" Dim mSqlLogin As String = "" Dim mSqlSenha As String = "" Public Property Login() As String Get Return mSqlLogin End Get Set(ByVal value As String) mSqlLogin = value End Set End Property Public Property Senha() As String Get Return mSqlSenha End Get Set(ByVal value As String) mSqlSenha = value End Set End Property Public Property DataBase() As String Get Return mSqlDataBase End Get Set(ByVal value As String) mSqlDataBase = value End Set End Property Public Property HostName() As String Get Return mSqlServerHost End Get Set(ByVal value As String) mSqlServerHost = value End Set End Property Public Sub New() mSqlConexao = New MySqlConnection() Me.HostName = My.Settings.host Me.DataBase = My.Settings.database Me.Login = My.Settings.login Me.Senha = My.Settings.pwd End Sub Public Sub OpenConnection() Dim strConnString As String = "Data Source=" + Me.HostName + ";user id=" + Me.Login + ";password=" + Me.Senha + "; database=" + Me.DataBase If mSqlConexao Is Nothing Or mSqlConexao.State = ConnectionState.Broken Or mSqlConexao.State = ConnectionState.Closed Then mSqlConexao = New MySqlConnection() mSqlConexao.ConnectionString = strConnString mSqlConexao.Open() End If End Sub Public Sub CloseConnection() If mSqlConexao.State = ConnectionState.Open Then mSqlConexao.Close() mSqlConexao.Dispose() mSqlConexao = Nothing End If End Sub Public Function ExecuteDS(ByVal sql As String) As DataSet Dim ds As New DataSet Dim da As MySqlDataAdapter = New MySqlDataAdapter() Try Me.OpenConnection() cmd.CommandType = CommandType.Text cmd.CommandText = sql cmd.Connection = mSqlConexao da.SelectCommand = cmd da.Fill(ds) da.Dispose() Return ds Catch ex As Exception MsgBox(ex.Message) End Try Return ds End Function Public Function ExecuteDR(ByVal sql As String) As MySqlDataReader Dim dr As MySqlDataReader = Nothing Try Me.OpenConnection() cmd.CommandType = CommandType.Text cmd.CommandText = sql cmd.Connection = mSqlConexao dr = cmd.ExecuteReader cmd.Dispose() Return dr Catch ex As Exception MsgBox(ex.Message) End Try Return dr End Function End Class E agora?
  25. Veja, esse As Clientes, se refere ao formulario de clientes. Esta recebendo uma variavel de la e jogando para a variavel Cli usando lambda. Mas, tudo o que estou querendo é, no código , substituir a variavel bd(que nesse modelo que peguei é uma classe de conexão com banco do tipo DataContext) por uma do tipo que voce esta me instruindo como fazer via datareader. Entendeu?
×
×
  • Criar Novo...