{"id":4662,"date":"2023-07-11T21:42:39","date_gmt":"2023-07-11T20:42:39","guid":{"rendered":"https:\/\/gdksoftware.com\/knowledgebase\/firedac-dataset-aggregations"},"modified":"2023-07-14T17:10:06","modified_gmt":"2023-07-14T16:10:06","slug":"agregacao-do-conjunto-dos-dados-firedec","status":"publish","type":"knowledge","link":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/agregacao-do-conjunto-dos-dados-firedec","title":{"rendered":"Agrega\u00e7\u00f5es do conjunto de dados Firedac"},"content":{"rendered":"<p>Voc\u00ea sabia que, em uma consulta ou tabela do <strong>Firedac<\/strong>, \u00e9 poss\u00edvel trabalhar com <strong>agrega\u00e7\u00f5es<\/strong> em tempo de execu\u00e7\u00e3o no n\u00edvel do conjunto de dados? A exibi\u00e7\u00e3o de um valor total de todos os pedidos carregados ou de um total de todos os pedidos a serem enviados pode ser feita com muita facilidade, sem a necessidade de uma consulta separada.<\/p>\n<p>Talvez voc\u00ea j\u00e1 esteja familiarizado com um campo agregado, mas isso est\u00e1 limitado ao n\u00edvel da linha. No entanto, com a propriedade <code class=\"\" data-line=\"\">Aggegrates<\/code> de um <code class=\"\" data-line=\"\">TFDDataSet<\/code>, voc\u00ea tamb\u00e9m pode totalizar em n\u00edvel de conjunto de dados.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-4645 size-full\" src=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/Object-Inspector.png\" alt=\"\" width=\"505\" height=\"394\" srcset=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/Object-Inspector.png 505w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/Object-Inspector-300x234.png 300w\" sizes=\"(max-width: 505px) 100vw, 505px\" \/><\/p>\n<p>Como exemplo, tenho um programa de demonstra\u00e7\u00e3o no qual recupero todos os pedidos de um banco de dados em uma tabela. Posso filtr\u00e1-los pelo ID da loja. No canto superior direito, voc\u00ea pode ver o n\u00famero de pedidos que ainda n\u00e3o foram enviados. Esse n\u00famero \u00e9 calculado por um campo agregado da consulta.<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-4648 alignnone\" src=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/demo-program.png\" alt=\"\" width=\"789\" height=\"283\" srcset=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/demo-program.png 789w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/demo-program-300x108.png 300w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/demo-program-768x275.png 768w\" sizes=\"(max-width: 789px) 100vw, 789px\" \/><\/p>\n<p>Para come\u00e7ar, defino um campo de agrega\u00e7\u00e3o na propriedade de agrega\u00e7\u00e3o da consulta. O campo mais importante aqui \u00e9 Expression. \u00c9 aqui que definimos a agrega\u00e7\u00e3o que queremos executar. Possivelmente com uma condi\u00e7\u00e3o. A <a href=\"https:\/\/docwiki.embarcadero.com\/Libraries\/Alexandria\/en\/FireDAC.Comp.DataSet.TFDAggregate.Expression\">sintaxe de express\u00e3o do padr\u00e3o Firedac<\/a> \u00e9 usada para isso.<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-4651 alignnone\" src=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/Object-Inspector-2.png\" alt=\"\" width=\"651\" height=\"392\" srcset=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/Object-Inspector-2.png 651w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/Object-Inspector-2-300x181.png 300w\" sizes=\"(max-width: 651px) 100vw, 651px\" \/><\/p>\n<p>No exemplo acima, eu conto o n\u00famero de registros (<code class=\"\" data-line=\"\">COUNT<\/code>) do campo <code class=\"\" data-line=\"\">Shipped_Date<\/code> com a condi\u00e7\u00e3o de que esse campo seja contado somente se o valor estiver vazio. Para isso, a fun\u00e7\u00e3o IIF<br \/>\npode ser usada. Outros exemplos simples que voc\u00ea pode usar aqui s\u00e3o:<\/p>\n<p><code class=\"\" data-line=\"\">SUM(order_amount)<\/code><\/p>\n<p><code class=\"\" data-line=\"\">MIN(order_date)<\/code><\/p>\n<p>Como voc\u00ea pode ver nas propriedades, \u00e9 poss\u00edvel definir um campo como ativo. Se n\u00e3o o fizer, ele obviamente n\u00e3o ser\u00e1 calculado. Um nome tamb\u00e9m pode ser \u00fatil para que voc\u00ea possa encontrar a agrega\u00e7\u00e3o no c\u00f3digo.<\/p>\n<p>Infelizmente, n\u00e3o \u00e9 poss\u00edvel vincular uma agrega\u00e7\u00e3o como um campo de banco de dados a um controle com reconhecimento de dados. Portanto, a renderiza\u00e7\u00e3o deve ser tratada no c\u00f3digo. Criei um procedimento separado para isso, de modo que possa cham\u00e1-lo facilmente quando for necess\u00e1ria uma atualiza\u00e7\u00e3o. Chamo esse procedimento no evento AfterOpen da consulta e ao filtrar em um armazenamento.<\/p>\n<div style=\"background: #ffffff; overflow: auto; width: auto; border: solid gray; border-width: .1em .1em .1em .8em; padding: .2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%;\"><span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #bb0066; font-weight: bold;\">TfrmDemoApp<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0066bb; font-weight: bold;\">qryOrdersAfterOpen<\/span>(DataSet<span style=\"color: #333333;\">:<\/span> TDataSet)<span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>\r\n  ShowNotShippedAggregation<span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #bb0066; font-weight: bold;\">TfrmDemoApp<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0066bb; font-weight: bold;\">ShowNotShippedAggregation<\/span><span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>\r\n  <span style=\"color: #008800; font-weight: bold;\">var<\/span> NotShipped <span style=\"color: #333333;\">:=<\/span> qryOrders<span style=\"color: #333333;\">.<\/span>Aggregates<span style=\"color: #333333;\">.<\/span>Items[<span style=\"color: #0000dd; font-weight: bold;\">0<\/span>]<span style=\"color: #333333;\">.<\/span>Value<span style=\"color: #333333;\">;<\/span>\r\n\r\n  <span style=\"color: #008800; font-weight: bold;\">if<\/span> NotShipped <span style=\"color: #333333;\">=<\/span> Null <span style=\"color: #008800; font-weight: bold;\">then<\/span>\r\n     lblNotShipped<span style=\"color: #333333;\">.<\/span>Caption <span style=\"color: #333333;\">:=<\/span> <span style=\"background-color: #fff0f0;\">'0'<\/span>\r\n  <span style=\"color: #008800; font-weight: bold;\">else<\/span>\r\n    lblNotShipped<span style=\"color: #333333;\">.<\/span>Caption <span style=\"color: #333333;\">:=<\/span> NotShipped<span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n<\/pre>\n<\/div>\n<p>Na consulta, lembre-se de definir a propriedade <code class=\"\" data-line=\"\">AggegratesActive<\/code> para <code class=\"\" data-line=\"\">True<\/code>, caso contr\u00e1rio, as agrega\u00e7\u00f5es n\u00e3o ser\u00e3o calculadas. Outro ponto a ser lembrado: as agrega\u00e7\u00f5es operam nos dados recuperados no conjunto de dados. Por padr\u00e3o, o Firedac recupera 50 registros. Se voc\u00ea quiser um total baseado em todos os registros, v\u00e1 para FetchOptions nas propriedades da consulta e defina o Mode como fmAll.<\/p>\n<p>Veja abaixo o resultado no aplicativo de demonstra\u00e7\u00e3o.<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-4654 alignnone\" src=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/Aggegrated_fields.gif\" alt=\"\" width=\"786\" height=\"592\" \/><\/p>\n","protected":false},"featured_media":0,"parent":0,"template":"","class_list":["post-4662","knowledge","type-knowledge","status-publish","hentry","knowledge-category-arquivo-delphi"],"acf":{"author":1384,"type_hero":"compact","hero_image":4645,"hero_image_position":"","hero_title":"Agrega\u00e7\u00f5es do conjunto de dados Firedac","hero_content":"","hero_link":null,"hero_show_h1":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Agrega\u00e7\u00f5es do conjunto de dados Firedac - GDK Software<\/title>\n<meta name=\"description\" content=\"Voc\u00ea sabia que, em uma consulta ou tabela do Firedac, \u00e9 poss\u00edvel trabalhar com agrega\u00e7\u00f5es em tempo de execu\u00e7\u00e3o no n\u00edvel do conjunto de dados?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/agregacao-do-conjunto-dos-dados-firedec\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Agrega\u00e7\u00f5es do conjunto de dados Firedac\" \/>\n<meta property=\"og:description\" content=\"Voc\u00ea sabia que, em uma consulta ou tabela do Firedac, \u00e9 poss\u00edvel trabalhar com agrega\u00e7\u00f5es em tempo de execu\u00e7\u00e3o no n\u00edvel do conjunto de dados?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/agregacao-do-conjunto-dos-dados-firedec\" \/>\n<meta property=\"og:site_name\" content=\"GDK Software\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-14T16:10:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/Object-Inspector.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/agregacao-do-conjunto-dos-dados-firedec\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/agregacao-do-conjunto-dos-dados-firedec\",\"name\":\"Agrega\u00e7\u00f5es do conjunto de dados Firedac - GDK Software\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/agregacao-do-conjunto-dos-dados-firedec#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/agregacao-do-conjunto-dos-dados-firedec#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Object-Inspector.png\",\"datePublished\":\"2023-07-11T20:42:39+00:00\",\"dateModified\":\"2023-07-14T16:10:06+00:00\",\"description\":\"Voc\u00ea sabia que, em uma consulta ou tabela do Firedac, \u00e9 poss\u00edvel trabalhar com agrega\u00e7\u00f5es em tempo de execu\u00e7\u00e3o no n\u00edvel do conjunto de dados?\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/agregacao-do-conjunto-dos-dados-firedec#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/agregacao-do-conjunto-dos-dados-firedec\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/agregacao-do-conjunto-dos-dados-firedec#primaryimage\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Object-Inspector.png\",\"contentUrl\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Object-Inspector.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/agregacao-do-conjunto-dos-dados-firedec#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Knowledgebase\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Delphi\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/knowledgebase-category\\\/arquivo-delphi\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Agrega\u00e7\u00f5es do conjunto de dados Firedac\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br#website\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\",\"name\":\"GDK Software\",\"description\":\"Zet de stip op je horizon\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Agrega\u00e7\u00f5es do conjunto de dados Firedac - GDK Software","description":"Voc\u00ea sabia que, em uma consulta ou tabela do Firedac, \u00e9 poss\u00edvel trabalhar com agrega\u00e7\u00f5es em tempo de execu\u00e7\u00e3o no n\u00edvel do conjunto de dados?","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:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/agregacao-do-conjunto-dos-dados-firedec","og_locale":"pt_BR","og_type":"article","og_title":"Agrega\u00e7\u00f5es do conjunto de dados Firedac","og_description":"Voc\u00ea sabia que, em uma consulta ou tabela do Firedac, \u00e9 poss\u00edvel trabalhar com agrega\u00e7\u00f5es em tempo de execu\u00e7\u00e3o no n\u00edvel do conjunto de dados?","og_url":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/agregacao-do-conjunto-dos-dados-firedec","og_site_name":"GDK Software","article_modified_time":"2023-07-14T16:10:06+00:00","og_image":[{"url":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/Object-Inspector.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. tempo de leitura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/agregacao-do-conjunto-dos-dados-firedec","url":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/agregacao-do-conjunto-dos-dados-firedec","name":"Agrega\u00e7\u00f5es do conjunto de dados Firedac - GDK Software","isPartOf":{"@id":"https:\/\/gdksoftware.com\/pt-br#website"},"primaryImageOfPage":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/agregacao-do-conjunto-dos-dados-firedec#primaryimage"},"image":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/agregacao-do-conjunto-dos-dados-firedec#primaryimage"},"thumbnailUrl":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/Object-Inspector.png","datePublished":"2023-07-11T20:42:39+00:00","dateModified":"2023-07-14T16:10:06+00:00","description":"Voc\u00ea sabia que, em uma consulta ou tabela do Firedac, \u00e9 poss\u00edvel trabalhar com agrega\u00e7\u00f5es em tempo de execu\u00e7\u00e3o no n\u00edvel do conjunto de dados?","breadcrumb":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/agregacao-do-conjunto-dos-dados-firedec#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/agregacao-do-conjunto-dos-dados-firedec"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/agregacao-do-conjunto-dos-dados-firedec#primaryimage","url":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/Object-Inspector.png","contentUrl":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/07\/Object-Inspector.png"},{"@type":"BreadcrumbList","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/agregacao-do-conjunto-dos-dados-firedec#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gdksoftware.com\/pt-br"},{"@type":"ListItem","position":2,"name":"Knowledgebase","item":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento"},{"@type":"ListItem","position":3,"name":"Delphi","item":"https:\/\/gdksoftware.com\/pt-br\/knowledgebase-category\/arquivo-delphi"},{"@type":"ListItem","position":4,"name":"Agrega\u00e7\u00f5es do conjunto de dados Firedac"}]},{"@type":"WebSite","@id":"https:\/\/gdksoftware.com\/pt-br#website","url":"https:\/\/gdksoftware.com\/pt-br","name":"GDK Software","description":"Zet de stip op je horizon","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gdksoftware.com\/pt-br?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"}]}},"_links":{"self":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/knowledge\/4662","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/knowledge"}],"about":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/types\/knowledge"}],"acf:post":[{"embeddable":true,"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/team\/1384"}],"wp:attachment":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/media?parent=4662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}