{"id":4965,"date":"2023-12-07T13:08:25","date_gmt":"2023-12-07T12:08:25","guid":{"rendered":"https:\/\/gdksoftware.com\/knowledgebase\/working-with-firedac-localsql"},"modified":"2024-01-18T17:27:50","modified_gmt":"2024-01-18T16:27:50","slug":"trabalhando-com-o-firedac-localsql","status":"publish","type":"knowledge","link":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/trabalhando-com-o-firedac-localsql","title":{"rendered":"Trabalhando com o Firedac LocalSQL"},"content":{"rendered":"<p>Quem conhece ou usa o componente <strong>LocalSQL<\/strong> do Firedac? Ou o <strong>BatchMove<\/strong>? Para a maioria dos desenvolvedores, esses componentes s\u00e3o relativamente desconhecidos, embora sejam muito \u00fateis. Em dois blogs, quero explicar o valor agregado desses componentes e mostrar como eles funcionam. Este blog \u00e9 sobre o componente LocalSQL.<\/p>\n<h5>O valor agregado<\/h5>\n<p>Usando o conjunto de dados LocalSQL, \u00e9 poss\u00edvel combinar dados de diferentes conjuntos de dados em uma consulta do Firedac. O componente garante que os conjuntos de dados fiquem dispon\u00edveis como se fossem tabelas de banco de dados. Portanto, os conjuntos de dados podem ser consultados com uma consulta SQL de um componente TFDQuery.<\/p>\n<p>Isso \u00e9 muito \u00fatil se voc\u00ea tiver dados de fontes diferentes. Por exemplo, de v\u00e1rios bancos de dados. Ou parcialmente na mem\u00f3ria e parcialmente no banco de dados. Ou de diferentes componentes de conjunto de dados, por exemplo, ADO e Firedac. Com o LocalSQL, voc\u00ea pode reunir esses dados com muita facilidade por meio de uma simples consulta SQL. Ele permite mostrar os dados combinados de forma muito simples em uma grade ou criar estat\u00edsticas combinadas.<\/p>\n<p>Abaixo, apresento um exemplo, combinando dados de um CSV com dados do banco de dados. No banco de dados, armazenei clientes com um ID e um nome. No CSV, apenas o ID do cliente \u00e9 usado. Ao exibir o conte\u00fado do CSV, quero mostrar o nome do cliente diretamente. Isso pode ser feito com o LocalSQL sem muito esfor\u00e7o.<\/p>\n<h5>O projeto b\u00e1sico<\/h5>\n<p>Abaixo, voc\u00ea pode ver a configura\u00e7\u00e3o do meu aplicativo. \u00c0 esquerda est\u00e1 a conex\u00e3o com o banco de dados que cont\u00e9m a tabela Customer. Ela \u00e9 lida por meio da QueryCustomers. \u00c0 direita, voc\u00ea v\u00ea o CsvDataset, um Firedac MemTable. Nele, o CsvMove (TFDBatchMove) carrega os dados do CSV.<\/p>\n<p>No meio, voc\u00ea v\u00ea o componente LocalSQL, que chamei de CombinedLocalSQL. Abaixo, esse componente usa SQLite e, portanto, requer uma conex\u00e3o SQLite. Voc\u00ea n\u00e3o precisa configurar mais essa conex\u00e3o, basta indicar que o driver \u00e9 SQLite. Nesse caso, essa \u00e9 a conex\u00e3o LocalSQLConnection. O componente CombinedDataset \u00e9 um TFDQuery que cont\u00e9m a consulta SQL que coleta os dados dos conjuntos de dados.<\/p>\n<p>A grade mostra primeiro duas colunas com os dados do cliente do banco de dados. As tr\u00eas colunas seguintes v\u00eam do CSV.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-4943\" src=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-demo-300x194.png\" alt=\"\" width=\"702\" height=\"454\" srcset=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-demo-300x194.png 300w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-demo-768x496.png 768w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-demo.png 798w\" sizes=\"(max-width: 702px) 100vw, 702px\" \/><\/p>\n<h5>A configura\u00e7\u00e3o<\/h5>\n<p>O componente LocalSQL, conforme mencionado anteriormente, disponibiliza conjuntos de dados como se fossem tabelas de banco de dados. Para que isso seja poss\u00edvel, especificamos quais conjuntos de dados queremos usar e qual &#8220;nome de tabela&#8221; ser\u00e1 dado a eles. Nas propriedades do componente LocalSQL, voc\u00ea encontrar\u00e1 a op\u00e7\u00e3o &#8220;DataSets&#8221; para essa finalidade (veja as imagens abaixo). Adicione os conjuntos de dados e d\u00ea a eles o nome que voc\u00ea deseja usar como o nome da tabela na consulta.<\/p>\n<p>Ao definir o componente LocalSQL como Ativo, voc\u00ea poder\u00e1 executar a consulta em tempo real depois disso e adicionar facilmente os campos, por exemplo. Tome cuidado com isso, pois depois de executar a consulta, os conjuntos de dados subjacentes tamb\u00e9m s\u00e3o definidos como Active.<\/p>\n<p><img decoding=\"async\" class=\"size-medium wp-image-4951 alignnone\" src=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-properties-300x271.png\" alt=\"\" width=\"300\" height=\"271\" srcset=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-properties-300x271.png 300w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-properties.png 372w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\u00a0 \u00a0 \u00a0 <img decoding=\"async\" class=\"size-medium wp-image-4947 alignnone\" src=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-datasets-300x300.png\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-datasets-300x300.png 300w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-datasets-150x150.png 150w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-datasets.png 372w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<h5>A consulta combinada<\/h5>\n<p>Usamos uma consulta Firedac para aplicar o LocalSQL. A conex\u00e3o dessa consulta \u00e9 a mesma que a conex\u00e3o do LocalSQL. E isso \u00e9 tudo. Agora podemos come\u00e7ar a criar a consulta como se tiv\u00e9ssemos uma tabela Customer e uma tabela CsvLine.<\/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;\">SELECT<\/span> <span style=\"color: #333333;\">*<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">FROM<\/span> Customer <span style=\"color: #008800; font-weight: bold;\">c<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">JOIN<\/span> CsvLine csv <span style=\"color: #008800; font-weight: bold;\">ON<\/span> (csv.CustomerId <span style=\"color: #333333;\">=<\/span> <span style=\"color: #008800; font-weight: bold;\">c<\/span>.CustomerId)\r\n<\/pre>\n<\/div>\n<p>E, \u00e9 claro, voc\u00ea pode estender e usar isso com todas as possibilidades existentes no SQL (SQLite). Pense na cl\u00e1usula WHERE, mas tamb\u00e9m nas fun\u00e7\u00f5es de integra\u00e7\u00e3o, como SUM, COUNT etc. A consulta Firedac funciona como de costume.<\/p>\n<h5>Em resumo<\/h5>\n<p>O componente LocalSQL abre uma diversidade de possibilidades para combinar, filtrar e integrar dados. Ele \u00e9 amplamente aplic\u00e1vel porque suporta todas as formas de conjuntos de dados. Ele pode tornar muito mais simples conjuntos de dados complicados com campos de pesquisa. E funciona de forma r\u00e1pida e f\u00e1cil. \u00c9 altamente recomend\u00e1vel aplic\u00e1-lo em seus projetos.<\/p>\n","protected":false},"featured_media":0,"parent":0,"template":"","class_list":["post-4965","knowledge","type-knowledge","status-publish","hentry","knowledge-category-arquivo-delphi"],"acf":{"author":1384,"type_hero":"compact","hero_image":4959,"hero_image_position":"","hero_title":"Trabalhando com o Firedac LocalSQL","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.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Trabalhando com o Firedac LocalSQL - GDK Software<\/title>\n<meta name=\"description\" content=\"O componente LocalSQL abre uma diversidade de possibilidades para combinar, filtrar e integrar 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\/trabalhando-com-o-firedac-localsql\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Trabalhando com o Firedac LocalSQL\" \/>\n<meta property=\"og:description\" content=\"O componente LocalSQL abre uma diversidade de possibilidades para combinar, filtrar e integrar dados.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/trabalhando-com-o-firedac-localsql\" \/>\n<meta property=\"og:site_name\" content=\"GDK Software\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-18T16:27:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-demo-300x194.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=\"5 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\\\/trabalhando-com-o-firedac-localsql\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/trabalhando-com-o-firedac-localsql\",\"name\":\"Trabalhando com o Firedac LocalSQL - GDK Software\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/trabalhando-com-o-firedac-localsql#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/trabalhando-com-o-firedac-localsql#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/LocalSQL-demo-300x194.png\",\"datePublished\":\"2023-12-07T12:08:25+00:00\",\"dateModified\":\"2024-01-18T16:27:50+00:00\",\"description\":\"O componente LocalSQL abre uma diversidade de possibilidades para combinar, filtrar e integrar dados.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/trabalhando-com-o-firedac-localsql#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/trabalhando-com-o-firedac-localsql\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/trabalhando-com-o-firedac-localsql#primaryimage\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/LocalSQL-demo-300x194.png\",\"contentUrl\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/LocalSQL-demo-300x194.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/trabalhando-com-o-firedac-localsql#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\":\"Trabalhando com o Firedac LocalSQL\"}]},{\"@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":"Trabalhando com o Firedac LocalSQL - GDK Software","description":"O componente LocalSQL abre uma diversidade de possibilidades para combinar, filtrar e integrar 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\/trabalhando-com-o-firedac-localsql","og_locale":"pt_BR","og_type":"article","og_title":"Trabalhando com o Firedac LocalSQL","og_description":"O componente LocalSQL abre uma diversidade de possibilidades para combinar, filtrar e integrar dados.","og_url":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/trabalhando-com-o-firedac-localsql","og_site_name":"GDK Software","article_modified_time":"2024-01-18T16:27:50+00:00","og_image":[{"url":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-demo-300x194.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. tempo de leitura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/trabalhando-com-o-firedac-localsql","url":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/trabalhando-com-o-firedac-localsql","name":"Trabalhando com o Firedac LocalSQL - GDK Software","isPartOf":{"@id":"https:\/\/gdksoftware.com\/pt-br#website"},"primaryImageOfPage":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/trabalhando-com-o-firedac-localsql#primaryimage"},"image":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/trabalhando-com-o-firedac-localsql#primaryimage"},"thumbnailUrl":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-demo-300x194.png","datePublished":"2023-12-07T12:08:25+00:00","dateModified":"2024-01-18T16:27:50+00:00","description":"O componente LocalSQL abre uma diversidade de possibilidades para combinar, filtrar e integrar dados.","breadcrumb":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/trabalhando-com-o-firedac-localsql#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/trabalhando-com-o-firedac-localsql"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/trabalhando-com-o-firedac-localsql#primaryimage","url":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-demo-300x194.png","contentUrl":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/12\/LocalSQL-demo-300x194.png"},{"@type":"BreadcrumbList","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/trabalhando-com-o-firedac-localsql#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":"Trabalhando com o Firedac LocalSQL"}]},{"@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\/4965","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=4965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}