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

Erro Ao Inserir Dados No Bd


Andersonjb

Pergunta

Pessoal, sei que eu to encheeeeendo o saco, mais é que linguagem nova, pra aprender no inicio, é uma desgraça, mais vamos lá. Olhem esse código, ele abre um txt, pega certos dados e insere no banco.

Dim nome As String
Dim endereco As String
Dim bairro As String

Dim insere As String
Dim com_insere As New ADODB.Recordset
insere = "INSERT INTO Funcionários (Nome, Endereço, Bairro ) VALUES ('" & nome & "', '" & endereco & "', '" & bairro & "');"


arquivo = FreeFile
Open "c:\teste.txt" For Input As arquivo
Do While Not EOF(arquivo)
    Line Input #arquivo, Linha
    nome = Mid(Linha, 1, 3)
    endereco = Mid(Linha, 2, 3)
    bairro = Mid(Linha, 3, 3)
    Set com_insere = conexao.Execute(insere)
Loop
Close #arquivo

MsgBox ("inseriu")
Mais ele dá um erro nessa linha:
    Set com_insere = conexao.Execute(insere)

Olha o Erro:

O campo Nome não pode ser uma sequência de caracteres de comprimento nulo.

O que isso significa? A variavel não fica vazia e ele dá esse erro.

alguém sabe porquê?

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Realmente, nome (assim como os outros campos) é vazio quando você faz:

insere = "INSERT INTO Funcionários (Nome, Endereço, Bairro ) VALUES ('" & nome & "', '" & endereco & "', '" & bairro & "');"
Isso aí em cima é uma string e não vai ter suas variáveis alteradas em momento algum. Faça o teste mostrando ela na tela, dentro do loop:
msgbox insere
A criação desta string deveria estar dentro do loop:
arquivo = FreeFile()
Open "c:\teste.txt" For Input As arquivo
Do While Not EOF(arquivo)
    Line Input #arquivo, Linha
    nome = Mid(Linha, 1, 3)
    endereco = Mid(Linha, 2, 3)
    bairro = Mid(Linha, 3, 3)

    insere = "INSERT INTO Funcionários (Nome, Endereço, Bairro ) VALUES ('" & nome & "', '" & endereco & "', '" & bairro & "');"

    Set com_insere = conexao.Execute(insere)
Loop

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Deixa eu vê se eu entendi então: eu tenho que atribuir a instrução sql depois que eu atribuir os valores á variavel, certo?

E olha só, eu coloquei porque falaram para mim que tem que colocar, mais como eu ainda não manjo muito no 6, o que significa esse operador "Set"? Por exemplo:

Set com_insere = conexao.Execute(insere)

Porque o Set? Não é só atribuir o valor á variavel?

Link para o comentário
Compartilhar em outros sites

  • 0

Set é usado para atribuir objetos que não fazem parte da biblioteca padrão do VB6. No VB.NET não existe essa distinção, por isso você pode estranhar. No caso acima, você está atribuindo um ADODB.Recordset (que não faz parte da biblioteca padrão).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Gente, também to com duvida neste cas.

No meu caso eu preciso de inseri de tempo em tempo os dados de um arquivo txt para dentro de uma tabela do access.

to apanhando muito....

aguem pode me ajudar.

abracos

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