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
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
Pergunta
Carlos Rocha
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
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 clientesE o projeto para download esta em
http://www.carcleo.com/Vendas.zip
Classe DBConnect
Como adaptar a esse código?
Se aguem puder ajudar
Editado por Carlos RochaLink para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.