Ir para conteúdo
Fórum Script Brasil
  • 0

Inserindo dados em BD


Macêdo

Pergunta

Bom galera numa dica anterior mostrei como acessar um Banco de Dados via ADO:

http://scriptbrasil.com.br/forum/index.php?showtopic=103750

Agora vou mostrar como inserir dados na tabela do BD

Bom, para ficar de facil entendimento o nome da tabela do BD será CLIENTES e os campos serão (cod, cpf, nascimento, nome, rg, endereco, telefone e celular) (lembrando que é sempre importante termos um campo código onde os valores não podem se duplicar, pois digamos que temos um cadastro e neste cadastro existem muitas pessoas com dados iguais, como nomes por exemplo, então na hora de fazermos alguma alteração teremos que nos referenciar pelo campo código que é unico)

Vamos lá,

Com nossa conexão já OK vamos colocar no Form em General Declarations

Dim cmd As New ADODB.Command 'objeto command para trabalhar com o banco, inserindo, excluindo etc..
Dim rs As New ADODB.Recordset     'Recodset que trará valores da tabela em nossas consultas
Dim vCod_cliente As Long                'variavel onde colocaremos o valor do codigo do cliente
Dim vinfo As Integer                        'usaremos para chamar sempre que preciso uma MsgBox
vamos criar uma SUB e colocar o seguinte codigo, que fará o procedimento de verificar qual o ultimo valor do codigo inserido na tabela do BD e preparar o novo codigo para inserção de um novo registro
Private Sub inserir()

vinfo = MsgBox("Deseja cadastrar novo Cliente ?", vbYesNo + vbQuestion, "Cadastro de Cliente") 
If vinfo = vbYes Then  'se deseja gravar novo cliente então

    With cmd 'usando o command para retornar um dado da tabela
    .ActiveConnection = cnn 'indica ao command qual a conexão ativa
    .CommandType = adCmdText 'SQL para o commmand
    .CommandText = " select max(cod) as ultimocod from clientes " ' pedimos ao command que retorne o ultimo registro
    Set rs = .Execute 'lançamos o valor do ultimo registro no Recordset
    End With

    With rs 'procedimento com o recordset
        If IsNull(rs!ultimocod) Then ' se estiver nulo, ou seja, não tiver nenhum cliente cadastrado
        vCod_cliente = 1 'o codigo será 1, nosso primeiro cliente a ser cadastrado
        Else 'se não estiver nulo, ou seja, se já tiver clientes cadastrados
        vCod_cliente = !ultimocod + 1 ' o codigo será o ultimo acrescido de 1
        End If
    End With

End If

End Sub
Bom, para que esta rotina aconteça basta chama-la no click do botão que usaremos para preparar os campos para inserção de novo cadastro assim
Private Sub Cmd_Inserir_Click()

Inserir

End Sub
Ao clicarmos no botão, a rotina de inserir será criada, lançando na variável vCod_cliente o código do cliente que iremos cadastrar Agora vamos criar o procedimento que irá gravar no BD os dados do nosso cliente:
Private Sub salvar()

' se a variavel não está vazia, ou seja, possui o numero do codigo do cliente
If vCod_cliente <> Empty Then

'usaremos o command para retornar o campo cod e nome
'onde o campo cod seja igual ao valor que está na variavel
'para ver se será uma inclusão de novo cliente ou alteração
'do cadastro de um cliente existente

    With cmd
    .ActiveConnection = cnn 'nossa conexão
    .CommandType = adCmdText
    .CommandText = "select cod, nome from clientes where cod = " & vCod_cliente & ""
    Set rs = .Execute 'jogamos o resultado no Recordset
    End With
    
    With rs
        'se não encontrou será a inclusão de novo cliente
        If .BOF And .EOF Then
        'o command agora será usado para inserir os dados das textBox na tabela

        With cmd
        .ActiveConnection = cnn
        .CommandType = adCmdText
        .CommandText = " insert into clientes " & _
        "(cod, cpf, nome, nascimento, rg, endereco, telefone, celular)values ('" & _
        vCod_cliente & "','" & _
        Text_cpf.Text & "','" & _
        Text_nome.Text & "', '" & _
        Tex_nascimento & "', '" & _
        Text_Rg.Text & "','" & _
        Text_Endereco.Text & "','" & _
        Text_telefone.Text & "','" & _
        Text_celular.Text & "');"
        .Execute   'este comando é que efetua a gravação dos dados informados na tabela
        End With
    
            
        'mensagem informando a gravação dos dados do cliente

        vinfo = MsgBox("Cadastro efetuado com sucesso", vbOKOnly + vbInformation, "Cadastro de Clientes")


        'se encontrou será uma alteração de cliente existente

        Else

        'caixa perguntando se queremos salvar as alterações feitas no cadastro do cliente

        vinfo = MsgBox("Deseja salvar as alterações feitas no lançamento de " & !nome & " ?", vbYesNo + vbQuestion, "Salvar alterações")
               
            If vinfo = vbYes Then 'se sim

            'aqui o command faz o update, altera os campos referente ao cliente cujo codigo é igual à variavel

            With cmd
            .ActiveConnection = cnn
            .CommandType = adCmdText
            .CommandText = " update clientes set " & _
            "cpf = '" & Text_cpf.Text & "'," & _
            "nome = '" & Text_nome.Text & "', " & _
            "nascimento = '" & text_nascimento & "', " & _
            "rg = '" & Text_Rg.Text & "'," & _
            "endereco = '" & Text_Endereco.Text & "'," & _
            "telefone = '" & Text_telefone.Text & "'," & _
            "celular = '" & Text_celular.Text & "' where cod = " & vCod_cliente & ";"
            .Execute
            End With

            
            'informa que foram alterados os campos do cliente que já existia

            vinfo = MsgBox("Alterações salvas com sucesso", vbOKOnly + vbInformation, "Salvar alterações")

            End If
        End If
    End With
End If

End Sub
Para chamar esta sub é só coloca-la no botão que irá gravar os dados
Private Sub Cmd_salvar_Click()

Salvar

End Sub

Editado por Macêdo
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Dica:

Para se construir grandes strings por concatenação, eu recomendo o seguinte:

1. Crie uma variável do tipo string pública para que você não precise sempre estar dimensionando uma.

Em um módulo dimensione:

Public strCon as string 'Variável de conexão para instruções SQL
Ou
Public gstrCon as string 'Variável de conexão para instruções SQL com um 'g' significando global scope
2. Sempre que precisar, utilize da seguinte forma:
strCon = ""                                         'Esta linha é necessária para inicializar a variável de uma forma organizada
strCon = strCon & "update clientes"
strCon = strCon & " set"
strCon = strCon & " cpf =             '" & Text_cpf.Text & "'," 
strCon = strCon & " nome =         '" & Text_nome.Text & "', "
strCon = strCon & " nascimento = '" & text_nascimento & "', "
strCon = strCon & " rg =              '" & Text_Rg.Text & "',"
strCon = strCon & " endereco =    '" & Text_Endereco.Text & "',"
strCon = strCon & " telefone =      '" & Text_telefone.Text & "'," 
strCon = strCon & " celular =        '" & Text_celular.Text & "'"
strCon = strCon & " where cod =   " & vCod_cliente & ";"

Pode parecer besteira, mas quando o projeto começa a crescer, cada detalhe de organização e a capacidade de manter um padrão de escrita no código podem contribuir e muito para um trabalho mas limpo, prático, e confiável e em um ambiente que não induza o programador ao erro.

Um abraço.

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...