none
object required RRS feed

  • Pergunta

  • galera, tenho um sistema faz acesso a dados por componentes. qdo salvo no banco dou um submit na pag e funciona blz a acesso a base, mas na segunda vez q vou clicar no botao salvar, ao dar o novo submit na pag da mensagem de erro object required, ou seja, meu ojeto de acesso ao componente esta nulo ou nao foi encontrado (x = objKBC071.Gravar()), q no caso é o "objKBC071", mas da primeira vez q cliquei no botao da certo, ai eu tenhoq reiniciar a maq, ai ele funciona grava a primeira vez e ja na segunda da object required de novo, alguem sabe oq é faz perder a referencia do objeto?
    quarta-feira, 20 de junho de 2007 18:51

Respostas

  • Oi !

     

    Createobject dentro de um loop gera muita perda de performance... mas não é esse o problema não...

     

    Se o createobject é feito corretamente, então o problema pode estar dentro do componente. Os métodos dele podem estar confiando em alguma variável definida a nível de classe e eventualmente ela não estará lá em uma 2a execução.

     

    []'s

     

    quarta-feira, 20 de junho de 2007 20:52

Todas as Respostas

  • Oi !

     

    Você tem que fazer o createobject neste objeto. Não só na primeira vez que o chama, mas a cada vez que repetir a operação você precisa estar fazendo o createobject.

     

    []'s

     

    quarta-feira, 20 de junho de 2007 20:02
  • eu ja executo o comando na linha anterior de meu codigo,
    Set objKBC071 = Server.CreateObject("kbc071.BO_COBBDEPMC")
    Acho q deve ser outra coisa, vc tem +  outra opiniao a respeito? obrigado.
    (nao sei se isso é relevante, mas isso esta dentro de um loop q gera uma tabela no body da pag...)
    quarta-feira, 20 de junho de 2007 20:26
  • Oi !

     

    Createobject dentro de um loop gera muita perda de performance... mas não é esse o problema não...

     

    Se o createobject é feito corretamente, então o problema pode estar dentro do componente. Os métodos dele podem estar confiando em alguma variável definida a nível de classe e eventualmente ela não estará lá em uma 2a execução.

     

    []'s

     

    quarta-feira, 20 de junho de 2007 20:52
  • o componente esta funciona corretamente, ja q ele funciona uma vez., existe a possibilidade de der time out e entao perder a referencia do objeto?
    quinta-feira, 21 de junho de 2007 11:52
  • Oi !

     

    Não, não nesse sentido...

     

    É dificil dizer algo sem ver o código do método que você está chamando...

     

    []'s

     

     

    quinta-feira, 21 de junho de 2007 12:10
  • Cara, deixa eu te perguntar uma(duas) coisa(s) ...

    Seu método Gravar retorna alguma coisa ?? É uma Function ou uma Sub ??

    Do jeito que você descreveu que trata: x = objKBC071.Gravar(); só vai funcionar se o método que você está chamando retornar alguma coisa (se for uma function), nem que seja true ou false ...

    Se for uma Sub, menos trampo, você só precisa trocar o x = objXPTO.Gravar()  por Call objXPTO.Gravar(), e walahhh

    Porém, se retornar algo (é uma function no componente), é possível que ele não esteja retornando o resultado esperado, ou não esteja retornando nada ..

    Geralmente quando não retorna nada é porque existe um erro no código do método ...

    Já vi alguns sistemas com On Error Resume Next em vários lugares do código (páginas e metodos) ...

    [Conselho  :] Use-os apenas se tiver um tratamento eficiente de erros .. Ele dá margem a dificuldades de encontrar o problema se o tratamento de erros não for bom.

    Ahh .. acredito, pelo que você descreveu,  que você possa dar o CreateObject fora do Loop ...

    Melhora a performance, como disse o Dennes ...

    Você usa o mesmo objeto criado para chamar quantas vezes for necessário seu método do componente, se for o caso, altere as propriedades (do método [se houver ...]) dentro do loop antes de chamar o método gravar ...

    Se você estiver tentando inserir valores iguais em uma tabela que tenha integridade referencial (PK), também pode ocorrer esse erro .. - Digo isso porque é um loop chamando um método Gravar() ....

    Bom, acho que eu falei dos que eu já vi quando aconteceram comigo .. Verifique esses pontos .. e espero ter ajudado ..

    Talvez se o tratamento de erros interno do IIS fosse mais específico, não teríamos o mesmo problema com tantas variáveis de solução, mas vários problemas diferentes podem gerar o mesmo erro no ASP.

    Se encontrar a solução, dê um post de retorno ok ??

    Falow ....

    sábado, 30 de junho de 2007 08:48