GRAVAR DADOS
Sou iniciante em VB e pego programas prontos e funcionando pra [Ô]reconstruir[Ô] pois só dessa forma vu entendendo alguns conceitos. Tenho que refazer pra entender o que to fazendo, senão a parada não entra na cabeça. Recentemente to com um projeto funcionando tudo ok aqui e estou tentando faze algumas alterações nele e não to conseguindo, gos taria que alguém desse uma olhada no código e me orientasse o que devo fazer pra conseguir o que pretendo.
O sistema já tá funcionando, pesquisando e gravando no BD tudo certinho, então o que to pretendendo é estender, criando novas rotinas e tabelas em cima de um BD que já existe. Vou mandar o código do que tenho aqui que funciona:
Private Sub GravarDados()
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vErro As Boolean
On Error GoTo errGravacao
[ô]Inicializa as variáveis auxiliares:
vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
vErro = False
[ô]Verifica os dados digitados:
If txtNome.Text = Empty Then
MsgBox [Ô]O campo Nome não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
[ô]Se aconteceu um erro de digitação, sai da sub sem gravar:
If vErro Then Exit Sub
Screen.MousePointer = vbHourglass
With cnnComando
.ActiveConnection = cnnBiblio
.CommandType = adCmdText
[ô]Verifica a operação e cria o comando SQL correspondente:
If vInclusao Then
[ô]Inclusão:
.CommandText = [Ô]INSERT INTO CadastroPF [Ô] & _
[Ô](Codigo, Nome, Nacionalidade, EstadoCivil, Profissao, Identidade, Cpf, Endereco, Bairro, Cep, Cidade, Estado ) VALUES ([Ô] & _
Val(txtCodigo.Text) & [Ô],[ô][Ô] & _
txtNome.Text & [Ô][ô],[ô][Ô] & _
txtNacionalidade.Text & [Ô][ô],[ô][Ô] & _
txtEstadoCivil.Text & [Ô][ô],[ô][Ô] & _
txtProfissao.Text & [Ô][ô],[ô][Ô] & _
txtIdentidade.Text & [Ô][ô],[ô][Ô] & _
txtCpf.Text & [Ô][ô],[ô][Ô] & _
txtEndereco.Text & [Ô][ô],[ô][Ô] & _
txtBairro.Text & [Ô][ô],[ô][Ô] & _
txtCep.Text & [Ô][ô],[ô][Ô] & _
txtCidade.Text & [Ô][ô],[ô][Ô] & _
txtEstado.Text & [Ô][ô]);[Ô]
Else
[ô]Alteração:
.CommandText = [Ô]UPDATE CadastroPF SET [Ô] & _
[Ô]Nome = [ô][Ô] & txtNome.Text & [Ô][ô],[Ô] & _
[Ô]Nacionalidade = [ô],[Ô] & txtNacionalidade.Text & [Ô][ô],[Ô] & _
[Ô]EstadoCivil = [ô],[Ô] & txtEstadoCivil.Text & [Ô][ô],[Ô] & _
[Ô]Profissao = [ô],[Ô] & txtProfissao.Text & [Ô][ô],[Ô] & _
[Ô]Identidade = [ô],[Ô] & txtIdentidade.Text & [Ô][ô],[Ô] & _
[Ô]Cpf = [ô],[Ô] & txtCpf.Text & [Ô][ô],[Ô] & _
[Ô]Endereco = [ô],[Ô] & txtEndereco.Text & [Ô][ô],[Ô] & _
[Ô]Bairro = [ô],[Ô] & txtBairro.Text & [Ô][ô],[Ô] & _
[Ô]Cep = [ô],[Ô] & txtCep.Text & [Ô][ô],[Ô] & _
[Ô]Cidade = [ô],[Ô] & txtCidade.Text & [Ô][ô],[Ô] & _
[Ô]Estado = [ô],[Ô] & txtEstado.Text & [Ô][ô],[Ô] & _
[Ô]WHERE CodUsuario = [Ô] & Val(txtCodigo.Text) & [Ô];[Ô]
End If
.Execute
End With
MsgBox [Ô]Gravação concluÃda com sucesso.[Ô], _
vbApplicationModal + vbInformation + vbOKOnly, _
[Ô]Gravação OK[Ô]
[ô]Chama a sub que limpa os dados do formulário:
LimparTela
Saida:
Screen.MousePointer = vbDefault
Set cnnComando = Nothing
Exit Sub
errGravacao:
With Err
If .Number <> 0 Then
MsgBox [Ô]Houve um erro durante a gravação dos dados na tabela.[Ô], _
vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
.Number = 0
GoTo Saida
End If
End With
End Sub
Basicamente o que esse sistema faz é verificar numa toolbar o botão clicado e faz as devidas alterações (inclusão, edição, deleção, etc...) e isso já tá funcionando. Agora o que preciso é fazer isso individualmente usando o mesmo padrão e não to conseguindo. Essa rotina funciona perfeitamente mas eu gostaria de numa outra tabela que já criei nesse mesmo BD, apenas gravar algumas informações pra eu ir entendendo esse procedimento de gravação, então só tem que deixar esse código mais enxuto pra apenas gravar, se possÃvel comentando. Não precisa testar se já tem o registro ou qualquer coisa desse tipo. Apenas gravar usando apenas um clique. Depois que tiver funcional, eu vou tentanto implantar essas alterações.
Nesse rotina eu puxo todos os dados da outra tabela, depois disso eu acrescento mais alguns textbox num form e gravo o resultado numa outra tabela, entendeu? De uma tabela inicial eu gero outra, e outra, etc.. Mas preciso aprender a fazer uma gravação simples primeiro.
O sistema já tá funcionando, pesquisando e gravando no BD tudo certinho, então o que to pretendendo é estender, criando novas rotinas e tabelas em cima de um BD que já existe. Vou mandar o código do que tenho aqui que funciona:
Private Sub GravarDados()
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vErro As Boolean
On Error GoTo errGravacao
[ô]Inicializa as variáveis auxiliares:
vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
vErro = False
[ô]Verifica os dados digitados:
If txtNome.Text = Empty Then
MsgBox [Ô]O campo Nome não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
[ô]Se aconteceu um erro de digitação, sai da sub sem gravar:
If vErro Then Exit Sub
Screen.MousePointer = vbHourglass
With cnnComando
.ActiveConnection = cnnBiblio
.CommandType = adCmdText
[ô]Verifica a operação e cria o comando SQL correspondente:
If vInclusao Then
[ô]Inclusão:
.CommandText = [Ô]INSERT INTO CadastroPF [Ô] & _
[Ô](Codigo, Nome, Nacionalidade, EstadoCivil, Profissao, Identidade, Cpf, Endereco, Bairro, Cep, Cidade, Estado ) VALUES ([Ô] & _
Val(txtCodigo.Text) & [Ô],[ô][Ô] & _
txtNome.Text & [Ô][ô],[ô][Ô] & _
txtNacionalidade.Text & [Ô][ô],[ô][Ô] & _
txtEstadoCivil.Text & [Ô][ô],[ô][Ô] & _
txtProfissao.Text & [Ô][ô],[ô][Ô] & _
txtIdentidade.Text & [Ô][ô],[ô][Ô] & _
txtCpf.Text & [Ô][ô],[ô][Ô] & _
txtEndereco.Text & [Ô][ô],[ô][Ô] & _
txtBairro.Text & [Ô][ô],[ô][Ô] & _
txtCep.Text & [Ô][ô],[ô][Ô] & _
txtCidade.Text & [Ô][ô],[ô][Ô] & _
txtEstado.Text & [Ô][ô]);[Ô]
Else
[ô]Alteração:
.CommandText = [Ô]UPDATE CadastroPF SET [Ô] & _
[Ô]Nome = [ô][Ô] & txtNome.Text & [Ô][ô],[Ô] & _
[Ô]Nacionalidade = [ô],[Ô] & txtNacionalidade.Text & [Ô][ô],[Ô] & _
[Ô]EstadoCivil = [ô],[Ô] & txtEstadoCivil.Text & [Ô][ô],[Ô] & _
[Ô]Profissao = [ô],[Ô] & txtProfissao.Text & [Ô][ô],[Ô] & _
[Ô]Identidade = [ô],[Ô] & txtIdentidade.Text & [Ô][ô],[Ô] & _
[Ô]Cpf = [ô],[Ô] & txtCpf.Text & [Ô][ô],[Ô] & _
[Ô]Endereco = [ô],[Ô] & txtEndereco.Text & [Ô][ô],[Ô] & _
[Ô]Bairro = [ô],[Ô] & txtBairro.Text & [Ô][ô],[Ô] & _
[Ô]Cep = [ô],[Ô] & txtCep.Text & [Ô][ô],[Ô] & _
[Ô]Cidade = [ô],[Ô] & txtCidade.Text & [Ô][ô],[Ô] & _
[Ô]Estado = [ô],[Ô] & txtEstado.Text & [Ô][ô],[Ô] & _
[Ô]WHERE CodUsuario = [Ô] & Val(txtCodigo.Text) & [Ô];[Ô]
End If
.Execute
End With
MsgBox [Ô]Gravação concluÃda com sucesso.[Ô], _
vbApplicationModal + vbInformation + vbOKOnly, _
[Ô]Gravação OK[Ô]
[ô]Chama a sub que limpa os dados do formulário:
LimparTela
Saida:
Screen.MousePointer = vbDefault
Set cnnComando = Nothing
Exit Sub
errGravacao:
With Err
If .Number <> 0 Then
MsgBox [Ô]Houve um erro durante a gravação dos dados na tabela.[Ô], _
vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
.Number = 0
GoTo Saida
End If
End With
End Sub
Basicamente o que esse sistema faz é verificar numa toolbar o botão clicado e faz as devidas alterações (inclusão, edição, deleção, etc...) e isso já tá funcionando. Agora o que preciso é fazer isso individualmente usando o mesmo padrão e não to conseguindo. Essa rotina funciona perfeitamente mas eu gostaria de numa outra tabela que já criei nesse mesmo BD, apenas gravar algumas informações pra eu ir entendendo esse procedimento de gravação, então só tem que deixar esse código mais enxuto pra apenas gravar, se possÃvel comentando. Não precisa testar se já tem o registro ou qualquer coisa desse tipo. Apenas gravar usando apenas um clique. Depois que tiver funcional, eu vou tentanto implantar essas alterações.
Nesse rotina eu puxo todos os dados da outra tabela, depois disso eu acrescento mais alguns textbox num form e gravo o resultado numa outra tabela, entendeu? De uma tabela inicial eu gero outra, e outra, etc.. Mas preciso aprender a fazer uma gravação simples primeiro.
Você postou informações DEMAIS, mas não postou o NECESSÃRIO.
Resumindo, o que precisa fazer no projeto ?
Resumindo, o que precisa fazer no projeto ?
E aà Tecla, blz? é verdade.. tá confuso mesmo. é o seguinte, esse projeto já existe e tá funcionando tudo certinho. Banco, Tabela1. Criei um botão pra gravar em Banco, Tabela2 e tentei aproveitar o mesmo código, mas só tá dando erro. Provavelmente por conta de algum teste que ele continua fazendo na Tabela1, então optei por apenas criar um código que gravasse os dados dos forms na Tabela2. Só gravar e ira para o próximo registro aguardar a gravação do próximo. Essa rotina de alteração, exclusão, etc.. eu gostaria de deixar para um próximo form, onde eu usaria o mesmo código, sem precisar alteração.
Resumindo, gostaria de ter o código certo só pra rotina de inclusão usando esse mesmo objeto pra não ter necessidade de declarar mais nada. Seria só a parte de gravar na tabela mesmo, esquecendo alteração, consulta, toolbar, etc... Já tentei copiar a parte do código INSERT INTO fazendo as devidas alterações nos nomes dos campos, mas não funciona, provavelmente por conta de alguma variável que não tá zerada ou coisa parecida, então precisava só do código de gravar, sem with, if, etc...
Resumindo, gostaria de ter o código certo só pra rotina de inclusão usando esse mesmo objeto pra não ter necessidade de declarar mais nada. Seria só a parte de gravar na tabela mesmo, esquecendo alteração, consulta, toolbar, etc... Já tentei copiar a parte do código INSERT INTO fazendo as devidas alterações nos nomes dos campos, mas não funciona, provavelmente por conta de alguma variável que não tá zerada ou coisa parecida, então precisava só do código de gravar, sem with, if, etc...
OK... Então poste no tópico o NOME DA TABELA, os CAMPOS e os seus TIPOS DE DADOS.
To fazendo através de um botão com esse código:
Private Sub Command2_Click()
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vErro As Boolean
On Error GoTo errGravacao
[ô]Inicializa as variáveis auxiliares:
vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
vErro = False
[ô]Verifica os dados digitados:
If txtNome.Text = Empty Then
MsgBox [Ô]O campo Nome não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
[ô]Se aconteceu um erro de digitação, sai da sub sem gravar:
If vErro Then Exit Sub
Screen.MousePointer = vbHourglass
With cnnComando
.ActiveConnection = cnnBiblio
.CommandType = adCmdText
[ô]Verifica a operação e cria o comando SQL correspondente:
[ô]Inclusão:
[ô]Inclusão:
.CommandText = [Ô]INSERT INTO Duplicatas [Ô] & _
[Ô](Codigo, Nome, Produto, ValorCompra, DataCompra, Vencimento1, Valor1, Vencimento2, Valor2, Vencimento3, Valor3, Vencimento4 ) VALUES ([Ô] & _
Val(txtCodigo.Text) & [Ô],[ô][Ô] & _
txtNome.Text & [Ô][ô],[ô][Ô] & _
txtProduto.Text & [Ô][ô],[ô][Ô] & _
txtValorCompra.Text & [Ô][ô],[ô][Ô] & _
txtDataCompra.Text & [Ô][ô],[ô][Ô] & _
txtVencimento(0).Text & [Ô][ô],[ô][Ô] & _
txtValorParcela(0).Text & [Ô][ô],[ô][Ô] & _
txtVencimento(1).Text & [Ô][ô],[ô][Ô] & _
txtValorParcela(1).Text & [Ô][ô],[ô][Ô] & _
txtVencimento(2).Text & [Ô][ô],[ô][Ô] & _
txtValorParcela(2).Text & [Ô][ô],[ô][Ô] & _
txtVencimento(3).Text & [Ô][ô]);[Ô]
.Execute
End With
MsgBox [Ô]Gravação concluÃda com sucesso.[Ô], _
vbApplicationModal + vbInformation + vbOKOnly, _
[Ô]Gravação OK[Ô]
[ô]Chama a sub que limpa os dados do formulário:
Saida:
Screen.MousePointer = vbDefault
Set cnnComando = Nothing
Exit Sub
errGravacao:
With Err
If .Number <> 0 Then
MsgBox [Ô]Houve um erro durante a gravação dos dados na tabela.[Ô], _
vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
.Number = 0
GoTo Saida
End If
End With
End Sub
Mas tá indo até o final, mostrando a mensagem de erro (houve um erro durante a gravação dos dados na tabela) e não tá gravando nada na tabela
Private Sub Command2_Click()
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vErro As Boolean
On Error GoTo errGravacao
[ô]Inicializa as variáveis auxiliares:
vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
vErro = False
[ô]Verifica os dados digitados:
If txtNome.Text = Empty Then
MsgBox [Ô]O campo Nome não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If
[ô]Se aconteceu um erro de digitação, sai da sub sem gravar:
If vErro Then Exit Sub
Screen.MousePointer = vbHourglass
With cnnComando
.ActiveConnection = cnnBiblio
.CommandType = adCmdText
[ô]Verifica a operação e cria o comando SQL correspondente:
[ô]Inclusão:
[ô]Inclusão:
.CommandText = [Ô]INSERT INTO Duplicatas [Ô] & _
[Ô](Codigo, Nome, Produto, ValorCompra, DataCompra, Vencimento1, Valor1, Vencimento2, Valor2, Vencimento3, Valor3, Vencimento4 ) VALUES ([Ô] & _
Val(txtCodigo.Text) & [Ô],[ô][Ô] & _
txtNome.Text & [Ô][ô],[ô][Ô] & _
txtProduto.Text & [Ô][ô],[ô][Ô] & _
txtValorCompra.Text & [Ô][ô],[ô][Ô] & _
txtDataCompra.Text & [Ô][ô],[ô][Ô] & _
txtVencimento(0).Text & [Ô][ô],[ô][Ô] & _
txtValorParcela(0).Text & [Ô][ô],[ô][Ô] & _
txtVencimento(1).Text & [Ô][ô],[ô][Ô] & _
txtValorParcela(1).Text & [Ô][ô],[ô][Ô] & _
txtVencimento(2).Text & [Ô][ô],[ô][Ô] & _
txtValorParcela(2).Text & [Ô][ô],[ô][Ô] & _
txtVencimento(3).Text & [Ô][ô]);[Ô]
.Execute
End With
MsgBox [Ô]Gravação concluÃda com sucesso.[Ô], _
vbApplicationModal + vbInformation + vbOKOnly, _
[Ô]Gravação OK[Ô]
[ô]Chama a sub que limpa os dados do formulário:
Saida:
Screen.MousePointer = vbDefault
Set cnnComando = Nothing
Exit Sub
errGravacao:
With Err
If .Number <> 0 Then
MsgBox [Ô]Houve um erro durante a gravação dos dados na tabela.[Ô], _
vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
.Number = 0
GoTo Saida
End If
End With
End Sub
Mas tá indo até o final, mostrando a mensagem de erro (houve um erro durante a gravação dos dados na tabela) e não tá gravando nada na tabela
Esqueci um detalhe. Código é número. nome e produto é texto, valorcompra é número, datacompra e vencimento é data, e valor é número.
Antes de mais nada, veja um exemplo de como você deve INSERIR um registro.
Perceba que em alguns campos você acrescenta [ô] (apóstrofo) e outros não.
Sugiro que teste primeiro, se o registro for INSERIDO, é só você fazer com que os dados [Ô]cheguem[Ô] à QUERY conforme o exemplo abaixo:
Perceba que em alguns campos você acrescenta [ô] (apóstrofo) e outros não.
Sugiro que teste primeiro, se o registro for INSERIDO, é só você fazer com que os dados [Ô]cheguem[Ô] à QUERY conforme o exemplo abaixo:
CommandText = [Ô]INSERT INTO Duplicatas (Codigo, Nome, Produto, ValorCompra, DataCompra, Vencimento1, Valor1, Vencimento2, Valor2, Vencimento3, Valor3, Vencimento4 ) VALUES (1, [ô]NOME 1[ô], [ô]PRODUTO 1[ô], 100.10, [ô]01/01/2009[ô], [ô]29/01/2009[ô], 100.20, [ô]30/01/2009[ô], 100.30, [ô]31/01/2009[ô], 100.40, [ô]01/02/2009[ô])
Tópico encerrado , respostas não são mais permitidas