Tempo aproximado para leitura: 00:03:00 min
Dúvida
Ao entrar no modulo "Gerenciados de OS" => Consultas = Exportação de Ordens de Serviço para Excel o Sistema dá o erro de OLE Error 800A03C, sendo que o servidor existe Excel instalado normal.
Ambiente
TOTVS Agro - TOTVS Agro - Bioenergia - Controle Manutenção Industrial - MI – Versão 12.1.2312
Solução
Para solucionar essa ocorrência, realize os seguintes passos:
1. Execute o Select abaixo, modificando as datas do Campo ord_dtcomunica e ord_dtgeracaoos, que foram informadas na geração da consulta;
SELECT
TO_DATE(o.ORD_DTGERACAOOS) AS Geracao,
o.emp_codemp AS Empresa,
o.cal_safra AS Safra,
o.ord_codos AS OS,
o.ord_descri AS Descricao_OS,
NVL(se.ser_itord, '1') AS cod_servico,
NVL(se.ser_dscsuc, o.ord_descri) AS Descricao_serv,
TRUNC(o.ord_dtcomunica) AS Data_Comunic,
SUBSTR(o.ord_hrcomunica, 1, 2) || ':' || SUBSTR(o.ord_hrcomunica, 3, 2) AS Hora_Comunic,
o.set_codset AS Cod_Setor,
s.set_desset AS Desc_Setor,
o.are_codigo AS Cod_Area,
a.are_descri AS Desc_Area,
c.sub_codigo AS Cod_SubC_Custo,
c.sub_descri AS Desc_SubC_Custo,
o.id_conta AS Cod_Conta_Gerenc,
t.con_descri AS Desc_Conta_Gerenc,
DECODE(t.con_maninv, 'I', 'INVESTIMENTO', 'MANUTENÇÃO') AS Tipo_Conta_Gerenc,
m.mis_codigo AS MIS,
m.mis_descri AS Desc_MIS,
e.eqp_codeqp AS Equipamento,
e.eqp_descri AS Desc_Equipamento,
DECODE(o.ord_tipo,
'M', 'MANUT. CORRETIVA',
'R', 'REG. SERVIÇO',
'E', 'ENTRESSAFRA',
'X', 'SERV. EXTERNO',
'P', 'PREVENTIVA/PREDITIVA') AS Tipo_OS,
o.tip_codigo AS Cod_Tipo_Ativi,
tp.tip_descri AS Desc_Tipo_Ativi,
o.mod_codmod AS Cod_Modalidade,
md.mod_desmod AS Desc_Modalidade,
o.id_contrato AS Cod_Contrato,
ct.con_descricao AS Desc_Contrato,
o.cau_codigo,
mcpcausa.cau_descri AS CausaDescri,
o.ord_desccausa AS Desc_Causa,
o.def_codigo AS Cod_Defeito,
df.def_descricao AS Desc_Defeito,
o.mod_codmoddef AS Cod_Modal_Defeito,
mf.mod_desmodi AS Desc_Modal_Defeito,
f.fun_cracha AS Cracha,
f.fun_nome AS Nome_Funci,
o.ord_obs AS Observ,
fHomemHoraPrevOs(o.emp_codemp, o.ord_codos) AS nHomemHoraPrevisto,
fMoRealOs(o.emp_codemp, o.ord_codos) AS nHomemHoraReal,
fCustoMoProp(o.emp_codemp, o.ord_codos) AS nCustoMObraPropria,
fCustoMoTerc(o.emp_codemp, o.ord_codos) AS nCustoMObraTerceiro,
fCustoRepMaterOs(o.emp_codemp, o.ord_codos) AS nCustoMaterial,
o.ord_status,
CASE
WHEN o.ord_status = '0' THEN '0 - Em andamento'
WHEN o.ord_status = '1' THEN '1 - Programada'
WHEN o.ord_status = '2' THEN '2 - Não Programada'
WHEN o.ord_status = '3' THEN '3 - Interrompida'
WHEN o.ord_status = '4' THEN '4 - Encerrada'
WHEN o.ord_status = '5' THEN '5 - Cancelada'
END AS status,
DECODE('C', 'C', cc.con_tag, sc.sub_tag) AS TAG,
TRUNC(o.ord_dtencerramento) AS Encerramento,
se.equ_codigo,
se.equ_descri,
DECODE(se.id_seros, NULL, 0, fhorcent(se.ser_durprev) * se.ser_numpessoas) AS hh,
DECODE(se.id_seros, NULL, 0, fmorealservico(se.id_seros)) AS MORealServ,
TRUNC(o.ord_dtinicio) AS Data_Inicio,
SUBSTR(o.ord_hrini, 1, 2) || ':' || SUBSTR(o.ord_hrini, 3, 2) AS Hora_Inicio,
TRUNC(o.ord_dtfim) AS Data_Fim,
SUBSTR(o.ord_hrfim, 1, 2) || ':' || SUBSTR(o.ord_hrfim, 3, 2) AS Hora_Fim,
CASE se.ser_status
WHEN '0' THEN '0 - Andamento'
WHEN '1' THEN '1 - Não Iniciado'
WHEN '2' THEN '2 - Programado'
WHEN '3' THEN '3 - Interrompido'
WHEN '4' THEN '4 - Encerrado'
WHEN '5' THEN '5 - Cancelado'
END AS ServStatus,
se.ser_dtdesejada,
se.ser_priori,
DECODE(se.ser_preprogramado, '1', 'Sim', 'Não') AS ser_preprogramado
FROM
mcpordem o
JOIN mcparea a ON o.set_codset = a.set_codset AND o.are_codigo = a.are_codigo
LEFT JOIN mcpsetor s ON a.set_codset = s.set_codset
LEFT JOIN mcpsubcusto c ON o.id_scusto = c.id_scusto
LEFT JOIN mcpconta t ON o.emp_codemp = t.emp_codemp AND o.cal_safra = t.cal_safra AND o.id_conta = t.id_conta
LEFT JOIN mcpmis m ON o.id_mis = m.id_mis
LEFT JOIN mcpeqpto e ON o.id_eqpto = e.id_eqpto
LEFT JOIN mcptipoativi tp ON o.tip_codigo = tp.tip_codigo
LEFT JOIN mcpmodal md ON o.mod_codmod = md.mod_codmod
LEFT JOIN mcpcontrato ct ON o.id_contrato = ct.id_contrato
LEFT JOIN mcpdefeito df ON o.def_codigo = df.def_codigo
LEFT JOIN mcpmodaldef mf ON o.mod_codmoddef = mf.mod_codmoddef
LEFT JOIN mcpfunci f ON o.id_funci = f.id_funci
LEFT JOIN mcpconjunto cc ON o.id_conju = cc.id_conju
LEFT JOIN mcpsubconjunto sc ON o.id_conju = sc.id_conju AND o.id_subconju = sc.id_subconju
LEFT JOIN mcpcausa ON o.cau_codigo = mcpcausa.cau_codigo
LEFT JOIN (
SELECT
ser.*,
eq.equ_codigo,
eq.equ_descri
FROM
mcpseord ser
JOIN mcpequipe eq ON ser.id_equipe = eq.id_equipe
) se ON o.emp_codemp = se.emp_codemp AND o.ord_codos = se.ord_codos
WHERE
o.emp_codemp = '1'
AND o.ord_tipo != 'P'
AND o.mod_codmod = 'FD'
AND TRUNC(o.ord_dtcomunica) >= TO_DATE('05/11/2024','DD/MM/YYYY')
AND TRUNC(o.ord_dtcomunica) <= TO_DATE('20/11/2024','DD/MM/YYYY')
ORDER BY
TO_DATE(Geracao);
2. Exporte para Excel e localize o campo DATA_INICIO e DATA_FIM avalie se contem registro com as informações 00/00/0000;
3. Execute essa consulta abaixo na tabela MCPORDEM e avaliei os resultados com as informações 00/00/0000 e realizei os devidos ajustes.
SELECT
ORD_CODOS,
ORD_DTGERACAOOS,
ORD_DTEXECPRP,
ORD_DTINICIO,
ORD_DTFIM,
ORD_DTCOMUNICA,
ORD_DTDESEJSOL,
ORD_DTENCERRAMENTO
FROM
MCPORDEM
WHERE
TO_CHAR(ORD_DTGERACAOOS) = '00/00/0000'
OR TO_CHAR(ORD_DTEXECPRP) = '00/00/0000'
OR TO_CHAR(ORD_DTINICIO) = '00/00/0000'
OR TO_CHAR(ORD_DTFIM) = '00/00/0000'
OR TO_CHAR(ORD_DTCOMUNICA) = '00/00/0000'
OR TO_CHAR(ORD_DTDESEJSOL) = '00/00/0000'
OR TO_CHAR(ORD_DTENCERRAMENTO) = '00/00/0000';
0 Comentários