viernes, 10 de mayo de 2019

Como comparar dos conjuntos de resultados de consultas SQL en SQL-SERVER


Cuando estamos analizando datos, en ocasiones hay varios caminos para llegar a un mismo resultado. Pero deseamos saber, las diferencias entre una consulta y otra.

Puede ser el comparar dos tablas que deberían ser iguales y analizar las diferencias, o consultar dos conjuntos de resultados y analizar las diferencias.

Para esto tenemos las instrucciones EXCEPT e INTERSECT. Estas instrucciones son muy similares, devuelven las diferencias que existen entre dos conjuntos de resultados SQL.

Para poder ejecutar estas instrucciones,  hay dos reglas básicas:

  • El número y el orden de las columnas debe ser el mismo en ambas consultas.
  • Los tipos de datos deben ser compatibles.
Su sintaxis es la siguiente:


{ <query_specification> | ( <query_expression> ) }   
{ EXCEPT | INTERSECT }  
{ <query_specification> | ( <query_expression> ) }  


 No es preciso que las definiciones de las columnas que forman parte de una operación EXCEPT o INTERSECT sean idénticas. Sin embargo, deben ser comparables mediante una conversión implícita.

¿Cual es la diferencia entre ambas? En el caos de Except, devuelve la diferencia en la consulta de la izquierda, es decir la primer consulta que le mandamos como parámetro. Por ejemplo, si en mi consulta A tengo mas registros que en la B como resultado, me devuelve esos registros que no están en B. Pero si fuera en la de la derecha, es decir en B, donde tuviera más registros, no me los devolvería. A si que puEde decirse que me dice que falta de A en B. Por el contrario INTERSECT me devuelve todos los registros diferentes, tanto los que no están en A como los que no están en B.

Por ejemplo si tengo 2 tablas que se supone deben ser idénticas Alumnos y AlumnosBackup, y la tabla Alumnos tiene mas registros al ejecutar:

SELECT * FROM Alumnos
EXCEPT
SELECT * FROM AlumnosBackup

Me regresará todos los registros de Alumnos que no están en AlumnosBackup. Si quisera que me regresara todas las diferencias, ejecutaría:

SELECT * FROM Alumnos
INTERSECT
SELECT FROM AlumnosBackup

El problema es que para este caso no se en donde radican las diferencias. Si quisiera ser más específico debería ejecutar dos EXCEPT intercambiando el orden de las consultas, para establecer que registros contienen Alumnos que no están en AlumnosBackup y luego que registros contiene AlumnosBackup que no están en Alumnos.

También podemos comparar sets de resultados, por ejemplo:

 select * from ArchivoAdjunto where CategoriaDocumento = 2 AND TipoDocumento =6 And Deleted =0
EXCEPT
SELECT M.*
FROM CompraArchivoAdjunto C
INNER JOIN ArchivoAdjunto  A ON C.ArchivoId = A.ArchivoId
WHERE A.TipoDocumento = 6 AND A.deleted = 0

Supongamos que tengo una tabla que tiene ligas entre entradas de registro y archivos adjuntos. Además en la tabla de archivos adjuntos guardo la categoría y el tipo de documento que es.  Se supone que al hacer join de mi tabla CompraArchivoAdjunto  y mi tabla Archivo adjunto filtrando por documentos de tipo 6, debería tener los mismos registros que si consulto directamente mi tabla de adjuntos con Categoria 2( compra) y tipo 6 (ordenes de compra).

En resumen debo tener el mismo set de resultados, puedo usar la instrucción EXCEPT para compararlos.



jueves, 9 de mayo de 2019

Eliminar botones de maximizar y minimizar de un formulario en VB.NET

Quizá nos ha tocado en algún proyecto que  se nos pide eliminar los botones de Maximizar o Minimizar de una ventana.

Esto es muy sencillo y se puede hacer tanto en modo de diseño como mediante código.

Si estás en modo de diseño, ve a parte de propiedades y busca las propiedades MaximizeBox y MinimizeBox y ponlas en False


La propiedad MaximizeBox se refiere al botón Maximizar y la MinimizeBox al botón Minimizar.

También pueden deshabilitarse por código por ejemplo en el Load de la forma.

Me.MaximizeBox = False
Me.MinimizeBox = False

Ahora bien, quizá desees que no haya ningún botón de los que aparecen regularmente en las ventanas, es decir quieres quitar incluso el botón de cerrar.

En ese caso la propiedad es ControlBox.


La cual también se puede deshabilitar por código:

Me.ControlBox = False

jueves, 25 de abril de 2019

Las mejores cosas se fabrican en China

Para los que nacimos después de 1980, algunos hechos se han quedado grabados en nuestra memoria, que son diferentes entre generaciones. Algo que recuerdo muy bien es una frase de la película Volver al Futuro III de 1990, ese clásico de ciencia ficción, que presentó por primera vez el viaje en el tiempo bajo la cubierta de efectos especiales modernos. La película se ambienta en 1985, aunque la conversación a que me refiero tiene lugar en 1955. La conversación entre Marti y el Dr. Brown es la siguiente:

Doc: Hmm… Es increíble que este pedazo de chatarra sea capaz de causar enormes problemas… Heh, con razón este circuito falló, dice “Hecho en Japón”.

Marty: ¿De qué habla, Doc? Las mejores cosas son fabricadas en Japón.

Para el doctor, era imposible pensar en 1955 que Japón fuera sinónimo de calidad. Pero Martí, de 1985, venía de otra realidad y para él era natural que los circuitos del tiempo estuvieran fabricados en Japón.


Y todos los que vivimos en esa época lo sabemos, hecho en Japón significaba sinónimo de calidad. Marcas como Sony se ganaron a pulso la reputación de fabricar productos durables y de alta calidad. Cuando trabaje en GM de México, siempre se ponía a Toyota como ejemplo: el objetivo de la empresa era igualar la calidad y eficiencia de la marca japonesa, que aún hoy es líder en el mundo. Y en todos los ámbitos, Japón siempre significaba excelencia.

No es que ahora las cosas hechas en Japón sean de mala calidad. Sin duda se mantienen los altos estándares de calidad. Pero ha surgido un competidor serio, en lo que se refiere a alta tecnología.

Si nos encontráramos en la misma situación al día actual, la frase podría ser "Las mejores cosas son fabricadas en China". Es cierto que por años, las cosas hechas en China solían significar bajo precio y baja calidad. Pero las cosas han cambiado mucho, tanto que ahora las mejores cosas se fabrican en China.

De hecho muchas marcas de prestigio fabrican ahí: los Iphone se fabrican en China, Sony ensambla sus Play Station, en fin casi toda marca de renombre fábrica en China.Pero las marcas locales, también han alcanzado un alto grado de prestigio y calidad.

PC: Lenovo

Empieza la lista con una de las empresas más exitosas de los últimos tiempos : Lenovo. El gigante de las computadoras chino, se ha convertido en el mayor fabricante de computadoras.

Liu Chuanzhi fundó Lenovo el 1 de noviembre de 1984 con un grupo de diez ingenieros en Pekín. La empresa empezó fabricando componentes para computadoras compatibles con la IMB PC. La empresa fue creciendo hasta convertirse en un fabricante de ordenadores. 

Tanto fue él éxito de Lenovo que en el año 2005 Lenovo compró definitivamente la división de ordenadores de IBM, lo que la convirtió en el fabricante internacional de ordenadores más grande del mundo. Lenovo pagó $1.270 millones a IBM que consistía en $655 millones en efectivo y 600 en acciones de Lenovo. 

Así la mítica división de ordenadores de IBM, que vio nacer al primer ordenador personal de uso masivo, la IBM PC, paso a formar parte de Lenovo. Eso nos da una idea del poder de la compañía, que ahora posee la división de ordenadores de IBM, simplemente se ha vuelto la más importante del sector. Sabemos que IBM es sinónimo de calidad y parece que Lenovo no se queda atrás.

Lenovo no ha parado de crecer. Recientemente en 2014 adquirió también de IBM, esta vez su división de servidores X86. Parece que Lenovo ha crecido tanto que pronto fagocitará por completo a IBM. 

El mismo año se adueñó de otra gran empresa histórica:Motorola. Esto con el fin de aumentar su segmento de negocio de dispositivos móviles.



Telecomunicaciones:Huawei

Cuando hablamos de Telecomunicaciones, este sector históricamente ha estado dominado por empresas como Ericsson, Nokia, Cisco , Siemens, entre otros.

Pero recientemente Huawei se ha convertido en la empresa mas grande de redes de telecomunicaciones. Nos referimos a que es un proveedor de nodos para la red GMS, GPRS y LTE. Es decir las tecnologías que soportan las redes móviles.

Huawei fue fundada en 1987 por Ren Zhengfei. Huawei Technologies Co., Ltd. provee equipos a 35 de los mayores operadores de telecomunicaciones del mundo .

Dentro de estas redes telefónicas existen diversos nodos de red: HLR(Es el elemento de la red que almacena los datos de los usuarios), centrales telefónicas(MSC), BTS, AIR, SDP,CCN, los nodos GGSN y GGSN que componen el sistema GPRS y permiten el uso de datos en el móvil o 3G, y el LTE que permite el 4G. Estos nodos son componentes de hardware que realizan diferentes funciones, y juntos conforman la red móvil.

Cada uno de estos elementos de red puede ser integrado por diferentes proveedores o por el mismo. Sin embargo Huawei se ha posicionado como empresa líder en el segmento de telecomunicaciones, desplazando a empresas históricas como Ericsson.

Se ha convertido en una empresa innovadora, líder en el desarrollo de las nuevas tecnologías como el 5G, que pronto sustituirá al actual 4G LTE.



Smartphones: Huawei, Xiaomi, y los demás.


El mercado móvil evoluciona constantemente. Sin embargo desde años una compañía asiática está en el podio del mismo: Samsung. Ha sabido dominar el mercado móvil y mantenerse como líder en innovación durante ya un buen tiempo.

Sin embargo también en este ámbito se nota la presencia de las empresas chinas. El gigante chino Huawei está creciendo de una manera importante, tanto que recientemente destronó a otra empresa histórica en el segmento de los smartphones: Apple. Apple se había convertido en una de las empresas más importantes del sector desde que presentó el primer Iphone en 2007. Nunca llegó a dominarlo, Samsung le arrebató a Nokia el primer lugar en ventas en 2012, y casi desde entonces Apple siempre había estado en el segundo lugar.

Pero recién en 2018 Huawei alcanzó un hito importante: logró superar a Apple en ventas, convirtiéndose en el segundo mayor fabricante de smartphones.

No es de extrañar pues Huawei ofrece productos de alta calidad, a un precio más reducido que la competencia. Por ejemplo en boca todos , y en los memes, se encuentra el Huawei P30 y su extraordinaria cámara fotográfica, que sin duda es la mejor del mercado.

Quizá parte de la culpa de este sobrepaso , es que Apple ha tenido malos resultados este último año, y una caída de ventas considerable, sobre todo en el territorio chino. Pero también hay que anotar que Huawei ha crecido en ventas, a pesar de las prohibiciones de algunos países como EUA.

Algo notable es que no sólo Huawei ha experimentado un gran crecimiento, otras marcas como Xiaomi están en lo alto, siendo Xiaomi el 4 lugar en ventas. De hecho Xiaomi viene acortando distancia con Apple y creciendo rápidamente.

No es de extrañar por que Xiaomi apuesta a una relación de precio/calidad insuperable en el mercado. Modelos como el Xiaomi Mi A1, el Xiaomi Mi A2  y el Mi A2 Lite, han sido éxitos de venta debido a sus excelentes prestaciones y escaso precio.

Y si seguimos buscando están Oppo, Vivo, One Plus One, que en realidad son una sola y forman parte de BBK Electronics. Es decir que China copa los primeros puestos del ranking, exceptuando a Samsung y Apple.


Así que no cabe duda, las mejores cosas se fabrican en China, atrás quedo el estigma de "hecho en China" como sinónimo de baja calidad. Eso sí, hay que elegir bien la marca. Si no es una marca de renombre, todavía hay muchos productos que no cumplen con los estándares de calidad.

Sin embargo , muchas de las mejores marcas del mundo, son ahora chinas. Y no es de extrañar en un país cuyo peso en la economía mundial no ha parado de crecer.  De hecho es la primera economía mundial y el mayor mercado. Así que no es de extrañar que se produzcan cosas de calidad.



miércoles, 24 de abril de 2019

El por que del triunfo de las phablets

Steve Jobs afirmó alguna vez que el móvil ideal no podía superar las 4 pulgadas de pantalla. Él tenía su peculiar forma de pensar, y generalmente acertaba en temas tecnológicos. Pero con la pantalla del móvil se equivocó rotundamente.

Samsung, que hace tiempo lleva la batuta en innovación de dispositivos móviles, hizo un experimento extraño en el año 2011, 4 años después de la presentación del primer Iphone. Presentó el Samsung Galaxy Note, este smartphone fue presentado en octubre del 2011 y es considerado por muchos como el primer phablet (Contracción de Phone y Tablet debido al tamaño de la pantalla) de la historia, en aquel entonces, con su diagonal de pantalla de 5.3 pulgadas.



5.3 pulgadas ahora parecen de risa, cuando ningún gama alta -media baja de las 5 pulgadas. Pero en ese entonces el Iphone aún mandaba en el mercado, y las 4 pulgadas parecían la medida ideal. El caso es que el experimento de Samsung fue todo un éxito: se calcula que el primer Galaxy Note vendió alrededor de 10 millones de unidades en todo el mundo. 

Samsung vendió más de 50 millones de dispositivos de la familia Note entre septiembre de 2011 y octubre de 2013. A partir de entonces seguro han vendido millone más, pero empezó a difuminarse la línea que diferenciaba phablet y smartphone. Todos los fabricantes se subieron al carro que creó Samsung, al punto de que todas las marcas empezaron a lanzar sus mejores terminales en formato de gran tamaño, y la diagonal de la pantalla fue creciendo progresivamente.

Tanto es así que hoy en día todos los celulares de gama alta tienen más de 5.5 pulgadas. Y ya no se nos hace extraño que ronden las 6 pulgadas. De hecho el último Galaxy Note, el 9, cuenta con un generosa pantalla de 6.4 pulgadas.

Claro que para crecer la pantalla, los fabricantes han hecho todo tipo de innovaciones para no crecer demasiado el tamaño de los teléfonos: se han eliminado marcos, botones físicos, se han impuesto soluciones como el Notch o las cámaras retráctiles.

¿Por que han triunfado los phablets?

Un solo dispositivo, para ver contenido, cuestión de economía y facilidad de uso


El Ipad fue presentado el 27 de enero de 2010. Era un dispositivo pensado para disfrutar de contenido multimedia, con una generosa pantalla de 10 pulgadas. Pero en honor a la verdad no todo el mundo puede darse el lujo de tener dos dispositivos con la misma función.

Todos tenemos un smartphone, pero no muchos pueden darse el lujo de además comprar una tablet. ¿Así que por qué no combinar ambos dispositivos? Los phablet se han convertido en los dispositivos primarios, los llevamos con nosotros todo el tiempo, y no necesitamos además preocuparnos de cargar y tener actualizado un segundo dispositivo.

La gran pantalla de los phablet hace mucho de la función que pretendían cubrir las tablets. No por nada, el triunfo de las phablets es también el fracaso del tablet, que ha caído en ventas, reducido a un nicho de consumidores.

Mejor experiencia Multimedia, consumo de contenido y juegos

No cabe duda de que uno de los principales usos de los smartphones es consumir contenido audio-visual. Películas, series, videos, gran parte de su uso se enfoca en la cuestión multimedia.Para esto las pantallas de los phablets dan una experiencia mucho mejor que las de los smartphones pequeños.

Además si somos asiduos a los juegos, sin duda los gráficos de última generación se disfrutan mejor en una pantalla más grande. La experiencia de juego mejora entre más grande sea la pantalla. Y estamos conscientes de que el consumo de videojuegos también es una de las principales funciones de los smartphones, tanto así que se ha dañado la tradicional industria de las consolas, pues ahora se generan más ingresos desde las plataformas móviles.


Para los jóvenes ostentación

Los jóvenes en especial parecen adorar las phablets. ¿Por qué? No parece haber mucha razón mas que para ostentar. El móvil se ha convertido en un dispositivo de estatus. Al igual que el Iphone en su tiempo, ahora el tener un celular de pantalla grande es sinónimo de estatus. El que los mejores dispositivos de todas las compañías apuesten por la pantalla grande parece reforzar esa imagen.

De hecho hasta los Iphone han aumentado en tamaño, siguiendo la tendencia que Samsung marcó hace ya 8 años. No se si más grande sea mejor, pero parece ser que transmite esa imagen de poder.

Para los mayores , salud visual

En cambio entre las personas mayores las phablets también triunfan , pero por otro motivo: el cuidado de los ojos. Sabemos con  la edad nuestra vista no se va agudizando, si no todo lo contrario. Cuando trabajaba en Telcel Mexico, note que casi todos los ingenieros en especial de edad madura, usaban Galaxy Note. La respuesta del por que era muy obvia: su vista se cansaba menos disfrutando de esas enormes pantallas.

Llega una edad en que cuidar la vista se vuelve primordial. Y las pantallas pequeñas como las de los primeros Iphones, no ayudan. Así que ese nicho de usuarios recibió encantados el concepto del phablet. Su vista se cansa menos entre mas grande sea la pantalla, y disfrutan leyendo contenido en las pantallas grandes.

A pesar de estas razones, todavía hay usuarios que no creen que sean para ellos este tipo de dispositivos. Las razones principales son dos:

Son difíciles de manejar

Cuando tus manos son pequeñas es difícil abarcar toda la pantalla con una sola mano. Este punto en especial le afecta a las mujeres. No es de extrañar que sean las principales consumidoras de dispositivos pequeños. 

Para las personas pequeñas, es mejor un teléfono pequeño. Sostenerlo con una sola mano y ser capaz de abarcar toda la pantalla no es ningún problema para un hombre adulto, pero las mujeres no se sienten tan cómodas con las phablets.

Son difíciles de transportar

Otro inconveniente de los phablets, es que es difícil llevarlos a todos lados. No en vano incluso se han tenido que hacer bolsillos más grandes para que quepan con facilidad.

No es tan fácil de transportar como los smartphones mas pequeños, e incluso a algunos les pueden molestar que sea tan visible, pero bueno es uno de los inconvenientes que se pagan por las ventajas que traen. Lo cierto es que parece que los móviles de menos de 5 pulgadas están condenados a la extinción. Ahora mismo es difícil encontrar móviles de menos 5.5 pulgadas. Así que nos guste o no, los phablet han triunfado. Y tenemos que acostumbrarnos. Y disfrutar de sus bondades.



martes, 23 de abril de 2019

Lenguajes de programación más populares de la historia de la Computación

Las computadoras son máquinas de propósito general, que pueden hacer cualquier labor para las que las programemos. Es parte de su belleza, el poder comunicarnos con ellas esperando obtener resultados. Pero las máquinas no nos entienden. Ellas solo entienden el lenguaje de 1 y 0, el binario. Internamente significa un bit, un lugar en donde hay corriente eléctrica o no la hay. Al principio esto se representaba con bulbos (pequeños focos), pero luego llegamos a la era de los transistores, que básicamente representan lo mismo: encendido o apagado.


Sin embargo comunicarse en binario es tremendamente engorroso. Por eso surgieron los lenguajes de programación: interfaces entre nuestro lenguaje hablado y escrito, y el de las máquinas. El lenguaje básico por supuesto es el ensamblador, el lenguaje propio de los procesadores. Este lenguaje simplificó mucho la comunicación con las máquinas, es un lenguaje de operaciones aritméticas básicas, que usa registros y posiciones de memoria.

Pero pronto se vio que seguía siendo demasiado complicado, en especial para escribir programas largos y complejos. Por eso surgieron los lenguajes de alto nivel, lenguajes estándar que simplificaban la escritura del código. Ya no había necesidad de preocuparse por direcciones de memoria, el lenguaje se enfoca en instrucciones de alto nivel de lógica de control y variables. La gestión interna del mismo, no es de la ocupación del programador.



A lo largo de la historia se han desarrollado muchísimos lenguajes, pero solo unos cuantos han sido de uso más extenso. Veamos cuales son:

BASIC

BASIC fue creado como un lenguaje para principiantes. Significa Beginner's All-purpose Symbolic Instruction Code​ (Código simbólico de instrucciones de propósito general para principiantes). Su facilidad de uso hizo que su adopción desde su creación en 1964 fuera muy extensa.

Particularmente la historia de BASIC, está ligada a la historia de la computadora personal. Recordemos que fue el Altair BASIC de la Altair 8800 , la primera interfaz entre un humano y una computadora personal. En ese tiempo Microsoft se convirtió en una empresa exitosa, principalmente portando el BASIC a diferentes versiones de computadoras personales. Así que durante mucho tiempo, quienes se iniciaban en el mundo de la computación personal, sólo debían conocer un lenguaje: el BASIC. La memoria de la computadora personal, iniciaba cargando el BASIC para que pudiéramos comunicarnos con ella. 

Cuando la IBM PC hizo irrupción, se popularizó el uso de sistemas operativos como principal interfaz usuario-máquina. Aún así BASIC seguía siendo uno de los lenguajes principales. Y aunque con Windows nos iniciamos en la programación Visual, BASIC evolucionó hasta convertirse en Visual Basic. Este lenguaje permite crear con facilidad interfaces de usuario y programas para Windows, así que no es extraño que siga siendo uno de los más usados. Su integración natural con el entorno Windows, así como con la suite ofimática Office de Microsoft, hacen que programar en Visual Basic sea una de las mejores opciones cuando trabajamos en Windows. Sin olvidar que ahora la versión VB.NET es completamente orientada a objetos.


C/C++


Cuando pensamos en lenguajes de alto nivel, C siempre nos viene a la mente. Es algo así como el estándar universal, el padre de todos los lenguajes.

Por eso es casi seguro que en las universidades donde se enseña programación, los fundamentos se enseñan con el lenguaje C.

El lenguaje de programación C fue creado por Dennis Ritchie entre 1969 y 1973 cuando trabajaba en Bell Laboratories de AT&T junto con Ken Thompson en el diseño del sistema operativo UNIX. C fue creado para poder escribir dicho sistema operativo en un lenguaje de alto nivel, independiente del hardware donde se ejecutará. Se creó a partir del lenguaje B desarrollado por Ken Thompson, en los Laboratorios Bell en 1970.

C se creó cuando aún el ensamblador era la principal interfaz entre humano y máquina, pero  se hacía necesario un lenguaje que permitiese al programador abstraerse de la capa hardware y conseguir una mayor portabilidad del código, algo que se realizó en B (basándose en el BCPL de Martin Richard de 1967). El lenguaje C aportó tipos y estructuras de datos que consiguieron clarificar la programación y obtener un lenguaje mucho más eficiente, comparado con B.

Ritchie diseñó, desde 1970 a 1972 junto a Brian Kernighan, un lenguaje que permitía realizar una programación estructurada en la que se podrían economizar las expresiones a usar y con el que los desarrolladores podrían contar con un buen conjunto de operadores y tipos de datos para programar tanto en alto como en bajo nivel de manera simultánea.

Así que podemos decir que C está ligado a la historia de los sistemas operativos. Contar con un lenguaje de alto nivel permitió el avance de los sistemas operativos, ya que el mismo código podía ser utilizado en las distintas plataformas, propiciando la reutilización de código y reduciendo los tiempos de desarrollo.

No solo UNIX está escrito en C, también lo están todos los Linux, e incluso Windows está escrito en C. Eso nos da una idea de lo robusto y completo que es el lenguaje, ya que los grandes desarrollos como sistemas operativos completos están escritos en él.

C ha sido el padre de numerosos lenguajes modernos: C++, Java (el ejemplo clásico del paradigma orientado a objetos) e incluso C# que es el estándar de programación para .NET. Todos ellos se basan en la sintaxis de C, por eso si aprendes C, básicamente aprendes programación,ya que la mayoría de los lenguajes actuales se basan en él.

Java

Java es un descendiente directo de C. Es conocido como el lenguaje más popular que implementa la orientación a objetos.

Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java logra esto mediante el uso de una máquina virtual (JVM) que es un proceso de software que realiza la abstracción entre el código intermedio de Java y el Sistema Operativo.

El lenguaje de programación Java fue originalmente desarrollado por James Gosling, de Sun Microsystems y publicado en 1995 como un componente fundamental de la plataforma Java de Sun Microsystems.

Java es considerado la implementación más exitosa del paradigma de orientación a objetos, en los lenguajes de programación. Muchos lenguajes como C# y VB.NET, han adaptado las características de Java para soportar la orientación a objetos.

La enorme popularidad de Java se basa en que es transportable entre arquitecturas, un programa Java puede ser ejecutado en UNIX, Linux, o Windows, solamente teniendo instalada la correspondiente máquina virtual de Java en cada sistema. También durante mucho tiempo fue el lenguaje de desarrollo estándar en Android, el sistema operativo móvil más popular. Así que no es exagerado lo que publicita la web de Java, que 3 mil millones de teléfonos móviles ejecutan Java. Podemos decir que Java es el lenguaje más extendido entre diversos tipos de dispositivos.

Sin duda es uno de los lenguajes de alcance más extenso en la actualidad.


JavaScript


Cuando hablamos de lenguajes web, es difícil llegar a un estándar. El advenimiento de la internet, hizo necesarias nuevas formas de programación. 

En cuanto al backEnd, es decir programación del lado del servidor, sería imposible poner un favorito. Aunque hay lenguajes de uso muy extenso, no podríamos definir un estándar.

Pero el internet ha hecho extensivo el uso de un programa que es imprescindible para recorrerlo: el navegador web. Es por eso que el verdadero estándar de internet es el lenguaje de Front End, el dialecto que entiende nuestro navegador:JavaScript.

JavaScript fue desarrollado originalmente por Brendan Eich de Netscape con el nombre de Mocha, el cual fue renombrado posteriormente a LiveScript, para finalmente quedar como JavaScript. El cambio de nombre coincidió aproximadamente con el momento en que Netscape agregó compatibilidad con la tecnología Java en su navegador web Netscape Navigator en la versión 2.002 en diciembre de 1995.

No fue fácil que se convirtiera en el dialecto estándar, de hecho aun entre navegadores no son completamente compatibles. Sobre todo por que Microsoft mantenía al principio su propio dialecto en los navegadores Internet Explorer. 

Para evitar incompatibilidades, el World Wide Web Consortium diseñó el estándar Document Object Model (DOM, o Modelo de Objetos del Documento en español), que incorporan Konqueror, las versiones 6 de Internet Explorer y Netscape Navigator, Opera la versión 7, Mozilla Application Suite y Mozilla Firefox desde su primera versión. Basado en este estándar se ha desarrollado JavaScript.

El progresivo avance de Mozilla Firefox primero, y de Chrome de Google después, hicieron que el estándar de JavaScript se estableciera.  Desde el 2012, todos los navegadores modernos soportan completamente ECMAScript 5.1, una versión de Javascript. Los navegadores más antiguos soportan por lo menos ECMAScript 3. 

Así que con solo tener un navegador web, ya puedes escribir código JavaScript. En el Front End, este lenguaje manda, por lo que es el estándar web.








Campos de Fórmula Crystal Reports. Condicionales, ejemplos.

Una de las funcionalidades principales de Crystal Reports es el poder calcular valores de campos a partir de la fuente de datos.

Después de todo cuando elaboramos reportes, queremos ser capaces de calcular determinados valores para presentarlos como salida.

Para hacer esto podemos usar Campos de Fórmula. Estos campos permiten calcular valores usando funciones y además instrucciones lógica.

Pongamos por ejemplo, un reporte de alumnos. Supongamos que obtenemos calificaciones desde un stored procedure almacenado en la base de datos, y deseamos que en el reporte aparezca un campo que nos diga si el alumno aprobo o reprobo la materia. Para esto podemos usar un campo de fórmula.

Para crearlo, primero abramos el Formula Workshop que se encuentra en el menú Report. Una vez en el Formula Workshop posicionamos el cursor en la sección Formula Fields. Damos click secundario y posteriormente seleccionamos la opción New.


Aparecerá un Cuadro de Diálogo donde se nos pedirá el nombre de nuestro campo Fórmula. Una vez que se lo damos, damos click en Use Editor




En el Editor simplemente tecleamos nuestra fórmula. Puede ser tan sencillo como el siguiente ejemplo:

if {procedure.Calificacion}>7 Then
    "APROBADO"
Else
   "REPROBADO"

Notemos que Crystal Reports maneja instrucciones de control igual que un lenguaje de programación. En este caso también puedo seleccionar los campos de mi reporte. Asumiendo que tengo un stored procedure que me regresa un campo Calificacion, simplemente selecciono ese campo y le digo que si es mayor a 7, regrese APROBADO, si no REPROBADO.Notemos además que Crystal Reports no utiliza la palabra clave End If como la hace VB.NET.

Pongamos otro ejemplo,  supongamos que tengo un procedure que me regresa un precio de un producto, además de un campo Bit que me indica si debo aplicar impuesto a ese precio. Podría usar la siguiente fórmula:

IF {procedure.AplicaIVA} =1 Then
    {procedure.Precio}*{procedure.IVA}
Else
   { procedure.Precio}

En este caso primero valido el campo AplicaIVA . Si el valor es uno, entonces regresó una multiplicación del precio por el IVA, si es cero regreso el precio sin IVA.

Si queremos agregar un campo de Formula al reporte, simplemente lo tomamos del panel derecho en la sección Formula Fields y lo arrastramos al reporte.



miércoles, 17 de abril de 2019

Campos sumarizados en Crystal Reports. Suma,conteo, etc, por grupos y totales

Cuando hacemos reportes en Crystal Reports algo de lo más requerido, es que se hagan resúmenes de los datos. Esto funciona bien para datos agrupados, por ejemplo si agrupamos ventas por ciudad, estado, país y queremos ir sacando los totales de cada grupo.

Generalmente lo que más se utiliza es contar o sumar cantidades.

¿Como podemos tener campos sumarizados?

Una primera Forma es la siempre confiable Formula Workshop. Está en el Menú Report


Una vez abierto el formula workshops nos vamos a las sección Formula Fields. Aquí es donde podemos crear campos de Formula para nuestro reporte.


Una vez en esa sección damos click secundario y del Menú contextual elegimos la opción New.

Esto nos permite crear un campo de fórmula.

Nos saldrá una ventana que nos permitirá darle un nombre a nuestro campo.



Una vez que lo hicimos, seleccionemos la opción Use Editor. Se abrirá el editor de formulas.


Este Editor nos permitirá editar la fórmula que deseamos aplicar . En el panel superior derecho se encuentran las funciones agrupadas por tipo, en este caso elegiremos el tipo Sumary que nos sirve para sacar totales.

En la parte superior derecha viene la lista de campos del reporte. Así que simplemente arrastramos la función Sum , que nos sirve para sumar, y dentro de los paréntesis arrastramos el campo que deseamos sumar. Así de sencillo ya tenemos un campo con la suma de todos los valores de un campo.


Otra operación muy solicitada es el conteo de items. Para esto podemos usar la función Count, e igualmente arrastramos el campo que queremos contabilizar.

Otra forma sencilla de obtener este tipo de formulas es mediante el menú Insert, la opción Sumary.


Si damos click a esta opción nos permite elegir primero el campo y luego de una multitud de funciones, como suma, promedio, máximo, mínimo, conteo, entre otras.


Otra cualidad de esta ventana, es que nos permite hacer estas operaciones sobre el total general, o sobre el total de un grupo que tengamos en el reporte. De esta manera podemos sacar totales por grupos.


Así de fácil podemos sacar totales en Crystal Reports, tanto de grupos como de todo el reporte, y usando distintas funciones matemáticas, aritméticas, de contabilidad entre otras.

Como comparar dos conjuntos de resultados de consultas SQL en SQL-SERVER

Cuando estamos analizando datos, en ocasiones hay varios caminos para llegar a un mismo resultado. Pero deseamos saber, las diferencias ent...