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

Problemas com gravação de dados no mdb


bordoni

Pergunta

Bom dia a todos. Estou aprendendo VB6 para criar uma agenda de fornecedores personalizada para minha função aqui na empresa onde trabalho. Estou adaptando um exemplo de uma apostila, mas cheguei em um ponto em que estagnei.

O programa cadastra e pesquisa fornecedores em um banco de dados mdb. Na rotina GravarDados, o programa gera um erro em tempo de execução. Aparentemente, a string que é construída em .CommandText está muito extensa (na janela locals a string aparece cortada). Segue abaixo o pedaço do código onde acontece o problema. Se alguém souber o que gera o erro e puder sugerir alguma solução, fico agradecido.

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 txtEmpresa.Text = Empty Then
        MsgBox "O campo Empresa não foi preenchido.", vConfMsg, "Erro"
        vErro = True
    End If
    If (txtTelefone1.Text = Empty And txtTelefone2.Text = Empty) Then
        MsgBox "Pelo menos um campo Telefone deve ser 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 = cnnAgenda
        .CommandType = adCmdText
        'Verifica a operação e cria o comando SQL correspondente:
        If vInclusao Then
            'Inclusão:
            .CommandText = "INSERT INTO Fornecedor " & _
            "(CodFornec, Empresa, HomePage, Natureza, Cidade, Estado, " & _
            "Pais, Prazo, FatMinimo, Faturamento, Moeda, Regime, " & _
            "FOB, CIF, Contato1, Funcao1, Telefone1, Ramal1, Celular1, " & _
            "Fax1, Email1, MSN1, Skype1, Portugues1, Contato2, Funcao2, Telefone2, " & _
            "Ramal2, Celular2, Fax2, Email2, MSN2, Skype2, Portugues2, Revisado) VALUES ('" & _
            txtCodFornec.Text & "','" & txtEmpresa.Text & "','" & _
            txtHomePage.Text & "','" & cmbNatureza.Text & "','" & _
            txtCidade.Text & "','" & txtEstado.Text & "','" & _
            cmbPais.Text & "','" & txtPrazo.Text & "','" & _
            txtFatMinimo.Text & "','" & cmbFaturamento.Text & "','" & _
            cmbMoeda.Text & "','" & vRegime & "','" & _
            vFOB & "','" & vCIF & "','" & _
            txtContato1.Text & "','" & txtFuncao1.Text & "','" & _
            txtTelefone1.Text & "','" & txtRamal1.Text & "','" & _
            txtCelular1.Text & "','" & txtFax1.Text & "','" & _
            txtEmail1.Text & "','" & txtMSN1.Text & "','" & _
            txtSkype1.Text & "','" & vPortugues1 & "','" & txtContato2.Text & "','" & _
            txtFuncao2.Text & "','" & txtTelefone2.Text & "','" & _
            txtRamal2.Text & "','" & txtCelular2.Text & "','" & _
            txtFax2.Text & "','" & txtEmail2.Text & "','" & _
            txtMSN2.Text & "','" & txtSkype2.Text & "','" & _
            vPortugues2 & "','" & vRevisado & "');"
        Else
            'Alteração:
            .CommandText = "UPDATE Fornecedor SET " & _
            "Empresa = '" & txtEmpresa.Text & "',HomePage = '" & txtHomePage.Text & "'," & _
            "Natureza = '" & cmbNatureza.Text & "',Cidade = '" & txtCidade.Text & "'," & _
            "Estado = '" & txtEstado.Text & "',Pais = '" & cmbPais.Text & "'," & _
            "Prazo = '" & txtPrazo.Text & "',FatMinimo = '" & txtFatMinimo.Text & "'," & _
            "Faturamento = '" & cmbFaturamento.Text & "',Moeda = '" & cmbMoeda.Text & "'," & _
            "Regime = '" & vRegime & "',FOB = '" & vFOB & "'," & _
            "CIF = '" & vCIF & "',Contato1 = '" & txtContato1.Text & "'," & _
            "Funcao1 = '" & txtFuncao1.Text & "',Telefone1 = '" & txtTelefone1.Text & "'," & _
            "Ramal1 = '" & txtRamal1.Text & "',Celular1 = '" & txtCelular1.Text & "'," & _
            "Fax1 = '" & txtFax1.Text & "',Email1 = '" & txtEmail1.Text & "'," & _
            "MSN1 = '" & txtMSN1.Text & "',Skype1 = '" & txtSkype1.Text & "'," & _
            "Portugues1 = '" & vPortugues1 & _
            "Contato2 = '" & txtContato2.Text & "',Funcao2 = '" & txtFuncao2.Text & "'," & _
            "Telefone2 = '" & txtTelefone2.Text & "',Ramal2 = '" & txtRamal2.Text & "'," & _
            "Celular2 = '" & txtCelular2.Text & "',Fax2 = '" & txtFax2.Text & "'," & _
            "Email2 = '" & txtEmail2.Text & "',MSN2 = '" & txtMSN2.Text & "'," & _
            "Skype2 = '" & txtSkype2.Text & "',Portugues2 = '" & vPortugues2 & "'," & _
            "',Revisado = '" & vRevisado & ";"
        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

Abs,

bordoni

Curitiba, PR

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

5 respostass a esta questão

Posts Recomendados

  • 0
estranho, qual a mensagem de erro?? diz q é muito extenso??

acho q eu já fiz strings maiores q essa e deu td certo.

Oi Kuroi. Desculpe a pergunta, mas como posso ver qual o erro? Sou um total iniciante, e minha única experiência anterior com programação foi um pouco de C na faculdade.

A minha desconfiança pelo tamanho da string é porque:

1 - Eu fiz uma versão menor, com menos campos, e funcionou;

2 - Na janela Locals, do VS, o CommandText mostra a string cortada bem na posição 256.

Abs,

bordoni.

Editado por bordoni
Link para o comentário
Compartilhar em outros sites

  • 0

você pode usar a janela do immediate para verificar o valor da sua string...

o que pode acontecer é que ou um campo está errado ou você esqueceu de alguma vírgula no meio( ou algo do tipo). Tenta ir tirando campo por campo para descobrir qual o erro que está dando...é um trabalho demorado mas deve ajudar...

Link para o comentário
Compartilhar em outros sites

  • 0
você pode usar a janela do immediate para verificar o valor da sua string...

o que pode acontecer é que ou um campo está errado ou você esqueceu de alguma vírgula no meio( ou algo do tipo). Tenta ir tirando campo por campo para descobrir qual o erro que está dando...é um trabalho demorado mas deve ajudar...

O erro é -2147217913 (80040e07)

Tipo de Dados Incompatível na expressão de critério.

Eu não sabia como ver o erro. Acho que agora já tenho uma pista do que possa ser. Parece mesmo que é algum campo definido de maneira errada.

Obrigado raphael_suporte e kuroi pela ajuda e paciência!

Abs,

Glaucio.

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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...