{"id":1307,"date":"2014-06-26T11:00:20","date_gmt":"2014-06-26T10:00:20","guid":{"rendered":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?p=1307"},"modified":"2014-06-26T09:07:39","modified_gmt":"2014-06-26T08:07:39","slug":"sharepoint-realizar-consultas-multiples-listas","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-realizar-consultas-multiples-listas\/","title":{"rendered":"SharePoint, realizar consultas a m\u00faltiples listas"},"content":{"rendered":"<p>Una pregunta recurrente dentro de los foros <a href=\"http:\/\/social.msdn.microsoft.com\/Forums\/es-es\/home?forum=mossdeves\" target=\"_blank\">MSDN sobre SharePoint <\/a>o entre desarrolladores que empiezan sobre SharePoint es: \u00bfC\u00f3mo se puede hacer una consulta sobre m\u00e1s de una lista? Pues bien, en este post vamos a resolver esta duda. Vamos a ver c\u00f3mo podemos realizar una consulta sobre m\u00e1s de una lista, cu\u00e1les son sus ventajas y desventajas y en qu\u00e9 escenarios son\u00a0convenientes utilizarlas.<\/p>\n<p><!--more--><\/p>\n<p>Partimos de la base que SharePoint no es la soluci\u00f3n adecuada para plantear una soluci\u00f3n relacional y tener, por ejemplo, una soluci\u00f3n para gestionar los movimientos contables de una empresa en los que hay multitud de relaciones entre todos las tablas.<\/p>\n<p>El\u00a0principal inconveniente que tienen los desarrolladores n\u00f3veles cuando afrontan un proyecto de SharePoint es intentar buscar una similitud entre SharePoint y una Base de Datos. No obstante,\u00a0hay una diferencia clara: \u00a0el lenguaje para buscar una lista\/biblioteca de SharePoint no es igual de \u00e1gil ni c\u00f3modo que el de SQL.<\/p>\n<p>Caml Query es un lenguaje propio para hacer consultas sobre SharePoint y solamente\u00a0piensa para realizar consultas sobre una \u00fanica lista. Esto hace que se intenten anidar bucles de consultas que finalmente lo \u00fanico que hacen es penalizar el rendimiento y hacer las consultas muy lentas. \u00a0Para solventar estos inconvenientes de trabajar con listas, hay que plantear una soluci\u00f3n con una buena \u00abArquitectura de la Informaci\u00f3n\u00bb y utilizar t\u00e9cnicas para <a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/2013\/02\/26\/sharepoint-modulo-de-persistencia-de-datos-si-o-no\/\" target=\"_blank\">plantear un correcto acceso a las listas<\/a>.<\/p>\n<h2>\u00bfEs posible consultar sobre m\u00e1s de una lista?<\/h2>\n<p>Ahora bien, dentro del Modelo de Objetos de Servidor, tenemos el\u00a0objeto\u00a0<a href=\"http:\/\/msdn.microsoft.com\/es-es\/library\/microsoft.sharepoint.spsitedataquery.aspx\" target=\"_blank\">SPSiteDataQuery<\/a>. Este objeto permite realizar consultas Caml Query que se ejecuta sobre varias listas de un determinado sitio. Es decir, si yo tengo varias listas y quiero consultar los elementos que empiecen por la letra A, con este objeto (y con una \u00fanica consulta) puedo obtener estos elementos, ahorr\u00e1ndome hacer una consulta por cada lista en la que quiero realizar esta consulta.<\/p>\n<p><strong>Propiedades de SPSiteDataQuery<\/strong><\/p>\n<p>Es un objeto muy simple. Sus principales propiedades son:<\/p>\n<ul>\n<li>\u00a0Web: \u00c1mbito donde se va a realizar la consulta<\/li>\n<li>Lists: Identificador de las listas o tipo de listas a consultas<\/li>\n<li>ViewFields: Campos que queremos visualizar<\/li>\n<li>Query: Consulta CamlQuery<\/li>\n<li>RowLimit: N\u00famero de elementos a mostrar<\/li>\n<\/ul>\n<p>Ejemplo:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nSPSiteDataQuery dataQuery = new SPSiteDataQuery();\r\n            dataQuery.Webs = &quot;&lt;Webs Scope=\\&quot;Site\\&quot;&gt;&quot;;\r\n            dataQuery.Lists = &quot;&lt;Lists&gt;&lt;List ID='11111-222' \/&gt;&lt;\/Lists&gt;&quot;;\r\n            dataQuery.ViewFields = allViewFields;\r\n            dataQuery.Query = query;\r\n            dataQuery.RowLimit = rowLimit;\r\n            var dt = web.GetSiteData(dataQuery);\r\n<\/pre>\n<p><strong>Ventajas<\/strong><br \/>\nLa principal ventaja que tiene este tipo de consulta es\u00a0que\u00a0el rendimiento de la misma es muy bueno. Es sorprendente que tarde el mismo tiempo en una consulta CamlQuery de una lista que en muchas listas. Dentro de las pruebas que hemos realizado en entornos de desarrollos, hemos comprobado que para listas con m\u00e1s de 1.000 elementos se ha comportado con tiempos de respuestas inferiores al segundo.<\/p>\n<p><strong>Desventajas<\/strong><br \/>\nDesde nuestro punto de vista, estas consultas tienen dos inconvenientes:<br \/>\n1.- No tiene paginaci\u00f3n.<br \/>\n2.- La consulta no mezcla diversos templates de listas, es decir, la consulta no devuelve datos de biblioteca de documentos y una lista gen\u00e9rica.<\/p>\n<p><strong>Cu\u00e1ndo utilizarla<\/strong><br \/>\nDado su gran rendimiento, dentro del equipo surgi\u00f3 la idea de utilizar este objeto en lugar del SPSite ya que puedes hacer consulta sobre una \u00fanica lista. Pero, dado que no tiene paginaci\u00f3n y el coste de tiempo sobre una lista es el mismo, descartamos esta opci\u00f3n.<br \/>\nEste objeto se debe de utilizar cuando deseamos mostrar una serie de elementos que est\u00e1n en varias listas\/bibliotecas cumpliendo una determinada condici\u00f3n. Por ejemplo, en el proyecto que estamos desarrollando lo hemos utilizado. Es una gesti\u00f3n documental dividida por estados. Dependiendo del estado en el que se encuentra, los usuarios pueden visualizar unos documentos u otros. Esta objeto\u00a0nos viene como anillo al dedo.<\/p>\n<h2>M\u00e1s opciones de consulta entre varias listas<\/h2>\n<p>El mundo del desarrollo en SharePoint es bastante amplio y el hecho de poder plantear varias soluciones para un \u00fanico requisito nos parece que es algo que engrandece a la plataforma. \u00bfConoc\u00e9is otra forma de realizar consultas a m\u00faltiples listas? Haciendo uso del servicio de b\u00fasqueda. Aunque esta forma, tiene un gran inconveniente: para mostrar los datos debemos de asegurarnos que el contenido del sitio est\u00e1 indexado en la b\u00fasqueda porque sino seguro que no nos muestran los \u00faltimos resultados. Este handicap, en entornos normales, hace que descartemos esta opci\u00f3n para construir alg\u00fan proceso dependiendo de este servicio.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>Una pregunta recurrente dentro de los foros MSDN sobre SharePoint o entre desarrolladores que empiezan sobre SharePoint es: \u00bfC\u00f3mo se puede hacer una consulta sobre m\u00e1s de una lista? Pues bien, en este post vamos a resolver esta duda. Vamos &hellip; <a href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-realizar-consultas-multiples-listas\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[81,26],"class_list":["post-1307","post","type-post","status-publish","format-standard","hentry","category-buenas-practicas","tag-caml-query","tag-sharepoint"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>SharePoint, realizar consultas a m\u00faltiples listas - Desarrollando sobre SharePoint<\/title>\n<meta name=\"description\" content=\"Vamos a ver como podemos realizar una consulta sobre m\u00e1s de una lista, cuales son sus ventajas, desventajas y en que escenarios es conveniente utilizarlas.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-realizar-consultas-multiples-listas\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"SharePoint, realizar consultas a m\u00faltiples listas - Desarrollando sobre SharePoint\" \/>\n<meta name=\"twitter:description\" content=\"Vamos a ver como podemos realizar una consulta sobre m\u00e1s de una lista, cuales son sus ventajas, desventajas y en que escenarios es conveniente utilizarlas.\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adri\u00e1n D\u00edaz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-realizar-consultas-multiples-listas\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-realizar-consultas-multiples-listas\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"SharePoint, realizar consultas a m\u00faltiples listas\",\"datePublished\":\"2014-06-26T10:00:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-realizar-consultas-multiples-listas\\\/\"},\"wordCount\":779,\"commentCount\":2,\"keywords\":[\"caml query\",\"sharepoint\"],\"articleSection\":[\"buenas practicas\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-realizar-consultas-multiples-listas\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-realizar-consultas-multiples-listas\\\/\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-realizar-consultas-multiples-listas\\\/\",\"name\":\"SharePoint, realizar consultas a m\u00faltiples listas - Desarrollando sobre SharePoint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\"},\"datePublished\":\"2014-06-26T10:00:20+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"description\":\"Vamos a ver como podemos realizar una consulta sobre m\u00e1s de una lista, cuales son sus ventajas, desventajas y en que escenarios es conveniente utilizarlas.\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-realizar-consultas-multiples-listas\\\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/\",\"name\":\"Desarrollando sobre SharePoint\",\"description\":\"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\",\"name\":\"Adri\u00e1n D\u00edaz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"caption\":\"Adri\u00e1n D\u00edaz\"},\"description\":\"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/author\\\/desarrollandosobresharepoint\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SharePoint, realizar consultas a m\u00faltiples listas - Desarrollando sobre SharePoint","description":"Vamos a ver como podemos realizar una consulta sobre m\u00e1s de una lista, cuales son sus ventajas, desventajas y en que escenarios es conveniente utilizarlas.","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:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-realizar-consultas-multiples-listas\/","twitter_card":"summary_large_image","twitter_title":"SharePoint, realizar consultas a m\u00faltiples listas - Desarrollando sobre SharePoint","twitter_description":"Vamos a ver como podemos realizar una consulta sobre m\u00e1s de una lista, cuales son sus ventajas, desventajas y en que escenarios es conveniente utilizarlas.","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-realizar-consultas-multiples-listas\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-realizar-consultas-multiples-listas\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"SharePoint, realizar consultas a m\u00faltiples listas","datePublished":"2014-06-26T10:00:20+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-realizar-consultas-multiples-listas\/"},"wordCount":779,"commentCount":2,"keywords":["caml query","sharepoint"],"articleSection":["buenas practicas"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-realizar-consultas-multiples-listas\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-realizar-consultas-multiples-listas\/","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-realizar-consultas-multiples-listas\/","name":"SharePoint, realizar consultas a m\u00faltiples listas - Desarrollando sobre SharePoint","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website"},"datePublished":"2014-06-26T10:00:20+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"description":"Vamos a ver como podemos realizar una consulta sobre m\u00e1s de una lista, cuales son sus ventajas, desventajas y en que escenarios es conveniente utilizarlas.","inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-realizar-consultas-multiples-listas\/"]}]},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/","name":"Desarrollando sobre SharePoint","description":"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb","name":"Adri\u00e1n D\u00edaz","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","caption":"Adri\u00e1n D\u00edaz"},"description":"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/author\/desarrollandosobresharepoint\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/comments?post=1307"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1307\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media?parent=1307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/categories?post=1307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/tags?post=1307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}