Más

¿Mostrar varios campos como etiquetas si un campo es nulo en QGIS?

¿Mostrar varios campos como etiquetas si un campo es nulo en QGIS?


Tengo algunos problemas al intentar mostrar varios campos para una sola etiqueta en QGIS. En QGIS2.6, intentar mostrar etiquetas para una característica que consta de varios campos da como resultado una etiqueta vacía si uno de los campos es nulo. Entonces, por ejemplo, en el cuadro de diálogo de expresión de etiqueta:

concat ("Sitio temporal", ' n', "Notas", ' n', "Función")

funcionará normalmente a menos que uno de los campos sea nulo, entonces no se mostrará ninguna etiqueta. Usando el '||' en cambio, el operador en el cuadro de diálogo de expresión también da como resultado el mismo comportamiento:

"Sitio temporal" || ' n' || "Notas" || ' n' || "Función"

¿Hay alguna forma de mostrar las etiquetas incluso si uno de los campos es nulo?


Utilice la función "Coalesce". Coalesce toma el primer valor no nulo de sus argumentos. Entonces esta expresión debería funcionar:

coalesce ("Sitio temporal", ") || ' n' || coalesce (" Notas ",") || ' n' || coalesce ("Función", ")

Actualización: esto ya no es un problema. En QGIS 2.10 y versiones posteriores, Concat ignora los valores nulos y ya no es necesaria la fusión. En su lugar, vea esta respuesta ¿Manejo de valores NULL en el etiquetado?


CONSULTA: pivotar varias columnas, número variable de filas

Hay 100 ingredientes por receta / versión. Me gustaría mostrar los datos de esta tabla de esta manera:

Debido a que en diferentes versiones de recetas, los ingredientes se pueden quitar o agregar, me gustaría mostrar tanto el ingrediente como el porcentaje por versión por receta. También existe la dificultad de que las diferentes recetas tienen un número diferente de versiones.

Ni siquiera estoy seguro de si esto es posible o por dónde empezar. Quizás con el PIVOTE ¿función?

¿Alguien podría señalarme en la dirección correcta?


Activar etiquetas

Para activar las etiquetas, seleccione una capa de entidades en el panel Contenido. En la cinta, en Capa de entidades, haga clic en la pestaña Etiquetado y haga clic en Etiqueta. . Para un mayor control sobre qué clases de etiquetas están etiquetadas para esa capa, cambie la clase de etiqueta que se muestra y desmarque Características de etiqueta en esta clase.

Para ver y cambiar la visibilidad de todas las clases de etiquetas, en el panel Contenido, haga clic en Mostrar por etiquetado . Enumerar por etiquetado muestra todas las clases de etiquetas y le permite reordenar las clases de etiquetas, cambiar las propiedades de etiquetado para varias clases de etiquetas a la vez o copiar y pegar propiedades de etiquetado entre clases de etiquetas.

Acceda a las propiedades básicas de etiquetado en la pestaña Etiquetado. Cambie el tamaño y el color de las etiquetas en el grupo Símbolo de texto.

Para obtener propiedades más avanzadas, abra el panel Clase de etiqueta haciendo clic en el iniciador del panel en el grupo Ubicación de símbolo o etiqueta de texto o haciendo clic en el botón Expresión o el botón Consulta SQL . También puede acceder al panel Clase de etiqueta desde el panel Contenido haciendo clic con el botón derecho en una capa de entidad y haciendo clic en Propiedades de etiquetado.


¿Mostrar varios campos como etiquetas si un campo es nulo en QGIS? - Sistemas de Información Geográfica

Las opciones cartográficas se encuentran en el centro de la creación de mapas para la comunicación. La forma en que decida representar sus datos determinará lo que comunica el mapa. Puede desviar la atención del lector de un detalle hacia otro. Puede distorsionar los datos para que el lector obtenga una imagen sesgada de la "realidad" subyacente de los datos del mapa.

Considere estos 2 mapas que muestran la población de cada estado en los Estados Unidos contiguos, donde el color más oscuro representa una población más alta. El primer mapa muestra la población total, mientras que el segundo mapa muestra la densidad de población (población por unidad de área). En el primer mapa, California muestra la población más grande y algunos de los estados del noreste muestran una población baja. Sin embargo, en el segundo mapa, California muestra una población algo baja. densidad, mientras que el noreste muestra la mayor población densidad. Ambos mapas representan los mismos datos temáticos generales (población), pero cada uno usa un método cartográfico diferente y cada mapa comunica una idea diferente. Utilizaría uno u otro de estos mapas dependiendo de las ideas que quiera comunicar.

Con frecuencia, se eligen diferentes símbolos de mapa debido a su impacto psicológico (por ejemplo, los símbolos rellenos de color verde y azul se utilizan a menudo para mostrar áreas "frías" o no amenazantes, mientras que el rojo se utiliza para mostrar áreas "calientes" o peligrosas). Los grosores de las líneas también confieren una importancia relativa a las diferentes características lineales (las carreteras interestatales generalmente se dibujan más gruesas que las carreteras del condado). Se pueden usar diferentes símbolos de puntos para indicar las características de los lugares (los mapas de los parques nacionales a menudo muestran servicios como botes de botes, senderos, áreas de picnic y baños con símbolos de marcadores especializados). Piense detenidamente en lo que desea comunicar y elija los símbolos de su mapa en consecuencia.

La clasificación es otro método para cambiar lo que desea comunicar con sus mapas. Las investigaciones han demostrado que es más difícil comprender o comparar una gran cantidad de objetos, valores, símbolos o colores. La clasificación le permite agrupar características similares en clases, menos clases son más fáciles de comparar entre sí. En los mapas anteriores, si se usaran más clases, las clases se volverían visualmente indistinguibles entre sí. También es más fácil diferenciar entre un gran número de clases de colores en rampa que representan valores numéricos (por ejemplo, población) que diferenciar entre un gran número de clases de valores categóricos (por ejemplo, origen étnico dominante).

Cualquier buen software GIS le dará la capacidad de cambiar rápida y fácilmente la forma en que se muestran los mapas, cambiando símbolos, colores o esquemas de clasificación.

Las Propiedades de capa de ArcGIS para simbología le permiten cambiar la simbología de las entidades de capa dentro del mapa. Existe una gran flexibilidad sobre cómo mostrar las funciones. Hay muchas paletas de símbolos integradas disponibles para entidades de área, línea o punto, y también es posible crear símbolos personalizados.

Para cambiar la simbología de una capa, haga clic con el botón izquierdo en el nombre de la capa y seleccione Propiedades. Dentro de Propiedades de la capa diálogo, el Simbología pestaña contiene los controles para alterar la simbología.

Se accede a la mayoría de los cambios cartográficos descritos en esta sección a través de Propiedades de capa para simbología.

Elegir un tipo de leyenda

Hay varios tipos de leyendas disponibles:

    Símbolo único (todas las entidades de una capa se dibujarán con el mismo símbolo)
    Utilice un solo símbolo cuando solo necesite mostrar las ubicaciones de las funciones.


10 respuestas 10

En general, siempre optaría por la solución más simple. En este caso, un solo campo para que el usuario escriba.

Con campos divididos, como el de 4 casillas que propone, agrega una carga cognitiva adicional al usuario.

  • "¿Necesito saltar manualmente a cada campo?"
  • "¿Lo hará el sistema por mí?"
  • "¿Qué pasa si presiono la pestaña yo mismo pero el formulario saltó automáticamente? ¿Habrá saltado al tercer campo en su lugar?"

Todas estas preguntas adicionales, tal vez de manera subconsciente, tal vez más de vanguardia en sus mentes, no son preguntas que ni siquiera se considerarían en un solo formulario de campo.

Claro, las opciones de 4 campos ayudan a la legibilidad, por lo que si el usuario ingresó su número incorrectamente, es más fácil para él volver a leer su entrada para ver qué área hizo mal. Pero esto todavía se puede mitigar en un solo campo. Tal como mostró anteriormente, puede representar la entrada del usuario con espacios en un solo campo.

Otra consideración son los usuarios de dispositivos móviles.. Si bien puede ser simple en una computadora de escritorio, un teléfono móvil tiene un teclado que necesita abrirse y cerrarse al ingresar al campo. Los diferentes dispositivos y sistemas operativos se comportan de manera diferente, pero es bastante probable que en el salto del campo 1 al campo 2, el teclado se cierre y se abra automáticamente, lo que provocará un destello discordante en la pantalla, y el usuario posiblemente intente hacer clic en el quinto dígito justo cuando se cierra el teclado. , moviendo así el cursor a otra área de la pantalla por completo, o simplemente perdiendo ese dígito de la entrada por completo.

Este problema móvil se ilustra muy bien en el blog de Baymard, donde también señalan que los usuarios móviles tienden a presionar manualmente en cada campo, algo que los usuarios de escritorio no hacen con tanta frecuencia.

Su propuesta es una buena idea, pero creo que entra en la categoría de "sobreingeniería". A menos que esté notando errores importantes de entrada del usuario en un solo campo, no creo que necesite introducir una alternativa. Podría arriesgarse a disminuir la usabilidad en lugar de mejorarla.

Esta respuesta y esta respuesta cubren algunos de los puntos muy bien, pero por alguna razón nadie está discutiendo el soporte de autocompletar.

No use 4 campos separados.

También, un número CC no es cuatro números de 4 dígitos, es un solo número largo. Algunas tarjetas de crédito ni siquiera tienen grupos de cuatro, en cuyo caso su entrada de cuatro campos ni siquiera tiene sentido, por ejemplo:

El verdadero que quiero agregar es que algunos navegadores ofrecen la opción de completar la información de la tarjeta de crédito por usted. Chrome, por ejemplo, tiene esta funcionalidad, y Safari en iOS 8 agregará automáticamente un botón "escanear tarjeta de crédito" habilitado para cámara a estos campos si los crea correctamente (consulte ese artículo). Y entonces el verdadero El campo CC "perfecto" desde una perspectiva de UX es un campo único con el nombre de campo apropiado (como "Número de tarjeta de crédito") y los atributos de activación específicos del navegador (como autocomplete = "cc-number" e id = "cc_number").

No intente inventar su propio método de entrada "conveniente" para esto. Siga los mismos métodos de entrada de número de tarjeta de crédito estándar que ya se utilizan comúnmente (campo único, nombre y atributos apropiados), porque los desarrolladores de navegadores son ya haciendo un esfuerzo para mejorar la UX de este tipo de campos, por lo que deja que se maneje en el lado del navegador y les brinda a los usuarios algo con lo que están familiarizados en lugar de algo inconveniente que también corre el riesgo de romper todas las características agradables que normalmente les brinda su navegador favorito.

Como alguien que usa tarjetas de crédito virtuales, estoy firmemente a favor de un solo campo. Cada vez que quiero pagar, la aplicación bancaria genera un nuevo número de tarjeta y es muy tedioso tener que copiar y pegar cuatro veces en lugar de una. Supongo que su formulario no llenará los 4 campos si pego 16 dígitos en el primero. ¿Lo hará?

Además, he visto varios diseños de 4 campos que eran increíblemente difíciles de usar. A veces, se requería presionar Retroceso para volver a un campo con un error tipográfico, en otros casos, se requería Shift + Tab. A veces, el campo al que saltó tenía su texto preseleccionado o borrado, por lo que era básicamente imposible predecir cómo se comportaría el formulario sin observarlo después de cada pulsación de tecla.

Solo dame un campo donde pueda pegar un número de tarjeta y permíteme usar Retroceso para corregir cualquier error tipográfico si escribo el número manualmente. Aquí hay algo que parece aceptable:

La solución más simple, si no necesariamente la mejor, es un campo único de tarjeta de crédito que permite al usuario ingresar cualquier cadena de dígitos. y espacios. Debería ser trivial para la lógica del lado del servidor eliminar los espacios de la cadena enviada antes de verificar si la cadena de dígitos resultante es o no un número de tarjeta de crédito válido. Si el usuario elige ingresar espacios al principio o al final o dividir los dígitos en lugares diferentes a los que están en la tarjeta, ¿entonces qué?

Insertar automáticamente los espacios para el usuario puede ser un poco más fácil de usar, pero es mucho más trabajo.

Varios campos con tabulación automática de uno a otro está bien, pero si acepta tarjetas que no sean Mastercard / Visa, entonces es mucho trabajo ajustar las longitudes de los campos para el tipo de tarjeta (por ejemplo, 4,6,5,0 para Amex) sobre la marcha (es decir, en un script del lado del navegador). En un sitio web de una compañía de tarjetas que, por definición, solo acepta un tipo de tarjeta, es claro y fácil. [Editar: OK-ish. Otras respuestas indican por qué es una desventaja para algunos usuarios]

Negarse a permitir que el usuario entre en espacios es hostil al usuario. Permitir que el usuario ingrese espacios y luego rechazar el número de tarjeta (¡correcto!) Como inválido después del envío es realmente abominable, hasta el punto de que podría rechazar a ese minorista mi costumbre en ese momento y, en cambio, comprarle a quien antes era mi segunda opción.

Luke Wroblewski, un experto en UX con grandes conocimientos sobre la creación de formularios eficientes, respondió a esta pregunta: use un solo campo de entrada numérico (aquí hay un video de cómo funciona esto).

Como puede ver en el video anterior de la demostración de Zachary, se usa un solo campo de entrada para capturar el número de la tarjeta de crédito primero. Si el número de la tarjeta de crédito no es válido, se muestra un error que impide que el usuario avance. Si el número de la tarjeta de crédito es válido, el icono de la tarjeta de crédito genérica cambia para reflejar el tipo de tarjeta ingresada. Esto elimina la necesidad de un selector o menú desplegable de "tipo" de tarjeta de crédito por separado y le asegura a alguien que su entrada ha sido entendida.

Una vez que se valida el número de la tarjeta de crédito, se desliza hacia la izquierda dejando solo los últimos cuatro dígitos finales como referencia y el siguiente conjunto de entradas aparece en la máscara: fecha de vencimiento, código CVV (seguridad) y código postal. Dado que todas estas son entradas numéricas, un conjunto de teclas programables de 0 a 9 es todo lo que se necesita para que las personas sigan avanzando en el teclado.

Dado que la fecha de vencimiento de una tarjeta de crédito no puede ser ni en el pasado ni en el futuro lejano, la máscara de entrada de nuevo ayuda a mantener a las personas alejadas de los errores. Los meses o años no válidos simplemente no serán aceptados. Después de agregar una fecha de vencimiento válida, el diseño de Square presenta otra excelente mejora. El icono de la tarjeta de crédito cambia para revelar dónde se encuentra el código CVV en la tarjeta específica que se usa para pagar. Este pequeño detalle ayuda a orientar a las personas sobre qué información se necesita a continuación.

Debido a que CVV y ZIP también son entradas numéricas, no hay ninguna razón para dejar el teclado de marcación durante el proceso de entrada de pago: no es necesario saltar entre varios campos de formulario. Zachary's también se aseguró de que las personas puedan usar su teclado (tabulador y tabulador de mayúsculas) y el mouse para moverse entre las distintas partes de esta máscara de entrada de pago.


Propiedades de campo Q a Z

Especifica cómo se determina una coincidencia cuando un usuario realiza una consulta por ejemplo (QBE) en el nivel medio:

  • En cualquier lugar (predeterminado): busca una coincidencia si el valor ingresado se encuentra en cualquier lugar del campo correspondiente. Por ejemplo, si un usuario ingresa Beto en el campo Remitente, la búsqueda devuelve todas las solicitudes enviadas por Bobby Jones, Bob Smith y Jill Bobbington.
  • Principal - Encuentra una coincidencia solo si el valor ingresado se encuentra al comienzo del campo correspondiente. Por ejemplo, si un usuario ingresa Beto en el campo Remitente, la búsqueda devuelve todas las solicitudes enviadas por Bob Smith y Bobby Jones, pero no las enviadas por Jill Bobbington.
  • Igual - Encuentra una coincidencia solo si el valor ingresado coincide exactamente con el valor en el campo correspondiente. Por ejemplo, para buscar solicitudes enviadas por Bob Smith, el usuario debe ingresar Bob Smith, con ortografía exacta y mayúsculas, en el campo Remitente. Sin embargo, para algunas bases de datos (como Microsoft SQL Server), la distinción entre mayúsculas y minúsculas depende de la configuración del DBMS subyacente, independientemente del QBE Match especificado.

Igual y Principal generalmente proporcionan un mejor rendimiento que En cualquier lugar. Úselos donde sea apropiado. Puede utilizar el cuadro de diálogo Preferencias (Preferencias de Windows & gt) para establecer un tipo de coincidencia QBE predeterminado para todos los campos de caracteres nuevos que no sean campos principales.

Una búsqueda en un campo de caracteres con el tipo de coincidencia QBE Anywhere realiza un escaneo completo de la tabla de la base de datos, leyendo cada registro en un formulario e ignorando los índices del campo. Las búsquedas en campos con el tipo de concordancia QBE Principal o Igual son generalmente más rápidas que las búsquedas en campos con el tipo de concordancia En cualquier lugar, especialmente si el campo está indexado. Consulte Definición de índices. Algunos operadores relacionales y comodines funcionan durante un QBE independientemente de la configuración de QBE Match. Esto significa que los usuarios pueden especificar una coincidencia exacta en un campo con la configuración QBE Match Anywhere mediante el operador relacional de signo igual (=). Los usuarios también pueden utilizar el comodín del signo de porcentaje (%) al principio de la cadena de búsqueda ( %a B C D ) para anular la configuración de Coincidencia de QBE Líder o Igual. Usando el comodín% en cualquier otro lugar de una cadena (a B C D% ) no anula el ajuste Igual. Anular la configuración inicial o igual anula los beneficios de rendimiento de usar esa configuración.

Nota: Los comportamientos descritos anteriormente se refieren a la búsqueda en una base de datos. Sin embargo, los campos configurados para la búsqueda de texto completo (FTS) presentan un comportamiento de búsqueda de texto completo.

  • Lista de alertas
  • Tabla basada en celdas
  • Tabla de vista de lista
  • Lista de resultados
  • Lista de alertas
  • Tabla basada en celdas
  • Tabla de vista de lista
  • Lista de resultados
  • Tabla de vista de árbol
  • Lista de alertas
  • Tabla basada en celdas
  • Tabla de vista de lista
  • Lista de resultados
  • Tabla de vista de árbol
  • Tabla basada en celdas
  • Tabla de vista de lista
  • Lista de resultados
  • Lista de alertas
  • Tabla basada en celdas
  • Tabla de vista de lista
  • Lista de resultados
  • Tabla de vista de árbol

Especifica el radio de redondez de las esquinas de un panel. El valor predeterminado es en blanco (sin esquinas redondeadas).

Nota: Las esquinas redondeadas se muestran en BMC Remedy Developer Studio

  • Lista de alertas
  • Tabla basada en celdas
  • Tabla de vista de lista
  • Lista de resultados
  • Lista de alertas
  • Tabla basada en celdas
  • Tabla de vista de lista
  • Lista de resultados
  • Personaje
  • Diario
  • Casilla de verificación
  • La lista desplegable
  • Boton de radio
  • Lista de aplicaciones
  • Visualización de datos
  • Vista

Especifica cómo se muestran las barras de desplazamiento:

  • Defecto - Muestra barras de desplazamiento solo cuando el contenido del campo no encaja completamente dentro del campo.
  • Espectáculo - Siempre muestra barras de desplazamiento.
  • Esconder - Oculta siempre las barras de desplazamiento.

Nota: Si el contenido de un campo (como un formulario de BMC Remedy AR System) tiene sus propias barras de desplazamiento, aparecerán incluso si oculta las barras de desplazamiento del campo en sí. Si puede ocultar las barras de desplazamiento del contenido, puede eliminar todas las barras de desplazamiento del campo.

  • Lista de alertas
  • Tabla basada en celdas
  • Tabla de vista de lista
  • Lista de resultados
  • Lista de alertas
  • Tabla basada en celdas
  • Tabla de vista de lista
  • Lista de resultados

Especifica si una URL se activa cuando un usuario escribe una dirección URL (como http://www.bmc.com) en un campo de caracteres. El valor predeterminado es Falso, lo que significa que la URL no se activa dentro del campo.

Si el campo no está vacío y Mostrar URL se establece en Verdadero, los usuarios no pueden escribir directamente en el campo. Deben abrir el cuadro de expansión para editar el contenido del campo.

Especifica si las barras divisorias entre los paneles en un soporte de panel divisor son visibles y se pueden arrastrar para cambiar el tamaño de los paneles. El valor predeterminado es Visible.

  • Visible - La barra divisora ​​es visible y se puede arrastrar.
  • Desactivado - La barra divisora ​​no es visible y no se puede arrastrar.
  • Invisible - La barra divisora ​​no es visible pero se puede arrastrar.
  • Lista de aplicaciones
  • Botón
  • Compuesto (todos)
  • Datos (todos)
  • Visualización de datos
  • Navegación (todos)
  • Recortar texto
  • Vista
  • Lista de alertas
  • Tabla basada en celdas
  • Tabla de vista de lista
  • Lista de resultados
  • Tabla de vista de árbol
  • Tablas (todas)
  • Archivos adjuntos
  • Tabla basada en celdas
  • Tabla de vista de lista
  • Lista de alertas
  • Tabla de vista de lista
  • Lista de resultados
  • Tabla de vista de árbol
  • Linea horizontal
  • Panel
  • Caja de molduras
  • Linea vertical
  • Lista de alertas
  • Tabla basada en celdas
  • Tabla de vista de lista
  • Lista de resultados
  • Tabla de vista de árbol
  • Lista de alertas
  • Tabla basada en celdas
  • Tabla de vista de lista
  • Lista de resultados
  • Tabla de vista de árbol

Si la propiedad Alineación se establece en Izquierda (predeterminado), especifica la posición horizontal del borde izquierdo del campo en relación con el lado izquierdo del formulario. Si la propiedad Alineación se establece en Derecha, especifica la posición horizontal del borde derecho del campo en relación con el lado derecho del formulario. Las configuraciones de X e Y son relativas a la esquina superior izquierda o derecha del formulario. Por ejemplo, X = 0, Y = 0 y Alineación = Izquierda es la esquina superior izquierda del formulario.

Nota: Si un campo está anclado al lado derecho de un panel en un soporte de panel, el valor X del campo puede cambiar si ocurre alguna de las siguientes acciones:


¿Quizás un diseño tabular tradicional no es el enfoque correcto de la interfaz de usuario? Podría considerar filas de altura variable para que aparezcan varios valores verticalmente en una celda, es decir,

Puede probar algo como esto, la forma más común y familiar con el usuario.

Tener dos valores en una celda significa que presumiblemente debe diferenciar los dos datos. Diferenciarlos por estar a ambos lados de una coma puede no hacerlos notorios si los valores mismos pueden ser bastante largos, por lo que necesita un enfoque alternativo.

Sin embargo, desafortunadamente, esto a menudo significa tener un elemento primario y secundario que puede no ser lo que desea. Algunas opciones pueden ser más o menos útiles si alguno de los elementos puede estar presente pero no el otro.

  • use el estilo de fuente (por ejemplo, color o peso) para distinguir los dos
  • use un color de fondo (¡no demasiado brillante!) y divida la celda en dos partes iguales izquierda / derecha o arriba / abajo
  • use la posición y justifíquelos a izquierda y derecha, o alinéelos arriba y abajo
  • dividir teóricamente la celda en dos usando una línea divisoria tenue que no alcanza la extensión completa de la celda (horz o vertical)
  • use corchetes alrededor del segundo elemento si, por ejemplo, se trata de una conversión o diferenciador que está relacionado con el primer elemento
  • use un icono o glifo discreto para prefijar cada elemento
  • use una barra inclinada si la indicación es que el primero o el segundo elemento es utilizable
  • use algún otro símbolo para implicar la relación entre los dos elementos

Dentro de esa última opción podría haber una pista sobre su respuesta:

  • ¿Cuál es la relación entre los dos elementos, si existe?
  • ¿Cómo quiere representar esa relación al usuario?

Utilice algún mecanismo que no solo presente los dos elementos, sino que ayude a agregar valor al usuario al indicar su significado, su igualdad, su relación o cómo asuntos que hay dos elementos en la celda.

Para ser honesto, no creo que podamos responder la pregunta sin.

  • haciendo muchas suposiciones
  • especular sobre posibles casos de uso
  • presentando muchas opciones que pueden ser relevantes o no

. como probablemente he hecho aquí.

No quiero discutir con los que dicen "Deberían repensar sus mesas". Tengo muchas tablas que tienen campos cuyo contenido es. ¡liza!

Si alguna vez trabaja con postGIS o cualquier base de datos geográfica, encontrará muchos ejemplos de datos de lista almacenados en campos (los polígonos se almacenan como listas de coordenadas). También puede tener "listas de cosas" en formularios de selección. Incluso tengo "listas de listas" en algunas aplicaciones web.

Sí, la gestión de listas es una molestia, pero. ¿Por qué no? No hay mucha diferencia con las listas generadas dinámicamente a partir de tablas y es ideal para valores estáticos o valores que no cambian con frecuencia.

Utilizo Select2 para mostrar datos en formularios, incluso con datos moderadamente largos. Los datos se almacenan como CSV (valores separados por comas) y se pueden tratar fácilmente en javascript, php o incluso en SQL "SELECT * WHERE Id IN (list)"

Este es un ejemplo de formulario de selección con muchas listas.

Este otro ejemplo contiene listas de listas.

Puede completar el control "seleccionar" con datos de una tabla y almacenar el CSV resultante de inmediato. Rapido y facil.


2 respuestas 2

Supongo que tiene índices adecuados en las tablas de las subconsultas. Hice una burla de algunos datos de prueba rápida y puse 10 millones de filas en la tabla A. No estaba dispuesto a crear 30 tablas, así que solo creé 3 para la expresión CASE. Creo que 3 es suficiente para mostrar los principios generales.

Inhabilité conjuntos de resultados y ejecuté la siguiente consulta en SSMS:

Tomó alrededor de 0,723 segundos. Estoy haciendo pruebas bastante poco científicas porque no sé nada de tus datos. En cualquier caso, con las consultas en serie no podemos esperar un resultado mejor que 0,7 segundos. Esa es nuestra línea de base.

La forma más eficaz de escribir esta consulta es sin ningún tipo de combinación. La clave es que la expresión CASE solo devolverá 3 (o 30) valores únicos si encuentra una coincidencia. Puede guardar los resultados en variables locales y usarlos en la consulta. La consulta a continuación finaliza en alrededor de 1.044 segundos:

Para otra opción, puede escribir la consulta con uniones (donde podemos reescribir la expresión CASE en una forma más compacta, usando COALESCE (). Esto terminó en alrededor de 2.314 segundos:

Puede obtener un tiempo de ejecución y un plan de consulta casi idénticos escribiendo la consulta de esta manera:

La consulta original en la pregunta tiene un problema: SQL Server está haciendo una clasificación inútil antes de la unión de bucle anidado. Esa consulta finaliza en alrededor de 5.838 segundos en mi máquina.

El indicador de seguimiento 8690 elimina la clasificación y los carretes de la mesa. La consulta se ejecuta en unos 7.479 segundos con el indicador de seguimiento 8690, así que supongo que los spools son útiles para esta consulta.


Obtener otro valor de campo en formato de columna JSON

He estado investigando la nueva y agradable funcionalidad de formato de columna JSON en SharePoint Online.

No puedo encontrar una manera de incluir valores de otras columnas en mi resultado de visualización. Este debería ser un escenario muy común, p. Ej. formatear el campo de título según el valor de un campo de estado en lugar de tener que mostrar el campo de estado y formatear ese campo.

Pero hasta donde puedo ver, no hay soporte para obtener datos de otro campo del elemento actual en la declaración de formato. En todos los ejemplos se utiliza & quottxtContent & quot: & quot @ currentField & quot. Me encantaría poder acceder a & quot @ currentItem & quot o similar.

¿Me estoy perdiendo de algo? No veo cómo el formato JSON personalizado podría ayudarme tampoco.

Después de mirar detenidamente este ejemplo, pude hacer que algunos ejemplos funcionen: Aumente los campos de personas usando el formato de columna en SharePoint. Pero parece ser bastante inestable por ahora.

Aquí hay una lista a partir de 2018-01-17 de lo que puedo hacer que funcione y lo que no funciona:

No he probado demasiado, pero los campos problemáticos parecen ser:

  • Algunos campos internos de SharePoint, p. Ej. Título
  • Campos sin texto (tal vez aquellos que involucran algún mecanismo de búsqueda) que no se definen directamente en la biblioteca, sino que se declaran, p. Ej. en el nivel de colección de sitios ($ SomeParentChoiceColumn en el ejemplo anterior)

Actualización 2018-07-24:

Respondido por un miembro de la organización de Microsoft SharePoint en un problema en el repositorio de github sp-dev-docs.

Solo puede hacer referencia a otras columnas que devuelve la vista (el ID siempre se devuelve incluso cuando no se muestra). Esto se debe a que el formato se aplica en el lado del cliente y no se realiza ninguna recuperación adicional más allá de los resultados de la vista inicial.

Esto también explica el comportamiento extraño que estaba viendo donde funcionaba temporalmente al abrir el panel, ya que estaba recuperando la información adicional que luego la pone a disposición para formatear.


"Imagen de página" es un tipo especial de campo de SharePoint definido como Sellado. Esto significa que no se puede eliminar de la interfaz de usuario una vez agregado. Sin embargo, se puede eliminar mediante programación:

Como referencia, el campo se define en C: Archivos de programa Archivos comunes Microsoft Shared extensiones de servidor web 12 TEMPLATE FEATURES PublishingResources PublishingColumns.xml.

Crédito de atribución: mi respuesta en Stack Overflow.

Además de estar sellado, un campo puede ser de solo lectura, oculto, etc. Todos estos factores pueden evitar que el campo se elimine. El método más adecuado para eliminar un campo de lista es el siguiente:

He visto esto antes cuando agrega campos que SharePoint considera que no se pueden eliminar.

Probablemente tendrá que eliminarlo mediante programación o una herramienta como SharePointManager

¿Qué tal ocultar el campo mediante la gestión de tipos de contenido?

Configuración de lista -> Configuración avanzada -> Permitir administrar tipos de contenido Haga clic en Tipo de contenido -> haga clic en el campo Imagen de página -> ¿Seleccionar oculto?

  1. Primero vaya a la opción Inicio en la página predeterminada
  2. Haga clic en el nombre de la lista que ha creado.
  3. Haga clic en la opción Configuración de lista en el panel de la pestaña de configuración.
  4. Haga clic en el nombre de la columna en la opción Columnas
  5. Entonces tienes la opción de eliminar. Presiónelo y se eliminará.

Ver el vídeo: Trucos para etiquetado avanzado con QGIS