Erro do tipo: Object variable or With block variable not set ao chamar método COM

Respondido Erro do tipo: Object variable or With block variable not set ao chamar método COM

  • segunda-feira, 8 de junho de 2009 14:41
     
      Contém Código

    Em meu projeto do tipo Class Library, usando C#, 2.0 estou tentando fazer a chamada de um método exposto por uma dll do VB 6.0, e estou recendo o seguinte erro : "Object variable or With block variable not set", porém ao fazer a chamada deste mesmo método em uma página ASP.NET ele funciona corretamente alguém sabe me explicar o porque deste erro? E propor uma solução pra usa-lo na minha Class Library?

    Aqui segue o trecho com erro:

    object msg = null;
                ADODB.Recordset rec = new ADODB.Recordset();
                Object obj = null;
                obj = (Object)rec;
    
    
                MinhaDLLCOM.UsuarioClass usuario = new MinhaDLLCOM.UsuarioClass();
                int retorno = usuario.Gets("104060", string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, ref obj, string.Empty, ref msg, string.Empty, string.Empty);
                rec = (ADODB.Recordset)obj;
                if (!rec.EOF)
                {}
    o erro ocorre na linha de chamada do método Gets.

    Obrigado.
    Frederico Miranda

Todas as Respostas

  • sexta-feira, 16 de setembro de 2011 11:04
     
     Respondido Contém Código

    Frederico,

     

    Acredito que o problema ocorre pela forma que você esta instanciando o componente, uma dll VB6 deve ser instanciada da forma abaixo:

     

    Você vai ter que referenciar sua DLL COM primeiro Project->Add Reference).

    using  MinhaDLLCOM;

    MinhaDLLCOM.UsuarioClas usuario = null; 

    usuario = (MinhaDLLCOM.UsuarioClas)Activator.CreateInstance(Type.GetTypeFromProgID("MinhaDLLCOM.UsuarioClass"));

     int retorno = usuario.Gets("104060", string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, ref obj, string.Empty, ref msg, string.Empty, string.Empty);
    


    • Editado AndesBH sexta-feira, 16 de setembro de 2011 11:15
    • Sugerido como Resposta AndesBH sexta-feira, 16 de setembro de 2011 23:41
    • Marcado como Resposta Harley AraujoOwner quinta-feira, 29 de dezembro de 2011 12:15
    •