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

Erro ao ler campo memo no access


Junior Ari

Pergunta

será que é um bug ou é puramente bisonhice minha...

fiz um cadastro simples no Visual Basic 6 com banco de dados access 2003, e tem um campo memo, porem ele não é obrigatorio...

quando eu executo o programa com F8, ao tentar consultar o registro e quando ele lê esse campo (memorando) às vezes ele lê... e às vezes ele considera como Null, então depois de muita pesquisa consegui resolver assim:

antes era:

txtObs = rs!observacao --> esse dava o erro <Invalid Use of Null>

depois eu mudei para:

txtObs = rs!observacao & ""

é ae que acontece o bug...

tentei fazer no passo a passo (CTRL + F8) e vendo os campos um por um (com o F8) notei o seguinte: quando está lendo os outros campos ele vê normalmente, quando ponho o mouse a primeira vez em cima do campo correspondente ao campo memo a "caixinha amarela" (é assim que eu a chamo... rsrs :rolleyes:) pega normal o valor do campo dentro do banco de dados, porem ao passar para ler outro registro, com F8, e tentar ver de novo o campo memo a caixinha amarela dá o valor do campo como Null e, obviamente, não preenche meu textbox, mesmo sabendo que o campo não está vazio...

o interessante é o seguinte: quando tento cadastrar uma pessoa, no formulario de cadastro, que já existe no banco de dados ele le todos os campos e coloca os valores do cadastro dentro de cada textbox correspondente, e dessa forma ele preenche meu texbox com o campo memo. Nesse formulário ele preenche normal, porém tem outro formulario para consulta que quando eu consulto os clientes cadastrados e ao preencher os textbox com os valores do banco ele "nunca" preenche meu textbox com o campo memo correspondente...

tentei explicar o maximo possivel o problema... se alguém souber como corrigir esse problema.... vou ficar devendo o resto da vida... hehe :huh:

se esse erro não acontece com voces postem ae pelamordedeus.. tow desemperado.... :(

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Sinceramente dei uma travadinha ao ler, não entendi tão bem.. Mas vamos lá garoto!

Quando você está chamando os dados do campo 'memo' para os campos de texto do VB, ele irá tentar chamar também os dados que forem NULL (sem dados).

Você pode fazer um "IF" antes de chamar o rs!observacao ex:

If !observacao = "" Then

Else

txtObs.Text = !observacao

End If

Mais sinceramente, eu não entendi sua pergunta... Ai em cima, só dei uma rapidinha que talvez lhe dê uma idéia de como arrumar seu erro. Caso contrário da uma explicada melhor..

* Mas tipo, não da bug não.. Ele tem que ler sempre, nulo ou não. Seu Select está certinho? Faz uns testes separados só com este campo memo em outro projeto do vb..

Abração

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

  • 0
Sinceramente dei uma travadinha ao ler, não entendi tão bem.. Mas vamos lá garoto!

Quando você está chamando os dados do campo 'memo' para os campos de texto do VB, ele irá tentar chamar também os dados que forem NULL (sem dados).

Você pode fazer um "IF" antes de chamar o rs!observacao ex:

If !observacao = "" Then

Else

txtObs.Text = !observacao

End If

Mais sinceramente, eu não entendi sua pergunta... Ai em cima, só dei uma rapidinha que talvez lhe dê uma idéia de como arrumar seu erro. Caso contrário da uma explicada melhor..

* Mas tipo, não da bug não.. Ele tem que ler sempre, nulo ou não. Seu Select está certinho? Faz uns testes separados só com este campo memo em outro projeto do vb..

Abração

Pinguimbera,

O que acontece é o seguinte:

quando vou debugar o programa eu executo linha por linha pra ver cada valor dos campos no passo a passo. Ao passar pela linha set rs = DB.execute(sSQL), ele monta na variavel rs os valores que eu passo em sSQL, correto?! então eu peço a variavel rs!paciente e ela me mostra o nome do paciente ao qual está associado em meu Banco de dados. Vou montando dentro dos TextBox os valores de cada campo correspondente na tabela: rs!paciente, rs!endereco, rs!nascimento, etc... nesses campos tudo funciona normal, porém ao analisar o campo (que no BD é memorando) rs!obs, passando o mouse em cima dele, (no modo debug) no primeiro momento ele mostra o valor... até ae tudo bem, mais se eu continuar olhando os outros valores e retornar novamente ao campo rs!obs ele já vai aparecer que o campo é Null... sendo que instantes antes ele me mostrou o valor do campo na tabela.... é ae que me confronto com o problema, por isso eu digo lá em cima que as vezes ele me dá o resultado e às vezes não dá, entendeu????

veja essas figuras ae:

bug_vb1.JPG

bug_vb2.JPG

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

  • 0

Junior,

Mas o que acontece no formulário? Ele aparece ou não...?

Outra coisa que pode fazer é não permitir que um registro seja inserido com este campo nulo...

Experimente fazer uma função mais ou menos assim

If Me.Obs=empty or me.obs="" then

Rs!Obs="Sem Ocorrências"

Else

Rs!Obs=me.Obs

End If

Retorne pra dizer que bicho que dá?

Att:

Felipe Ost

"Se fosse fácil achar o caminho das pedras, tantas pedras no caminho não seriam ruins"

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Junior Ari

RESOLVIDO!!!!!!!!

cara, uma coisa muito simples, quer dizer, simples não... apenas um "erro de cálculo" hehe :lol:

afinal de contas eu nunca fiz um curso de programação.. tudo q sei foi aprendido sozinho mesmo buscando apostilas e exemplos em CD´s de banca e na internet!!

mas vamos a solução:

antes tava assim quando chamava a tabela do banco:

Set rsPaciente = DB.Execute(sSQL)

mudei para assim:

rsPaciente.Open sSQL, DB, adOpenStatic, adLockReadOnly

e deu certo!!!!! agora não dá mais o erro Null que dava!!!

se alguém puder me explicar a diferenca das suas chamadas, eu agradeceria o resto da vida...... :blush: :P

valeu ae a galera q tentou me ajudar... valeu mesmo!!!

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...