Jump to content
Fórum Script Brasil
  • 0

Erro Ao Inserir Dados No Bd


Andersonjb
 Share

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • 0
Guest Visitante

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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649k
×
×
  • Create New...