{"id":17923,"date":"2026-08-07T10:21:50","date_gmt":"2026-08-07T13:21:50","guid":{"rendered":"https:\/\/kb.elipse.com.br\/?p=17923"},"modified":"2026-08-07T10:21:50","modified_gmt":"2026-08-07T13:21:50","slug":"deteccao-de-falha-na-gravacao-do-historico-hist","status":"publish","type":"post","link":"https:\/\/kb.elipse.com.br\/en\/deteccao-de-falha-na-gravacao-do-historico-hist\/","title":{"rendered":"Detec\u00e7\u00e3o de falha na grava\u00e7\u00e3o do Hist\u00f3rico (Hist)."},"content":{"rendered":"<div class=\"topband\">\n<div class=\"topband-inner\">\n<h2 class=\"meta\"><span class=\"num\">1.<\/span> Introdu\u00e7\u00e3o<\/h2>\n<\/div>\n<\/div>\n<div class=\"wrap\">\n<section id=\"introducao\">Uma d\u00favida recorrente ao gravar dados no objeto Hist\u00f3rico (<code>Hist<\/code>) do E3 \u00e9 como reagir quando a grava\u00e7\u00e3o falha \u2014 por exemplo, disparar um alarme se um registro n\u00e3o chegar ao banco de dados. A tentativa natural \u00e9 olhar o <strong>valor de retorno do m\u00e9todo <code>WriteRecord()<\/code><\/strong>, esperando um c\u00f3digo de sucesso ou de erro.O problema \u00e9 que <code>WriteRecord()<\/code> <strong>n\u00e3o retorna um valor que indique sucesso ou falha na grava\u00e7\u00e3o<\/strong>: ele sempre devolve <code>0<\/code>, independentemente do resultado. Portanto, n\u00e3o existe um c\u00f3digo de status a ser verificado logo ap\u00f3s a chamada.Este artigo explica por que isso acontece \u2014 o Hist\u00f3rico grava por meio de um <strong>buffer interno<\/strong> \u2014 e apresenta as estrat\u00e9gias recomendadas para <strong>detectar uma falha de grava\u00e7\u00e3o<\/strong> e acionar uma l\u00f3gica de alarme.<\/p>\n<\/section>\n<section id=\"retorno-zero\">\n<h2><span class=\"num\">2.<\/span> Por que o <code>WriteRecord()<\/code> sempre retorna 0<\/h2>\n<p>O m\u00e9todo <code>WriteRecord()<\/code> do objeto Hist\u00f3rico grava um registro <strong>imediatamente<\/strong> (mesmo quando o <code>ScanTime<\/code> \u00e9 <code>0<\/code>, ou seja, grava\u00e7\u00e3o apenas manual). O que ele faz, na pr\u00e1tica, \u00e9 <strong>enfileirar o registro no buffer interno do Hist\u00f3rico<\/strong> \u2014 n\u00e3o escrever diretamente na tabela do banco e aguardar a confirma\u00e7\u00e3o do SGBD.<\/p>\n<p>Como a chamada apenas entrega o registro ao buffer, ela retorna antes de o banco confirmar a grava\u00e7\u00e3o. Por isso o retorno \u00e9 sempre <code>0<\/code>: no momento em que <code>WriteRecord()<\/code> devolve o controle ao script, o E3 ainda n\u00e3o sabe se o registro foi persistido no banco.<\/p>\n<div class=\"note\">\n<p class=\"note-h\">Consequ\u00eancia pr\u00e1tica<\/p>\n<p>Qualquer l\u00f3gica de sucesso\/falha que dependa do valor devolvido por <code>WriteRecord()<\/code> \u00e9 inv\u00e1lida. A verifica\u00e7\u00e3o precisa ser feita de forma indireta, conforme a se\u00e7\u00e3o 4.<\/p>\n<\/div>\n<\/section>\n<section id=\"buffer\">\n<h2><span class=\"num\">3.<\/span> Como o Hist\u00f3rico grava os dados (buffer interno)<\/h2>\n<p>O Hist\u00f3rico do E3 grava os dados atrav\u00e9s de um <strong>buffer interno<\/strong>. Quando <code>WriteRecord()<\/code> \u00e9 chamado, o registro \u00e9 enviado para esse buffer. Se o banco de dados estiver dispon\u00edvel, o registro \u00e9 persistido em seguida. <strong>Caso o banco esteja indispon\u00edvel no momento<\/strong>, o registro <strong>fica retido no buffer<\/strong> at\u00e9 a conex\u00e3o ser restabelecida \u2014 e s\u00f3 ent\u00e3o \u00e9 gravado.<\/p>\n<p>Esse buffer \u00e9 materializado em <strong>arquivos tempor\u00e1rios na pasta raiz do dom\u00ednio<\/strong>, com as extens\u00f5es <code>.e3i<\/code> e <code>.e3o<\/code>. Em condi\u00e7\u00f5es normais (banco respondendo r\u00e1pido), esses arquivos s\u00e3o criados e apagados quase imediatamente. Quando o banco est\u00e1 indispon\u00edvel, eles <strong>persistem<\/strong> \u2014 e essa persist\u00eancia \u00e9 justamente o sinal observ\u00e1vel de que a grava\u00e7\u00e3o n\u00e3o est\u00e1 sendo conclu\u00edda.<\/p>\n<\/section>\n<section id=\"estrategias\">\n<h2><span class=\"num\">4.<\/span> Estrat\u00e9gias para detectar falha na grava\u00e7\u00e3o<\/h2>\n<p>Como n\u00e3o h\u00e1 retorno a verificar, a detec\u00e7\u00e3o precisa ser feita <strong>de forma indireta<\/strong>, confirmando se o registro chegou ao banco (ou se o buffer est\u00e1 acumulando). A seguir, tr\u00eas abordagens, da mais direta \u00e0 mais robusta.<\/p>\n<h3>4.1. Consulta <code>SELECT<\/code> ap\u00f3s o <code>WriteRecord()<\/code><\/h3>\n<p>A verifica\u00e7\u00e3o mais simples \u00e9 fazer, logo ap\u00f3s a grava\u00e7\u00e3o, uma consulta ao banco para confirmar se o registro foi realmente persistido. Se a consulta n\u00e3o trouxer o registro esperado, trata-se de um ind\u00edcio de falha.<\/p>\n<h3>4.2. Monitorar o <code>RecordCount<\/code><\/h3>\n<p>Em vez de validar o conte\u00fado, compara-se o <strong>n\u00famero total de registros<\/strong> antes e depois da grava\u00e7\u00e3o. Guarde a contagem atual, chame <code>WriteRecord()<\/code> e, ap\u00f3s um curto intervalo, verifique se a contagem aumentou. Se o contador <strong>n\u00e3o subiu<\/strong> como deveria, h\u00e1 ind\u00edcio de falha.<\/p>\n<div class=\"code\">\n<div class=\"bar\"><\/div>\n<pre><span class=\"c\">' No clique do bot\u00e3o: guarda a contagem ANTES de gravar<\/span>\r\n<span class=\"k\">Sub<\/span> Botao_Click()\r\n    <span class=\"k\">Dim<\/span> RS\r\n    <span class=\"k\">Set<\/span> RS = Parent.Item(<span class=\"s\">\"Consulta1\"<\/span>).GetADORecordset()\r\n    Screen.Item(<span class=\"s\">\"R1\"<\/span>).Value = RS.RecordCount        <span class=\"c\">' contagem antes<\/span>\r\n    Application.GetObject(<span class=\"s\">\"Hist1\"<\/span>).WriteRecord()     <span class=\"c\">' grava o registro<\/span>\r\n    Screen.Item(<span class=\"s\">\"TagContador1\"<\/span>).Enabled = <span class=\"k\">True<\/span>       <span class=\"c\">' dispara a verifica\u00e7\u00e3o<\/span>\r\n<span class=\"k\">End Sub<\/span><\/pre>\n<\/div>\n<div class=\"code\">\n<div class=\"bar\"><\/div>\n<pre><span class=\"c\">' TagContador1: tag de tempo com Enabled = False e Preset = 2 s.<\/span>\r\n<span class=\"c\">' Ao ser habilitado, dispara OnPreset ap\u00f3s 2 s e faz a verifica\u00e7\u00e3o.<\/span>\r\n<span class=\"k\">Sub<\/span> TagContador1_OnPreset()\r\n    <span class=\"k\">Dim<\/span> RS\r\n    <span class=\"k\">Set<\/span> RS = Parent.Item(<span class=\"s\">\"Consulta1\"<\/span>).GetADORecordset()\r\n    Parent.Item(<span class=\"s\">\"R2\"<\/span>).Value = RS.RecordCount        <span class=\"c\">' contagem depois<\/span>\r\n\r\n    <span class=\"k\">If<\/span> Parent.Item(<span class=\"s\">\"R2\"<\/span>).Value > Parent.Item(<span class=\"s\">\"R1\"<\/span>).Value <span class=\"k\">Then<\/span>\r\n        MsgBox <span class=\"s\">\"Registro inserido com sucesso\"<\/span>\r\n    <span class=\"k\">Else<\/span>\r\n        MsgBox <span class=\"s\">\"O registro n\u00e3o foi inserido\"<\/span>        <span class=\"c\">' aqui \u00e9 poss\u00edvel acionar o alarme<\/span>\r\n    <span class=\"k\">End If<\/span>\r\n\r\n    Screen.Item(<span class=\"s\">\"TagContador1\"<\/span>).Enabled = <span class=\"k\">False<\/span>       <span class=\"c\">' verifica apenas uma vez<\/span>\r\n<span class=\"k\">End Sub<\/span><\/pre>\n<\/div>\n<h3>4.3. Monitorar os arquivos de buffer (<code>.e3i<\/code> \/ <code>.e3o<\/code>)<\/h3>\n<p>A abordagem mais confi\u00e1vel para detectar <strong>indisponibilidade prolongada do banco<\/strong> \u00e9 observar a presen\u00e7a dos arquivos de buffer (<code>.e3i<\/code> \/ <code>.e3o<\/code>) na pasta raiz do dom\u00ednio. Como eles somem quase imediatamente quando o banco responde, a <strong>persist\u00eancia<\/strong> deles ao longo de v\u00e1rias verifica\u00e7\u00f5es seguidas indica que o banco est\u00e1 indispon\u00edvel.<\/p>\n<p>A ideia \u00e9 executar o script <strong>periodicamente<\/strong> (por exemplo, a cada minuto, usando um <code>TimerTag<\/code>) e <strong>contar quantas vezes seguidas<\/strong> os arquivos aparecem. Se o contador atingir um limite <code>X<\/code> (por exemplo, 5 verifica\u00e7\u00f5es = 5 minutos), dispara-se o alarme; assim que os arquivos somem, o contador \u00e9 zerado.<\/p>\n<div class=\"code\">\n<div class=\"bar\"><\/div>\n<pre><span class=\"k\">Dim<\/span> fso, pasta, arq, achouBuffer, caminhoDominio, contador\r\n\r\ncaminhoDominio = <span class=\"s\">\"C:\\MeuDominio\\\"<\/span>   <span class=\"c\">' AJUSTAR para o caminho real da pasta do dom\u00ednio<\/span>\r\n\r\n<span class=\"k\">Set<\/span> fso = CreateObject(<span class=\"s\">\"Scripting.FileSystemObject\"<\/span>)\r\nachouBuffer = <span class=\"k\">False<\/span>\r\n\r\n<span class=\"k\">If<\/span> fso.FolderExists(caminhoDominio) <span class=\"k\">Then<\/span>\r\n    <span class=\"k\">Set<\/span> pasta = fso.GetFolder(caminhoDominio)\r\n    <span class=\"k\">For Each<\/span> arq <span class=\"k\">In<\/span> pasta.Files\r\n        <span class=\"k\">If<\/span> LCase(fso.GetExtensionName(arq.Name)) = <span class=\"s\">\"e3i\"<\/span> _\r\n        <span class=\"k\">Or<\/span> LCase(fso.GetExtensionName(arq.Name)) = <span class=\"s\">\"e3o\"<\/span> <span class=\"k\">Then<\/span>\r\n            achouBuffer = <span class=\"k\">True<\/span>\r\n            <span class=\"k\">Exit For<\/span>\r\n        <span class=\"k\">End If<\/span>\r\n    <span class=\"k\">Next<\/span>\r\n<span class=\"k\">End If<\/span>\r\n\r\ncontador = Application.GetObject(<span class=\"s\">\"Dados.ContadorBufferPersistente\"<\/span>).Value\r\n\r\n<span class=\"k\">If<\/span> achouBuffer <span class=\"k\">Then<\/span>\r\n    contador = contador + 1\r\n<span class=\"k\">Else<\/span>\r\n    contador = 0    <span class=\"c\">' zera assim que os arquivos somem (banco respondeu)<\/span>\r\n<span class=\"k\">End If<\/span>\r\n\r\nApplication.GetObject(<span class=\"s\">\"Dados.ContadorBufferPersistente\"<\/span>).Value = contador\r\n\r\n<span class=\"c\">' Se os arquivos persistirem por N checagens seguidas (ex.: 5 min, a cada 1 min),<\/span>\r\n<span class=\"c\">' dispara o alarme:<\/span>\r\n<span class=\"k\">If<\/span> contador >= 5 <span class=\"k\">Then<\/span>\r\n    Application.GetObject(<span class=\"s\">\"Dados.AlarmeGravacaoFalhou\"<\/span>).Value = <span class=\"k\">True<\/span>\r\n<span class=\"k\">Else<\/span>\r\n    Application.GetObject(<span class=\"s\">\"Dados.AlarmeGravacaoFalhou\"<\/span>).Value = <span class=\"k\">False<\/span>\r\n<span class=\"k\">End If<\/span><\/pre>\n<\/div>\n<\/section>\n<section id=\"observacoes\">\n<h2><span class=\"num\">5.<\/span> Observa\u00e7\u00f5es e boas pr\u00e1ticas<\/h2>\n<ul>\n<li><strong>N\u00e3o confie no retorno do <code>WriteRecord()<\/code>.<\/strong> Ele \u00e9 sempre <code>0<\/code> e n\u00e3o reflete o resultado da grava\u00e7\u00e3o no banco. Qualquer l\u00f3gica de sucesso\/falha baseada nesse retorno \u00e9 inv\u00e1lida.<\/li>\n<li><strong>A aus\u00eancia moment\u00e2nea do buffer n\u00e3o garante sucesso permanente.<\/strong> Os arquivos <code>.e3i<\/code> \/ <code>.e3o<\/code> existem normalmente por instantes mesmo com o banco saud\u00e1vel; por isso a detec\u00e7\u00e3o por buffer deve contar <strong>ocorr\u00eancias seguidas<\/strong>, n\u00e3o uma \u00fanica presen\u00e7a.<\/li>\n<li><strong>Escolha a estrat\u00e9gia pela finalidade.<\/strong> Para confirmar um registro pontual (ex.: evento de batch), a consulta <code>SELECT<\/code> ou o <code>RecordCount<\/code> bastam. Para monitorar a <strong>sa\u00fade cont\u00ednua<\/strong> da grava\u00e7\u00e3o (banco caindo por per\u00edodos), o monitoramento do buffer \u00e9 o indicador mais robusto.<\/li>\n<li><strong>D\u00ea um intervalo entre gravar e verificar.<\/strong> Como a persist\u00eancia passa pelo buffer, uma verifica\u00e7\u00e3o imediata pode ocorrer antes de o registro chegar ao banco. Um pequeno atraso (como o <code>Preset<\/code> de 2 s do exemplo) reduz falsos negativos.<\/li>\n<\/ul>\n<\/section>\n<section id=\"palavras\"><\/section>\n<footer class=\"src\"><\/footer>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>1. Introdu\u00e7\u00e3o Uma d\u00favida recorrente ao gravar dados no objeto Hist\u00f3rico (Hist) do E3 \u00e9 como reagir quando a grava\u00e7\u00e3o falha \u2014 por exemplo, disparar um alarme se um registro&hellip;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0},"categories":[578,597],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Detec\u00e7\u00e3o de falha na grava\u00e7\u00e3o do Hist\u00f3rico (Hist).<\/title>\n<meta name=\"description\" content=\"O WriteRecord() do Hist\u00f3rico do E3 sempre retorna 0 e n\u00e3o indica falha. Veja como detectar erro de grava\u00e7\u00e3o e disparar alarme via consulta, RecordCount ou buffer.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kb.elipse.com.br\/en\/deteccao-de-falha-na-gravacao-do-historico-hist\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:locale:alternate\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Detec\u00e7\u00e3o de falha na grava\u00e7\u00e3o do Hist\u00f3rico (Hist).\" \/>\n<meta property=\"og:description\" content=\"O WriteRecord() do Hist\u00f3rico do E3 sempre retorna 0 e n\u00e3o indica falha. Veja como detectar erro de grava\u00e7\u00e3o e disparar alarme via consulta, RecordCount ou buffer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kb.elipse.com.br\/en\/deteccao-de-falha-na-gravacao-do-historico-hist\/\" \/>\n<meta property=\"og:site_name\" content=\"Elipse Knowledgebase\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/elipsesoftware\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-07T13:21:50+00:00\" \/>\n<meta name=\"author\" content=\"D\u00e9lio Damin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"D\u00e9lio Damin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/\"},\"author\":{\"name\":\"D\u00e9lio Damin\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/be597eff34b5f24af940a55332870778\"},\"headline\":\"Detec\u00e7\u00e3o de falha na grava\u00e7\u00e3o do Hist\u00f3rico (Hist).\",\"datePublished\":\"2026-08-07T13:21:50+00:00\",\"dateModified\":\"2026-08-07T13:21:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/\"},\"wordCount\":814,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"articleSection\":[\"Elipse E3\",\"Historico\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/\",\"url\":\"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/\",\"name\":\"Detec\u00e7\u00e3o de falha na grava\u00e7\u00e3o do Hist\u00f3rico (Hist).\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#website\"},\"datePublished\":\"2026-08-07T13:21:50+00:00\",\"dateModified\":\"2026-08-07T13:21:50+00:00\",\"description\":\"O WriteRecord() do Hist\u00f3rico do E3 sempre retorna 0 e n\u00e3o indica falha. Veja como detectar erro de grava\u00e7\u00e3o e disparar alarme via consulta, RecordCount ou buffer.\",\"breadcrumb\":{\"@id\":\"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/kb.elipse.com.br\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Detec\u00e7\u00e3o de falha na grava\u00e7\u00e3o do Hist\u00f3rico (Hist).\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kb.elipse.com.br\/#website\",\"url\":\"https:\/\/kb.elipse.com.br\/\",\"name\":\"Elipse Knowledgebase\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kb.elipse.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\",\"name\":\"Elipse Software\",\"url\":\"https:\/\/kb.elipse.com.br\/\",\"sameAs\":[\"http:\/\/www.facebook.com\/elipsesoftware\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png\",\"contentUrl\":\"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png\",\"width\":161,\"height\":58,\"caption\":\"Elipse Software\"},\"image\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/be597eff34b5f24af940a55332870778\",\"name\":\"D\u00e9lio Damin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/fdf251d36430f8dd22144c3f1bc53376?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/fdf251d36430f8dd22144c3f1bc53376?s=96&d=mm&r=g\",\"caption\":\"D\u00e9lio Damin\"},\"url\":\"https:\/\/kb.elipse.com.br\/en\/author\/delio\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Detec\u00e7\u00e3o de falha na grava\u00e7\u00e3o do Hist\u00f3rico (Hist).","description":"O WriteRecord() do Hist\u00f3rico do E3 sempre retorna 0 e n\u00e3o indica falha. Veja como detectar erro de grava\u00e7\u00e3o e disparar alarme via consulta, RecordCount ou buffer.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kb.elipse.com.br\/en\/deteccao-de-falha-na-gravacao-do-historico-hist\/","og_locale":"en_US","og_type":"article","og_title":"[:pt]Detec\u00e7\u00e3o de falha na grava\u00e7\u00e3o do Hist\u00f3rico (Hist).[:] - Elipse Knowledgebase","og_description":"[:pt]O WriteRecord() do Hist\u00f3rico do E3 sempre retorna 0 e n\u00e3o indica falha. Veja como detectar erro de grava\u00e7\u00e3o e disparar alarme via consulta, RecordCount ou buffer.[:]","og_url":"https:\/\/kb.elipse.com.br\/en\/deteccao-de-falha-na-gravacao-do-historico-hist\/","og_site_name":"Elipse Knowledgebase","article_publisher":"http:\/\/www.facebook.com\/elipsesoftware","article_published_time":"2026-08-07T13:21:50+00:00","author":"D\u00e9lio Damin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"D\u00e9lio Damin","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/#article","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/"},"author":{"name":"D\u00e9lio Damin","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/be597eff34b5f24af940a55332870778"},"headline":"Detec\u00e7\u00e3o de falha na grava\u00e7\u00e3o do Hist\u00f3rico (Hist).","datePublished":"2026-08-07T13:21:50+00:00","dateModified":"2026-08-07T13:21:50+00:00","mainEntityOfPage":{"@id":"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/"},"wordCount":814,"commentCount":0,"publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"articleSection":["Elipse E3","Historico"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/","url":"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/","name":"Detec\u00e7\u00e3o de falha na grava\u00e7\u00e3o do Hist\u00f3rico (Hist).","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/#website"},"datePublished":"2026-08-07T13:21:50+00:00","dateModified":"2026-08-07T13:21:50+00:00","description":"O WriteRecord() do Hist\u00f3rico do E3 sempre retorna 0 e n\u00e3o indica falha. Veja como detectar erro de grava\u00e7\u00e3o e disparar alarme via consulta, RecordCount ou buffer.","breadcrumb":{"@id":"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kb.elipse.com.br\/deteccao-de-falha-na-gravacao-do-historico-hist\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/kb.elipse.com.br\/en\/"},{"@type":"ListItem","position":2,"name":"Detec\u00e7\u00e3o de falha na grava\u00e7\u00e3o do Hist\u00f3rico (Hist)."}]},{"@type":"WebSite","@id":"https:\/\/kb.elipse.com.br\/#website","url":"https:\/\/kb.elipse.com.br\/","name":"Elipse Knowledgebase","description":"","publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kb.elipse.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/kb.elipse.com.br\/#organization","name":"Elipse Software","url":"https:\/\/kb.elipse.com.br\/","sameAs":["http:\/\/www.facebook.com\/elipsesoftware"],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/","url":"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png","contentUrl":"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png","width":161,"height":58,"caption":"Elipse Software"},"image":{"@id":"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/be597eff34b5f24af940a55332870778","name":"D\u00e9lio Damin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/fdf251d36430f8dd22144c3f1bc53376?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fdf251d36430f8dd22144c3f1bc53376?s=96&d=mm&r=g","caption":"D\u00e9lio Damin"},"url":"https:\/\/kb.elipse.com.br\/en\/author\/delio\/"}]}},"_links":{"self":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/17923"}],"collection":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/comments?post=17923"}],"version-history":[{"count":3,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/17923\/revisions"}],"predecessor-version":[{"id":17926,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/17923\/revisions\/17926"}],"wp:attachment":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/media?parent=17923"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/categories?post=17923"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/tags?post=17923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}