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

Overflow


fertel

Pergunta

Galera, ajuda aé...

Estou tentando gravar no banco de dados campos de texto e números, etc.

Mas, todas as váriáveis vêm de Session. O erro que sempre dá: Overflow.

Provavelmente porque estou tentando gravar uma string num campo numérico. Se eu tento antes converter Cint(Session("VALOR")) Não adianta dá Overflow.

E agora? Se eu não posso nem converter em Int, como vou trabalhar com esses números. Ah, não posso usar Request.Form, pois o valor já vem de outras páginas, por isso preciso do Session...

Link para o comentário
Compartilhar em outros sites

21 respostass a esta questão

Posts Recomendados

  • 0

você usa .session, tudo bem, a ideia de uma session e um request é a mesma

mas, se importa em postar toda a mensagem de erro?

e o código da linha do erro?

Link para o comentário
Compartilhar em outros sites

  • 0

Aí outro problema Dark0:

Na linha do erro estão todos os campos, e são uns 30 campos. Todos como session; Pela linha fica difícil saber onde exatamente é o erro, pois na linha estão todos os valores ao serem adicionados ao banco.

O que significa realmente então "Overflow"?

Não tem haver com int?

Link para o comentário
Compartilhar em outros sites

  • 0

Olha um trecho aí:

ComandoSQL = "INSERT INTO PRODUTOS (USUARIO_ID, CAT, SUB_CAT1, SUB_CAT2, DESTAQUE1, DESTAQUE2, DESTAQUE3, DESTAQUE4, DESTAQUE5, DESTAQUE6)"

    ComandoSQL = ComandoSQL & " VALUES ("

    ComandoSQL = ComandoSQL & "'" & Session("USUARIO_ID") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("CAT") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("SUB_CAT1") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("SUB_CAT2") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("DESTAQUE1") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("DESTAQUE2") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("DESTAQUE3") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("DESTAQUE4") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("DESTAQUE5") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("DESTAQUE6") & "')"

    Set bd = Conexao.Execute(ComandoSQL)

Campos como USUARIO_ID é numérico, DESTAQUE1 é texto

Link para o comentário
Compartilhar em outros sites

  • 0

e a descrição certinha do erro?

Link para o comentário
Compartilhar em outros sites

  • 0

Olha só:

Se eu postar como você está vendo aí aparece isso

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E57)

[Microsoft][Driver ODBC para Microsoft Access]Valor numérico fora do intervalo (null)

submit.asp, line 87

linha 87 é esta:

ComandoSQL = "INSERT INTO PRODUTOS (USUARIO_ID, CAT, SUB_CAT1, SUB_CAT2, DESTAQUE1, DESTAQUE2, DESTAQUE3, DESTAQUE4, DESTAQUE5, DESTAQUE6)"

por isso não dá pra saber em qual campo ocorre. Agora se eu tentar converter os campos que deveriam ser numéricos com Cint aprece Overflow linha 87.

Acho que vou ter que converter todos os campos do banco em texto pra fujir deste erro né?

Link para o comentário
Compartilhar em outros sites

  • 0

huhu

acho que captei

veja em vermelho:

ComandoSQL = "INSERT INTO PRODUTOS (USUARIO_ID, CAT, SUB_CAT1, SUB_CAT2, DESTAQUE1, DESTAQUE2, DESTAQUE3, DESTAQUE4, DESTAQUE5, DESTAQUE6)"

    ComandoSQL = ComandoSQL & " VALUES ("

    ComandoSQL = ComandoSQL & "" & Session("USUARIO_ID") & ","

    ComandoSQL = ComandoSQL & "'" & Session("CAT") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("SUB_CAT1") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("SUB_CAT2") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("DESTAQUE1") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("DESTAQUE2") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("DESTAQUE3") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("DESTAQUE4") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("DESTAQUE5") & "',"

    ComandoSQL = ComandoSQL & "'" & Session("DESTAQUE6") & "')"

    Set bd = Conexao.Execute(ComandoSQL)

o que eu fiz?

tirei a aspa simples daquela linha, pois é NUMERO!

Certo?

Roda aí..

Link para o comentário
Compartilhar em outros sites

  • 0

depois posta aí o resultado

t+

PS: bareta, postamos juntos, né?

hehe

Link para o comentário
Compartilhar em outros sites

  • 0

depende..

no banco tá setado como que tipo?

você só coloca as aspas se for string.. (texto e memorando)

o resto não vai aspa..

Link para o comentário
Compartilhar em outros sites

  • 0

Ai, ai, ai...

olha só:

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe na instrução INSERT INTO.

submit.asp, line 87

Já verifiquei todos os campos do banco, está tudo de acordo, números, textos, memorando.

O que pode estar errado afinal?

Link para o comentário
Compartilhar em outros sites

  • 0

depende..

no banco tá setado como que tipo?

você só coloca as aspas se for string.. (texto e memorando)

o resto não vai aspa..

data/hota também é texto

pior que postamos....

cara da um

response.write comando sql

apaga a execução dela.... e veja se tatudo certo como tem que ser....se você não parar e analisar esses dados seus ai brother... desde o nome dos campos no form... acho muito dificil de você conseguir perguntando aqui.....

você também pode ir almentando os campos gradativamente..... desative o teste de campos em branco no asp do seu codigo(se tiver algun) e vá fazendo a sql campo por campo.... coloca um campo salva e da um f5 na pagina... se inserir beleza... se não você já acha o campo que ta dando erro...

entendeu!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

fertel, faz uma coisa totalmente louca!

Muda o nome do campo CAT, no seu banco de dados para CAT1, ou qualquer outra coisa, e depois muda no codigo e testa.

bareta, testa aí o que acontece se você enviar valor para campo data/hora usando a aspa simples..

faz tempo que não uso, mas pelo que lembro, na ultima vez que usei, ele não aceitava aspa..

Link para o comentário
Compartilhar em outros sites

  • 0

olha, se você enviar junto à data o caracter #, que é o formato certinho da data, se não me engano, você não usa as aspas simples não..

você envia pro banco como se fosse numero

eu usei isso uma vez, mas faz tempo, e lembro que só consegui fazer funcionar, colocando # junto à string da data

Link para o comentário
Compartilhar em outros sites

  • 0

fertel,

Overflow é um estouro de memória...é quando uma variável ultrapassa a quantidade de bytes atribuídas pra ela.

Nesse seu caso eu acho q podem ser 2 coisas:

1 - O valor numérico é muito grande, então tenta:

cDbl(SESSION("USUARIO_ID"))
2 - Pode ser q esta session esteja com valor nulo, então faça assim:
cInt("0"&SESSION("USUARIO_ID"))

Vê se te ajuda...

Link para o comentário
Compartilhar em outros sites

  • 0

É isso aí Felipe. Eu voltei aqui pra dizer que tinha descoberto e vi que você tb matou a charada. Um dos campos que eu estava tentando gravar que é uma chave, tinha 12 caracteres numéricos. Número muito grande.

Já resolvi passando os campos para double.

hã, obrigado, agora já sei o que significa realmente este overflow e quando se repetir já sei onde corrigir.

Ah e obrigado ao Dark0 e Ao Bareta pela informação das aspas simples que considerei muito útil.

Valeu galera

laugh.gif

Link para o comentário
Compartilhar em outros sites

  • 0

hehe

que coisa não?

que bom que resolveu o problema então..

posso fechar o tópico?

Link para o comentário
Compartilhar em outros sites

  • 0

ok chefe

mandou ta mandado, hauhahua

to fechando

T+

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...