{"id":3741,"date":"2020-07-09T14:22:17","date_gmt":"2020-07-09T17:22:17","guid":{"rendered":"https:\/\/www.codevix.com.br\/?p=3741"},"modified":"2020-07-10T10:00:04","modified_gmt":"2020-07-10T13:00:04","slug":"fwtemporarytable-a-melhor-solucao-para-tabela-temporaria","status":"publish","type":"post","link":"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/","title":{"rendered":"FwTemporaryTable &#8211; A melhor solu\u00e7\u00e3o para tabela tempor\u00e1ria"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introdu\u00e7\u00e3o<\/h2>\n\n\n\n<p>Uma classe relativamente recente e que vejo poucos programadores usarem \u00e9 a <strong>FwTemporaryTable<\/strong>. Ela serve para criar e manipular tabelas tempor\u00e1rias no banco de dados. Uma classe cheia de recursos e n\u00e3o \u00e9 muito dif\u00edcil de se utilizar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fique ligado!<\/h3>\n\n\n\n<p>Uma observa\u00e7\u00e3o importante \u00e9 que seu uso \u00e9 obrigat\u00f3rio para cria\u00e7\u00e3o de tabelas tempor\u00e1rias caso queira migrar o dicion\u00e1rio do ERP para o banco de dados. Sabendo disso, o uso das fun\u00e7\u00f5es <strong>CriaTrab<\/strong>, <strong>DbCreate<\/strong>, <strong>MsCreate<\/strong>, <strong>Copy To<\/strong> e etc. para cria\u00e7\u00e3o de tabelas tempor\u00e1rias no banco de dados se tornou proibido. Caso haja alguma customiza\u00e7\u00e3o com essas fun\u00e7\u00f5es, elas ser\u00e3o detectadas como bug cr\u00edtico pela ferramenta TOTVS CodeAnalysis e impedir\u00e3o sua migra\u00e7\u00e3o de dicion\u00e1rio de dados, sendo necess\u00e1ria a substitui\u00e7\u00e3o pela classe <strong>FwTemporaryTable<\/strong>. <\/p>\n\n\n\n<p>A descri\u00e7\u00e3o do erro \u00e9: <strong><em>O uso de drive ISAM na linha Microsiga Protheus foi descontinuado.<\/em><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bora Codar !!<\/h2>\n\n\n\n<p>Bom, sem mais delongas, vamos analisar um exemplo de como criar uma tabela usando essa classe:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n\/\/ Instancio o objeto\noTable  := FwTemporaryTable():New('TRB')\n\naCpoData := {}\n\n\/\/ Crio com array com os campos da tabela\naAdd(aCpoData, {'TMP_FILIAL', TamSx3('E1_FILIAL')&#x5B;3]    , TamSx3('E1_FILIAL')&#x5B;1]    , 0})\naAdd(aCpoData, {'TMP_CLIENT', TamSx3('E1_CLIENTE')&#x5B;3]   , TamSx3('E1_CLIENTE')&#x5B;1]   , 0})\naAdd(aCpoData, {'TMP_LOJA'  , TamSx3('E1_LOJA')&#x5B;3]      , TamSx3('E1_LOJA')&#x5B;1]      , 0})\naAdd(aCpoData, {'TMP_PREFIX', TamSx3('E1_PREFIXO')&#x5B;3]   , TamSx3('E1_PREFIXO')&#x5B;1]   , 0})\naAdd(aCpoData, {'TMP_NUM'   , TamSx3('E1_NUM')&#x5B;3]       , TamSx3('E1_NUM')&#x5B;1]       , 0})\naAdd(aCpoData, {'TMP_PARCEL', TamSx3('E1_PARCELA')&#x5B;3]   , TamSx3('E1_PARCELA')&#x5B;1]   , 0})\naAdd(aCpoData, {'TMP_VALOR' , TamSx3('E1_VALOR')&#x5B;3]     , TamSx3('E1_VALOR')&#x5B;1]     , TamSx3('E1_VALOR')&#x5B;2]})\naAdd(aCpoData, {'TMP_VALLIQ', TamSx3('E1_VALLIQ')&#x5B;3]    , TamSx3('E1_VALLIQ')&#x5B;1]    , TamSx3('E1_VALLIQ')&#x5B;2]})\naAdd(aCpoData, {'TMP_SALDO' , TamSx3('E1_SALDO')&#x5B;3]     , TamSx3('E1_SALDO')&#x5B;1]     , TamSx3('E1_SALDO')&#x5B;2]})\n\n\/\/ Adiciono os campos na tabela\noTable:SetFields(aCpoData)\n\n\/\/ Adiciono os \u00edndices da tabela\noTable:AddIndex('01', {'TMP_FILIAL','TMP_PREFIX','TMP_NUM','TMP_PARCEL'})\noTable:AddIndex('02', {'TMP_FILIAL','TMP_CLIENT','TMP_LOJA'})\n\n\/\/ Crio a tabela no banco de dados\noTable:Create()\n\n<\/pre><\/div>\n\n\n<p>Ao instanciar a classe, voc\u00ea pode ou n\u00e3o informar o Alias da tabela no m\u00e9todo <strong>New<\/strong>. No meu caso, informei o Alias TRB. Caso n\u00e3o seja informado, o sistema ir\u00e1 preencher com o pr\u00f3ximo Alias dispon\u00edvel. <\/p>\n\n\n\n<p>Caso queira posicionar em um registro dentro do programa, voc\u00ea pode utilizar os seguintes comandos:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n\/\/ Caso voc\u00ea saiba o Alias\nTRB-&gt;TMP_NUM\n\n\/\/ Caso voc\u00ea n\u00e3o saiba o Alias \u2013 primeira op\u00e7\u00e3o\ncTable := oTable:GetAlias()\n(cTable)-&gt;TMP_NUM\n\n\/\/ Caso voc\u00ea n\u00e3o saiba o Alias \u2013 segunda op\u00e7\u00e3o\n(oTable:GetAlias())-&gt;TMP_NUM\n\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\"><strong>SetFields<\/strong><\/h4>\n\n\n\n<p>O m\u00e9todo <strong>SetFields<\/strong> recebe os campos para cria\u00e7\u00e3o da tabela, ele deve receber um array onde suas posi\u00e7\u00f5es devem ser preenchidas da seguinte maneira:<\/p>\n\n\n\n<ol type=\"1\"><li>Nome do campo<\/li><li>Tipo do campo (Caractere, num\u00e9rico, etc.)<\/li><li>Tamanho do campo<\/li><li>Decimal do campo<\/li><\/ol>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>AddIndex<\/strong><\/h4>\n\n\n\n<p>O m\u00e9todo <strong>AddIndex<\/strong> \u00e9 opcional, e voc\u00ea pode estar utilizando para criar \u00edndices em sua tabela tempor\u00e1ria. Informe o nome do \u00edndice no primeiro par\u00e2metro e um array com os campos daquele \u00edndice no segundo par\u00e2metro.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Create<\/strong><\/h4>\n\n\n\n<p>Por fim, o m\u00e9todo <strong>Create<\/strong> efetiva a cria\u00e7\u00e3o da tabela no banco de dados.<\/p>\n\n\n\n<p>\u00d3timo! Agora que a tabela est\u00e1 criada, como podemos fazer para popular? Existem duas maneiras bem simples. <\/p>\n\n\n\n<p>A primeira e mais usada \u00e9 a seguinte:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n\/\/ Fa\u00e7o uma consulta SQL dos dados que desejo popular\n    BeginSql Alias _cAlias\n    \n        %NoParser%\n        SELECT\n            SE1.E1_FILIAL,\n            SE1.E1_CLIENTE,\n            SE1.E1_LOJA,\n            SE1.E1_PREFIXO,\n            SE1.E1_NUM,\n            SE1.E1_PARCELA,\n            SE1.E1_VALOR,\n            SE1.E1_VALLIQ,\n            SE1.E1_SALDO\n        FROM %TABLE:SE1% (NOLOCK) SE1\n        WHERE\n            SE1.E1_SALDO &gt; 0 AND\n            DATEDIFF(DAY,SE1.E1_VENCREA,CONVERT(DATE,GETDATE())) &gt; 15 AND\n            SE1.%NOTDEL%\n            \n    EndSQL\n\n    (_cAlias)-&gt;(DbGoTop())\n    \n    DbSelectArea('TRB')\n\n    \/\/ Insiro todos os dados na minha tabela\n    While(!(_cAlias)-&gt;(EoF()))\n     \n        RecLock('TRB', .T.)\n\n            TRB-&gt;TMP_FILIAL := (_cAlias)-&gt;E1_FILIAL\n            TRB-&gt;TMP_CLIENT := (_cAlias)-&gt;E1_CLIENTE\n            TRB-&gt;TMP_LOJA   := (_cAlias)-&gt;E1_LOJA\n            TRB-&gt;TMP_PREFIX := (_cAlias)-&gt;E1_PREFIXO\n            TRB-&gt;TMP_NUM    := (_cAlias)-&gt;E1_NUM\n            TRB-&gt;TMP_PARCEL := (_cAlias)-&gt;E1_PARCELA\n            TRB-&gt;TMP_VALOR  := Round((_cAlias)-&gt;E1_VALOR,2)\n            TRB-&gt;TMP_VALLIQ := Round((_cAlias)-&gt;E1_VALLIQ,2)\n            TRB-&gt;TMP_SALDO  := Round((_cAlias)-&gt;E1_SALDO,2)\n\n        TRB-&gt;(MsUnlock())\n        \n        (_cAlias)-&gt;(DbSkip())\n        \n    EndDo\n    \n    TRB-&gt;(DbGoTop())\n    \n    (_cAlias)-&gt;(DbCloseArea())\n\n<\/pre><\/div>\n\n\n<p><strong><u>Importante!<\/u><\/strong> Caso utilize essa forma de preenchimento e n\u00e3o tenha informado um alias para a tabela, lembre-se de substituir o alias <strong>TRB<\/strong> pelo m\u00e9todo <strong>GetAlias.<\/strong><\/p>\n\n\n\n<p>Existe uma outra forma de popular esses dados e que \u00e9 mais perform\u00e1tico que o anterior, inserindo diretamente via comando SQL:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n    cFields := ''\n\n    \/\/ Busco todos os campos da tabela tempor\u00e1ria e preencho numa vari\u00e1vel\n    For nI := 1 To Len(aCpoData)\n    \n        cFields += aCpoData&#x5B;nI,1] + ','\n    \n    Next nI\n    \n    cFields := Left(cFields, Len(cFields) -1)\n    \n    \/\/ Monto o comando SQL\n    cQuery := &quot;INSERT INTO &quot; + oTable:GetRealName()\n    cQuery += &quot; (&quot; + cFields + &quot;) &quot;\n    cQuery += &quot; SELECT &quot;\n    cQuery += &quot;     SE1.E1_FILIAL, &quot;\n    cQuery += &quot;     SE1.E1_CLIENTE, &quot;\n    cQuery += &quot;     SE1.E1_LOJA, &quot;\n    cQuery += &quot;     SE1.E1_PREFIXO, &quot;\n    cQuery += &quot;     SE1.E1_NUM, &quot;\n    cQuery += &quot;     SE1.E1_PARCELA, &quot;\n    cQuery += &quot;     SE1.E1_VALOR, &quot;\n    cQuery += &quot;     SE1.E1_VALLIQ, &quot;\n    cQuery += &quot;     SE1.E1_SALDO &quot;\n    cQuery += &quot; FROM &quot; + RetSqlName('SE1') + &quot; (NOLOCK) SE1 &quot;\n    cQuery += &quot; WHERE &quot;\n    cQuery += &quot;     SE1.E1_SALDO &gt; 0 AND &quot;\n    cQuery += &quot;     DATEDIFF(DAY,SE1.E1_VENCREA,CONVERT(DATE,GETDATE())) &gt; 10 AND &quot;\n    cQuery += &quot;     SE1.D_E_L_E_T_ = '' &quot;\n\n    \/\/ Executo o comando SQL\n    If(TcSqlExec(cQuery) &lt; 0 .and. !Empty(TcSqlError()))\n    \n        MsgAlert('Ocorreu um erro ao executar o comando SQL!' + CRLF + CRLF + TcSqlError(), 'Erro ao popular tabela')\n        \n    Endif\n\n<\/pre><\/div>\n\n\n<p>O conte\u00fado da tabela ser\u00e1 preenchido bem mais r\u00e1pido do que da forma anterior!<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>GetRealName<\/strong><\/h4>\n\n\n\n<p>Aqui utilizamos o m\u00e9todo <strong>GetRealName<\/strong>, esse m\u00e9todo me retorna o nome f\u00edsico da tabela no banco de dados, que no meu caso foi <strong><em>##TMPSC00_209<\/em><\/strong>.<\/p>\n\n\n\n<p>Esse nome sempre vai variar de acordo com as tabelas tempor\u00e1rias j\u00e1 existentes no banco.<\/p>\n\n\n\n<p>Uma observa\u00e7\u00e3o bacana \u00e9 que voc\u00ea pode executar um comando select nessa tabela via sua IDE SQL. Segue exemplo:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"698\" height=\"163\" src=\"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/image.png?resize=698%2C163&#038;ssl=1\" alt=\"\" class=\"wp-image-3754\" srcset=\"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/image.png?w=698&amp;ssl=1 698w, https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/image.png?resize=300%2C70&amp;ssl=1 300w\" sizes=\"(max-width: 698px) 100vw, 698px\" data-recalc-dims=\"1\" \/><\/figure><\/div>\n\n\n\n<p>Agora que a tabela j\u00e1 est\u00e1 preenchida, \u00e9 s\u00f3 utilizar em suas customiza\u00e7\u00f5es! <\/p>\n\n\n\n<p>Voc\u00ea ainda pode utiliz\u00e1-la dentro do Protheus para demais consultas SQL, incluindo JOINS, como no exemplo a seguir:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n_cAlias     := GetNextAlias()\ncTblName    := '%' + oTable:GetRealName() + '%'\n\n\/\/ Executa a consulta SQL\nBeginSql Alias _cAlias\n\n    %NoParser%\n    SELECT * FROM %Exp:cTblName% TRB\n    INNER JOIN %TABLE:SA1% SA1 ON\n        SA1.A1_FILIAL = %xFilial:SA1% AND\n        SA1.A1_COD = TRB.TMP_CLIENT AND\n        SA1.A1_LOJA = TRB.TMP_LOJA AND\n        SA1.%NOTDEL%\n\nEndSql\n\n(_cAlias)-&gt;(DbGoTop())\n\n\/\/ Percorro a consulta SQL\nWhile(!(_cAlias)-&gt;(EoF()))\n\n    ConOut('T\u00edtulo: ' + (_cAlias)-&gt;TMP_NUM + ' - Raz\u00e3o Social: ' + (_cAlias)-&gt;A1_NOME)\n\n    (_cAlias)-&gt;(DbSkip())\n\nEndDo\n\n(_cAlias)-&gt;(DbCloseArea())\n\n<\/pre><\/div>\n\n\n<p>Nesse exemplo, estou fazendo um join da minha tabela tempor\u00e1ria de t\u00edtulos com a minha tabela de clientes. Dessa forma posso buscar outros dados que n\u00e3o estejam em minha tabela tempor\u00e1ria. Aqui as possibilidades s\u00e3o v\u00e1rias!<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Delete<\/h4>\n\n\n\n<p>Por fim, ap\u00f3s realizar todos os processamentos desejados, basta chamar o m\u00e9todo <strong>Delete<\/strong> para efetuar a dele\u00e7\u00e3o da tabela tempor\u00e1ria do banco de dados. Esse m\u00e9todo chama de forma autom\u00e1tica a fun\u00e7\u00e3o <strong>DbCloseArea<\/strong> para fechar o seu alias.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nIf(Type('oTable') &lt;&gt; 'U')\n\n    oTable:Delete()\n    \n    FreeObj(oTable)\n\nEndIf\n\n<\/pre><\/div>\n\n\n<p>Espero que a dica tenha sido \u00fatil!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Refer\u00eancias<\/h2>\n\n\n\n<ul><li><a href=\"https:\/\/tdn.totvs.com\/display\/framework\/FWTemporaryTable\" target=\"_blank\" aria-label=\"undefined (opens in a new tab)\" rel=\"noreferrer noopener\">FwTemporaryTable &#8211; TDN Totvs<\/a><\/li><\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introdu\u00e7\u00e3o Uma classe relativamente recente e que vejo poucos programadores usarem \u00e9 a FwTemporaryTable. Ela serve para criar e manipular tabelas tempor\u00e1rias no banco de dados. Uma classe cheia de recursos e n\u00e3o \u00e9 muito dif\u00edcil de se utilizar. Fique ligado! Uma observa\u00e7\u00e3o importante \u00e9 que seu uso \u00e9 obrigat\u00f3rio para cria\u00e7\u00e3o de tabelas tempor\u00e1rias [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":3760,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[14],"tags":[18],"jetpack_publicize_connections":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>FwTemporaryTable - A melhor solu\u00e7\u00e3o para tabela tempor\u00e1ria &#187; Code Vix - revolu\u00e7\u00e3o digital * resultados reais<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FwTemporaryTable - A melhor solu\u00e7\u00e3o para tabela tempor\u00e1ria &#187; Code Vix - revolu\u00e7\u00e3o digital * resultados reais\" \/>\n<meta property=\"og:description\" content=\"Introdu\u00e7\u00e3o Uma classe relativamente recente e que vejo poucos programadores usarem \u00e9 a FwTemporaryTable. Ela serve para criar e manipular tabelas tempor\u00e1rias no banco de dados. Uma classe cheia de recursos e n\u00e3o \u00e9 muito dif\u00edcil de se utilizar. Fique ligado! Uma observa\u00e7\u00e3o importante \u00e9 que seu uso \u00e9 obrigat\u00f3rio para cria\u00e7\u00e3o de tabelas tempor\u00e1rias [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/\" \/>\n<meta property=\"og:site_name\" content=\"Code Vix - revolu\u00e7\u00e3o digital * resultados reais\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-09T17:22:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-10T13:00:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/data_maintenance_isometric.png?fit=1600%2C1200&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"1200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Giordano Trabach\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Giordano Trabach\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/\"},\"author\":{\"name\":\"Giordano Trabach\",\"@id\":\"https:\/\/www.codevix.com.br\/#\/schema\/person\/c539212b6b922c14fc115302bc252c1d\"},\"headline\":\"FwTemporaryTable &#8211; A melhor solu\u00e7\u00e3o para tabela tempor\u00e1ria\",\"datePublished\":\"2020-07-09T17:22:17+00:00\",\"dateModified\":\"2020-07-10T13:00:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/\"},\"wordCount\":626,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.codevix.com.br\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/data_maintenance_isometric.png?fit=1600%2C1200&ssl=1\",\"keywords\":[\"Advpl\"],\"articleSection\":[\"Protheus\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/\",\"url\":\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/\",\"name\":\"FwTemporaryTable - A melhor solu\u00e7\u00e3o para tabela tempor\u00e1ria &#187; Code Vix - revolu\u00e7\u00e3o digital * resultados reais\",\"isPartOf\":{\"@id\":\"https:\/\/www.codevix.com.br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/data_maintenance_isometric.png?fit=1600%2C1200&ssl=1\",\"datePublished\":\"2020-07-09T17:22:17+00:00\",\"dateModified\":\"2020-07-10T13:00:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/data_maintenance_isometric.png?fit=1600%2C1200&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/data_maintenance_isometric.png?fit=1600%2C1200&ssl=1\",\"width\":1600,\"height\":1200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/www.codevix.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FwTemporaryTable &#8211; A melhor solu\u00e7\u00e3o para tabela tempor\u00e1ria\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codevix.com.br\/#website\",\"url\":\"https:\/\/www.codevix.com.br\/\",\"name\":\"Code Vix - Muito mias que sistemas\",\"description\":\"\u00c9 mais f\u00e1cil do que se pensa. Vai mais longe do que se imagina.\",\"publisher\":{\"@id\":\"https:\/\/www.codevix.com.br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codevix.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codevix.com.br\/#organization\",\"name\":\"Code Vix\",\"url\":\"https:\/\/www.codevix.com.br\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.codevix.com.br\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codevix.com.br\/wp-content\/uploads\/2020\/04\/LOGO-1.0_250x50.png\",\"contentUrl\":\"https:\/\/www.codevix.com.br\/wp-content\/uploads\/2020\/04\/LOGO-1.0_250x50.png\",\"width\":250,\"height\":50,\"caption\":\"Code Vix\"},\"image\":{\"@id\":\"https:\/\/www.codevix.com.br\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codevix.com.br\/#\/schema\/person\/c539212b6b922c14fc115302bc252c1d\",\"name\":\"Giordano Trabach\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.codevix.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/teste_2.png?fit=93%2C96&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/teste_2.png?fit=93%2C96&ssl=1\",\"caption\":\"Giordano Trabach\"},\"description\":\"Sou formado em Jogos Digitais, atualmente trabalhando com o ERP Protheus.\",\"url\":\"https:\/\/www.codevix.com.br\/index.php\/author\/giordano\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"FwTemporaryTable - A melhor solu\u00e7\u00e3o para tabela tempor\u00e1ria &#187; Code Vix - revolu\u00e7\u00e3o digital * resultados reais","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:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/","og_locale":"pt_BR","og_type":"article","og_title":"FwTemporaryTable - A melhor solu\u00e7\u00e3o para tabela tempor\u00e1ria &#187; Code Vix - revolu\u00e7\u00e3o digital * resultados reais","og_description":"Introdu\u00e7\u00e3o Uma classe relativamente recente e que vejo poucos programadores usarem \u00e9 a FwTemporaryTable. Ela serve para criar e manipular tabelas tempor\u00e1rias no banco de dados. Uma classe cheia de recursos e n\u00e3o \u00e9 muito dif\u00edcil de se utilizar. Fique ligado! Uma observa\u00e7\u00e3o importante \u00e9 que seu uso \u00e9 obrigat\u00f3rio para cria\u00e7\u00e3o de tabelas tempor\u00e1rias [&hellip;]","og_url":"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/","og_site_name":"Code Vix - revolu\u00e7\u00e3o digital * resultados reais","article_published_time":"2020-07-09T17:22:17+00:00","article_modified_time":"2020-07-10T13:00:04+00:00","og_image":[{"width":1600,"height":1200,"url":"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/data_maintenance_isometric.png?fit=1600%2C1200&ssl=1","type":"image\/png"}],"author":"Giordano Trabach","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Giordano Trabach","Est. tempo de leitura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#article","isPartOf":{"@id":"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/"},"author":{"name":"Giordano Trabach","@id":"https:\/\/www.codevix.com.br\/#\/schema\/person\/c539212b6b922c14fc115302bc252c1d"},"headline":"FwTemporaryTable &#8211; A melhor solu\u00e7\u00e3o para tabela tempor\u00e1ria","datePublished":"2020-07-09T17:22:17+00:00","dateModified":"2020-07-10T13:00:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/"},"wordCount":626,"commentCount":0,"publisher":{"@id":"https:\/\/www.codevix.com.br\/#organization"},"image":{"@id":"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/data_maintenance_isometric.png?fit=1600%2C1200&ssl=1","keywords":["Advpl"],"articleSection":["Protheus"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/","url":"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/","name":"FwTemporaryTable - A melhor solu\u00e7\u00e3o para tabela tempor\u00e1ria &#187; Code Vix - revolu\u00e7\u00e3o digital * resultados reais","isPartOf":{"@id":"https:\/\/www.codevix.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#primaryimage"},"image":{"@id":"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/data_maintenance_isometric.png?fit=1600%2C1200&ssl=1","datePublished":"2020-07-09T17:22:17+00:00","dateModified":"2020-07-10T13:00:04+00:00","breadcrumb":{"@id":"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#primaryimage","url":"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/data_maintenance_isometric.png?fit=1600%2C1200&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/data_maintenance_isometric.png?fit=1600%2C1200&ssl=1","width":1600,"height":1200},{"@type":"BreadcrumbList","@id":"https:\/\/www.codevix.com.br\/index.php\/2020\/07\/09\/fwtemporarytable-a-melhor-solucao-para-tabela-temporaria\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.codevix.com.br\/"},{"@type":"ListItem","position":2,"name":"FwTemporaryTable &#8211; A melhor solu\u00e7\u00e3o para tabela tempor\u00e1ria"}]},{"@type":"WebSite","@id":"https:\/\/www.codevix.com.br\/#website","url":"https:\/\/www.codevix.com.br\/","name":"Code Vix - Muito mias que sistemas","description":"\u00c9 mais f\u00e1cil do que se pensa. Vai mais longe do que se imagina.","publisher":{"@id":"https:\/\/www.codevix.com.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codevix.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.codevix.com.br\/#organization","name":"Code Vix","url":"https:\/\/www.codevix.com.br\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.codevix.com.br\/#\/schema\/logo\/image\/","url":"https:\/\/www.codevix.com.br\/wp-content\/uploads\/2020\/04\/LOGO-1.0_250x50.png","contentUrl":"https:\/\/www.codevix.com.br\/wp-content\/uploads\/2020\/04\/LOGO-1.0_250x50.png","width":250,"height":50,"caption":"Code Vix"},"image":{"@id":"https:\/\/www.codevix.com.br\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.codevix.com.br\/#\/schema\/person\/c539212b6b922c14fc115302bc252c1d","name":"Giordano Trabach","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.codevix.com.br\/#\/schema\/person\/image\/","url":"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/teste_2.png?fit=93%2C96&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/teste_2.png?fit=93%2C96&ssl=1","caption":"Giordano Trabach"},"description":"Sou formado em Jogos Digitais, atualmente trabalhando com o ERP Protheus.","url":"https:\/\/www.codevix.com.br\/index.php\/author\/giordano\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.codevix.com.br\/wp-content\/uploads\/2020\/07\/data_maintenance_isometric.png?fit=1600%2C1200&ssl=1","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.codevix.com.br\/index.php\/wp-json\/wp\/v2\/posts\/3741"}],"collection":[{"href":"https:\/\/www.codevix.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codevix.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codevix.com.br\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codevix.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=3741"}],"version-history":[{"count":18,"href":"https:\/\/www.codevix.com.br\/index.php\/wp-json\/wp\/v2\/posts\/3741\/revisions"}],"predecessor-version":[{"id":3764,"href":"https:\/\/www.codevix.com.br\/index.php\/wp-json\/wp\/v2\/posts\/3741\/revisions\/3764"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codevix.com.br\/index.php\/wp-json\/wp\/v2\/media\/3760"}],"wp:attachment":[{"href":"https:\/\/www.codevix.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=3741"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codevix.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=3741"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codevix.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=3741"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}