Pular para o conteúdo
Visualizando 1 post (de 1 do total)
  • Autor
    Posts
  • #100349
    Avatar de asgardasgard
    Participante

      bom dia.

      Estou usando o WEBUTIL_C_API, para executar funções de uma DLL de emissor de cupom fiscal e estou tento alguns problemas.

      problemas:
      1) executa a função e fecha a aplicação. O código que faz isso está abaixo:
      FUNCTION FUN_REDUCAO_Z (impressora varchar2) RETURN pls_integer IS
      DLL_FUNCAO webutil_c_api.FunctionHandle;
      lv_plist webutil_c_api.ParameterList;
      param1 webutil_c_api.ParameterHandle;
      ret PLS_INTEGER:=0;
      BEGIN

      IF IMPRESSORA =’BEMATECH’ THEN
      BEGIN

      DLL_FUNCAO := WEBUTIL_C_API.register_function(RTRIM(LTRIM(:PARAMETER.P_CF_DIRETORIO))||’BemaFI32.dll’,’Bematech_FI_ReducaoZ’);

      IF NOT WEBUTIL_C_API.ID_NULL(lv_plist) THEN
      WEBUTIL_C_API.Destroy_Parameter_List(lv_plist);
      END IF;

      lv_plist := webutil_c_api.create_parameter_list;

      ret := WEBUTIL_C_API.INVOKE_INT(DLL_FUNCAO, lv_plist);

      WEBUTIL_C_API.Destroy_Parameter_List(lv_plist);

      —SYNCHRONIZE;
      RETURN ret;
      EXCEPTION
      WHEN OTHERS THEN
      MESSAGE(‘ERRO REDUCAO Z:’||SQLERRM);
      MESSAGE(‘ERRO REDUCAO Z:’||SQLERRM);
      CLEAR_MESSAGE;
      END;
      end if;
      END;

      2) não estou conseguindo receber o retorno de uma variavel além de que ao executar a função, fecha a aplicação também. O código está abaixo:

      FUNCTION fun_NumeroSerie_web ( NumeroSerie IN out VARCHAR2 , impressora in varchar2) RETURN PLS_INTEGER IS
      DLL_FUNCAO webutil_c_api.FunctionHandle;
      lv_plist webutil_c_api.ParameterList;
      param1 webutil_c_api.ParameterHandle;
      ret PLS_INTEGER:=0;
      BEGIN
      NumeroSerie:=”;
      /*FOR I IN 1..15 LOOP
      NumeroSerie := NumeroSerie||’ ‘;
      END LOOP;*/

      IF IMPRESSORA =’BEMATECH’ THEN
      BEGIN

      DLL_FUNCAO := WEBUTIL_C_API.register_function(RTRIM(LTRIM(:PARAMETER.P_CF_DIRETORIO))||’BemaFI32.dll’,’Bematech_FI_NumeroSerie’);

      IF NOT WEBUTIL_C_API.ID_NULL(lv_plist) THEN
      WEBUTIL_C_API.Destroy_Parameter_List(lv_plist);
      END IF;

      lv_plist := webutil_c_api.create_parameter_list;
      param1 := webutil_c_api.add_parameter(lv_plist,webutil_c_api.c_char_ptr,webutil_c_api.param_out,NumeroSerie,length(NumeroSerie));

      ret := WEBUTIL_C_API.INVOKE_INT(DLL_FUNCAO, lv_plist);

      NumeroSerie := webutil_c_api.Get_Parameter_String(lv_plist, param1);

      WEBUTIL_C_API.Destroy_Parameter_List(lv_plist);
      WEBUTIL_C_API.Deregister_Function(DLL_FUNCAO);

      SYNCHRONIZE;

      RETURN ret;
      EXCEPTION
      WHEN OTHERS THEN
      MESSAGE(‘ERRO :’||SQLERRM);
      MESSAGE(‘ERRO :’||SQLERRM);
      CLEAR_MESSAGE;
      END;
      end if;
      END;

      Os códigos possuem alguma coisa errada???
      Estou executando estas funções em cliente web.

    Visualizando 1 post (de 1 do total)
    • Você deve fazer login para responder a este tópico.
    plugins premium WordPress