lunes, 22 de enero de 2018
sábado, 15 de noviembre de 2014
Hello Dear;
domingo, 19 de enero de 2014
Proyecto usando Entity Framework, Web Service y Windows forms, con .NET Framework 3.5
Les anexo la liga en donde se observa el detalle del proyecto.
Espero les sea de utilidad
miércoles, 15 de enero de 2014
Personalización de firma de correo en Mozilla Thunderbird 24.2.0
Anexo la liga de la nota en la que podemos ver este tema con mas detenimiento
Espero les sea de utilidad.
lunes, 24 de junio de 2013
La invitación de Ivan Rangel está esperando tu respuesta
|
martes, 18 de junio de 2013
La invitación de Ivan Rangel está esperando tu respuesta
|
sábado, 15 de junio de 2013
Mantente en contacto conmigo a través de LinkedIn
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||
martes, 25 de diciembre de 2012
Revisa las fotos de Ivan Emanuel en Facebook.
|
domingo, 11 de diciembre de 2011
Análisis de dos bases de datos
Antecedentes
Se cuenta con dos bases que comparten estructuras comunes (Tablas, Stored procedures, triggers, etc). ambas bases de datos son utilizadas por la misma aplicación solo que en versiones distintas, de allí su diferencia. Se requiere analizar ambas bases de datos para poder sacar una relación de sus diferencias y realizar un empate de alguna de las estructuras.
Solución
Se desarrolló un Stored procedure que realiza un análisis desplegando dos conjuntos de resultados.
- Relación de estructuras con los siguientes atributos
- Contador: Identificador auto numérico de la tabla
- Tabla : Nombre del objeto de base de datos
- Esta en origen: Bandera señala si el objeto esta en la base de datos origen
- Esta en destino: Bandera señala si el objeto esta en la base de datos destino
- Cantidad de campos idéntica: La cantidad de atributos en ambos objetos es idéntica
- Calidad de campos idéntica: La calidad (Longitud, tipo de dato, manejo de nulos, idioma o COLLATE) de atributos en ambos objetos es idéntica
- Susceptible a analizar: Bandera que indica que la estructura u objeto origen difiere de su homóloga en la base de datos destino
- Detalle de las inconsistencias
- Tabla: Nombre de la tabla u objeto involucrada
- Orden: Identificador auto numérico de la tabla
- ColOrigen: Nombre de la columna o campo en la base de datos origen
- ColDestino: Nombre de la columna o campo en la base de datos destino
- Longitud distinta: La longitud del campo difiere de una base de datos a otra
- Null distinto: El manejo de nulos del campo difiere de una base de datos a otra
- Collate distinto: El idioma o COLLATE del campo difiere de una base de datos a otra
- Tipo de dato distinto: El tipo de dato del campo difiere de una base de datos a otra
- Campo no está en origen: El campo o atributo no esta en la base de datos origen
- Campo no esta en destino: El campo o atributo no esta en la base de datos destino
A continuación se anexa un ejemplo de ejecución:
Tanto el filtro como el tipo de objeto son campos que se pueden omitir. El primero dándole el valor de ‘%%’, el segundo simplemente dejando el valor vacío ‘’
lunes, 28 de noviembre de 2011
Problemas con Crystal Reports v8 (CR8) en Windows 7 de 64 bits (Win 7 x64)
Problemática
Se han suscitado en algunos proyectos en los que he estado involucrado diversos problemas relacionados a este tipo de instalación.
Como antecedentes y en específico, la aplicación es una Windows Application, esta desarrollada en VB NET (VS 2008) usando CR 8 con reportes que en su mayoría usan el controlador nativo de SQL server y su fuente de información en procedimientos almacenados (Stored procedures) desarrollador den T-SQL sobre la plataforma de base de datos SQL Server 2008.
La aplicación se ha instalado sobre diversos sistemas operativos(De 32 y 64 bits), que van desde Windows XP (Service pack 1), hasta Win 7.
La mayor cantidad de problemas han brotado sobre Windows vista y Windows 7 de 64 bits. El listado de problemas es tan extenso como variado y no será incluido explícitamente en esta publicación, pero por nombras las mas sobresalientes:
- Errores indeterminados en cuya descripción se nombre la palabra HRESULT.
- Errores nativos de Crystal Reports:
- 20599
- 20534
- 20537
- Errores de pre visualización:
- Se despliega el reporte en blanco
- Se intenta desplegar el reporte pero se queda inhibido (Pasmado)
- Se pre visualiza momentáneamente el reporte cerrándose fracciones de segundo después Efecto Blink (Parpadeo)
Recomendaciones
A continuación se listan las recomendaciones que me han llevado a solucionar la mayoría (Prácticamente la totalidad) de los errores reportados o detectados en este escenario:
- Lectura sucia masiva al inicio del procedimiento (SET TRANSACTION ISOLATION LEVEL READUNCOMMITTED)
- Conteo de filas apagado en procedimientos que arrojan mas de un resultado (SET NOCOUNT ON)
- Manejo explícito en tablas temporales de:
- Nulos
- Idioma (COLLATION)
- Tipo de dato
- Creación de tablas temporales explícitas [No crearlas al vuelo por medio de una consulta (INSERT - SELECT ó SELECT – INTO)]
- Manejo constante de la cantidad de atributos de salida, esto quiere decir que no cambie ni la cantidad, tipo o nombre de los atributos o campos de salida resultados del procedimiento.
- Entrar al menú inicio
- Seleccionar el acceso directo a la aplicación
- Dar clic derecho/ Propiedades
- Elegir en la pestaña de “Compatibilidad”
- Dar clic en el botón “Cambiar la configuración para todos los usuarios”
- En el agrupador “Modo de compatibilidad”, seleccionar “Ejecutar este programa en modo de compatibilidad” y seleccionar de la lista desplegable “Windows XP Service Pack 3”
- En el agrupador “Nivel de privilegio”, seleccionar “Ejecutar este programa como administrador” y dar clic en “Aceptar”
- Presionar nuevamente el comando “Aceptar” en el cuadro de dialogo de las propiedades
- Algunos problemas de pre visualización de reportes se solucionan Instalando CR8 completo en el cliente
Espero les sea de utilidad.
jueves, 24 de noviembre de 2011
¿Como se si el valor de un campo existe en todas las tablas que contengan dicho campo, si no se en cuantas tablas existe el campo? (Base de datos SQL 2008)
Problemática
Creo que la propia pregunta nos dice la problemática, pero voy a poner un ejemplo para clarificar las cosas de manera mas puntual.
Tenemos un ERP con un catálogo de artículos, en la base de datos se cuenta la tabla que sustenta el catálogo mas un sin fin de tablas de apoyo que albergan bitácoras, Kardex, ventas, facturas, etc., etc. dentro de dichas tablas existen relacionados artículos.
La relacione entre el catálogo de artículos y estas tablas esta establecida por la clava única de cara articulo que se almacena en el campo CveArt.
Nos solicitan encontrar dentro de la base de datos todos los lugares en los que el artículo con clave 777 se encuentra, y como no conocemos la totalidad de las tablas que contemplan este campo, y mucho menos si el artículo con clave 777 se encuentra allí.
Solución
Existen varias opciones para realizar esta búsqueda, algunas mas complejas que otras, yo les voy a proporcionar mi solución, la cual ya evaluarán ustedes si es compleja o no.
Primero descarguen de la siguiente liga un Stored procedure de mi autoría:
Stored procedure para buscar valores de campos en todas las tablas de una BD
A continuación anexo el ejemplo de ejecución para el caso de nuestro ejemplo:
EXEC PIRM_SelValCamTabla 'CveArt', 777
El resultado sería algo similar a lo siguiente
| Contador | Tabla | Registros |
| 1 | Kardex | 23747 |
| 2 | Ventas | 2110 |
| 3 | CatalogoArt | 1 |
| 4 | Rembolsos | 0 |
| 5 | Cancelaciones | 1 |
| 6 | Bitacora | 24171 |
| 7 | Devoluciones | 1 |
| 8 | Recibos | 0 |
En donde la primera columna (Contador) es un simple identificador interno de la tabla de paso utilizada para desplegar la información. La segunda es el nombre de la tabla y la tercer es la cantidad de registros encontrados en esa tabla que contienen el valor 777 para el campo CveArt
Espero les sea de utilidad.
Problema de páginas en blanco con IE9
Problemática
Después de instalar IE9 y tratar de navegar, las páginas se cargaban correctamente ya que al pasar el ratón por encima se visualizaba la ayuda contextual de todos los elementos y me permitía inclusive darles CLICK, mas sin embargo la página se quedaba en blanco.
Solución
·Cierra todas las sesiones del Internet Explorer.
· Entra al menú inicio
· Teclea Opciones de internet
· Presiona Enter
· CLICK en la pestaña Opciones Avanzadas
· Revisa que este seleccionada la opción Usar procesamiento por software en lugar de procesamiento por GPU, la cual esta dentro de la rama Gráficos acelerados
· CLICK OK
· Abre el Internet Explorer
Este TIP se obtuvo de la siguiente liga:
Solo fue traducido para su comodidad por un servidor y le agradezco mucho el consejo a
Steven de Microsoft Answers Support Engineer
jueves, 17 de noviembre de 2011
Error: The server could not load DCOM. (Microsoft SQL Server, Error: 7404)
Problemática
Al iniciar mi servidor de SQL server 2008 R2 me marcó el siguiente error:
The server could not load DCOM. (Microsoft SQL Server, Error: 7404)
ME deja entrar en aparente normalidad pero a la hora de querer restaurar una base de datos el error vuelve suceder y aunque me despliega el cuadro de dialogo correspondiente a la restauración, y me permite ir a buscar el archivo BAK para proceder con la misma, no me despliega el archivo en el listado por lo cual no puedo seleccionara para terminar con el proceso.
Solución
Se encendió el servicio del SQL Browser desde: Inicio/ Panel de control/ Herramientas administrativas/ Servicios/ SQL Server Browser. Además de configurarlo para que iniciara de manera automática
Espero les sea de utilidad.
lunes, 29 de agosto de 2011
Búsqueda de objetos dentro de programables (Stored procedures, vistas, funciones, triggers) de Microsoft SQL Server
Antecedentes:
Se tiene la necesidad de encontrar en cuantos y cuales (En donde exactamente) programables (Stored procedures, vistas, funciones, triggers) se encuentra un objeto de base de datos (Tabla, campo, índice o programable).
Esto resulta muy útil para realizar un análisis de impacto. Ponemos un ejemplo, ampliar la longitud del campo “CLABE” de la tabla “CuentasBancarias” ya que no se da abasto para las longitudes manejadas en el sector bursátil.
Solución propuesta
Se cuenta con dos Stored Procedures que nos van a apoyar a esta búsqueda. El primero se llama sp_helptext_Plus y no es otra cosa que una versión modificada del stored del sistema de nombre sp_Helptext que nos ayuda a obtener el código de cualquier programable.
El otro stored procedure es el que hace el trabajo pesado. Se llama P_BusCadTxtProgramables y el ejemplo de ejecución para la problemática planteada en este caso es la siguiente:
EXEC P_BusCadTxtProgramables
@PS_Cadena = ‘CuentasBancarias’,
@PS_TabFisica ='tmpCuentasBancarias’
En donde el parámetro @PS_Cadena recibe el valor de la cadena de caractéres que se desea cnontrar y el parámetro @PS_TabFisica recibe el nombre de la tabla física en donde se van a guardar los resultados de la búsqueda. Si se ejecuta de esta manera, el stored procedure genera la tabla ‘tmpCuentasBancarias’ y posteriormente puede ser consultada por el usuario.
Si solo se le envía el primer parámetro:
EXEC P_BusCadTxtProgramables
@PS_Cadena = ‘CuentasBancarias’
Los resultado de la búsqueda son desplegados al final de le ejecución. Para cualquier duda, quedo a sus órdenes.
jueves, 11 de agosto de 2011
Convertir números a letras en Microsoft SQL Server
Me topé con el problema de actualizar masivamente un campo que un componente de la aplicación había calculado en base a un importe de la misma tabla. Debido a que necesitaba hacer la actualización masiva tanto de importes numéricos como de su equivalente en letras, busqué en internet y encontré estas 5 funciones jutas en un BLOG de un colega.
Las funciones las pueden bajar en un archivo comprimido en esta liga. Las funciones están numeradas en base a como se deben de generar en la base de datos, siendo la última función la que realmente hace el trabajo.
Dentro de las funciones hay comentarios con instrucciones sobre su uso, así como ejemplos de ejecución, espero les sean de utilidad
miércoles, 16 de febrero de 2011
DTA ( Database Engine Tunning Advisor ) en SQL 2008
Antecedentes:
Al tratar de ejecutar el DTA en SQL 2008 me marca error de conexión para el Log In SA.
Después de agotar las opciones que todos mis colegas se habían tomado la molestia de publicar en internet (En su mayoría para SQL 2005).
Se descargaron varios Scripts para generar las estructuras (Tablas y Stored procedures) que se decían necesarios para que el DTA funcionara.
Al ejecutar estos scripts se generaron parcialmente las estructuras ocasionándome otro mensaje de error
Solución
Se generó un script (Anexo a esta liga) de una BD MSDB de una instancia de SQL 2008 en la que el DTA si estuviese funcionando y se corrió sobre el servidor involucrado.
jueves, 7 de enero de 2010
Cambio de usuario para uso de autentificación de Windows
Antecedentes:
Se cuenta con algún software que tiene la opción de usar la cuneta del usuario de Windows (Windows XP Professional SP 3) para autentificar al usuario, evitando así que el mismo capture otra cuenta de usuario.
Por ejemplo, generamos un nuevo usuario en una base de datos el cual lleva por nombre IERM2. Y nos percatamos que el usuario de Windows lleva por nombre IERM. Esto nos ocasiona que que cada ves que queramos acceder a la BD, tengamos que capturar usuario: IERM2 y su respectivo password.
Si el usuario de Windows correspondiera con el de la BD, la acción de autentificación no fuese requerida.
Solución:
Se procede a realizar el cambio del nombre de usuario de Windows desde el panel de control, opción Control de usuarios.
Sin embargo, esto no es suficiente, ya que el sistema operativo solo cambia el nombre largo y no el nombre del usuario en si mismo.
Se tiene que proceder a entrar al panel de control, Herramientas administrativas, Administración de equipos, Usuarios locales y grupos, Usuarios; y proceder a cambiar el nombre manualmente, ya sea dando clic derecho, opción, Cambiar nombre. O Presionando F2 sobre el usuario.
Notas adicionales:
Se intentó realizar el primer cambio y reiniciar, como alternativa para reflejar el cambio, esto sin éxito, por lo cual se recomienda realizar los pasos aquí ilustrados para hacer efectivo el cambio de usuario.
Si lo único que se desea es realizar el cambio de nombre del usuario para que aparezca un nombre en particular en el menú inicio o en el inicio de sesión de Windows, entonces el realizar el cambio desde el Administrador de equipos carece de relevancia.
jueves, 5 de noviembre de 2009
Problema con guión alto en Crystal Reports 8.0 (CR 8.0) con SQL Server 2008
Problemática
Al tratar de conectarse a una BD de SQL 2000 – 2008 tanto con el controlador de SQL como el de OLEDB de CR 8.0 cuyo nombre contenga un guión alto, se detona un error general de SQL.
Al realizar un traza con el profiler de SQL 2008 se detecta el siguiente error:
Error: 102, Severity: 15, State: 1, Incorrect syntax near '-'
Esto al tratar de ejecutar la sentencia USE: “USE NombreBD-2”
Solución
Por lo tanto se recomiendo renombrar la BD omitiendo el guión alto
sábado, 31 de octubre de 2009
Problemas con MAC Address en Virtual PC
Escenario:
Se instala un entorno de desarrollo en una PC virtual la cual es copiada en distintas máquinas Host de una misma red local.
Problemática:
Aunque cada PC virtual se reconfigura con un nuevo nombre y su propia IP para evitar conflictos de cualquier índole, la máquina virtual mantiene la misma MAC Address ocasionando conflictos a la hora de acceder a ciertos servidores.
Solución:
Se decidió cambiar la MAC address de cada PC virtual, para ello se procede a realizar lo siguiente en cada máquina Host.
- Asegurarse que la PC virtual a la cual se le desea cambiar la MAC esta detenida
- Cerrar por completo el Manager de Virtual PC
- Buscar el archivo con extensión VMC correspondiente
- Abrirlo con el block de notas o cualquier editor de texto
- encontrar la línea:
- <ethernet_card_address type="bytes">0003FFxxxxxx</ethernet_card_address>
- Cambiarla por la siguiente línea:
- <ethernet_card_address type="bytes"></ethernet_card_address>
Al iniciar nuevamente la PC virtual, se regenera automáticamente la MAC Address, resolviendo así el problema.
NOTA: en algunos casos se tuvo que realizar la edición del archivo VMC una ves mas e inclusive reiniciar la máquina Host para que surgieran efecto los cambios.
miércoles, 5 de agosto de 2009
Cortes de reporte con sub reportes
Antecedentes.
el reporte cuenta con los siguientes elementos en cuanto a su estructura se refiere:
- ADO como controlador de acceso a datos
- Dos grupos basados en campos de tipo numérico
- Dos Sub reportes localizados en el detalle del reporte (Uno a un lado del otro)
- Ambos sub reportes son idénticos
- También desarrollados con ADO como controlador de acceso a datos
- Tres parámetros de los cuales
- Uno de ellos es para dar formato a los datos desplegados
- Los otros dos están involucrados en el Record Selection formula de los sub reportes
- Ligas con el reporte por medio de estos tres parámetros
- Dos sub reportes para desplegar dinámicamente imágenes a la izquierda y derecha del encabezado del reporte, estos sub reportes no cuentan con Links hacia el reporte.
- Encabezado y pie de reporte suprimidos
- Encabezado de la página suprimido
- Se usa el encabezado del grupo A a modo de encabezado de página, en este se colocan
- Los sub reportes de los logos izquierdo y derecho
- Tres parámetros para desplegar encabezados calculados desde la aplicación
- Pié de pagina en el cual se despliega
- El nombre del reporte en el esquina inferior izquierda
- Pagina X de Y, donde X es la página en curso y Y el total de páginas en la esquina inferior derecha
- Fecha de impresión en formato largo (DDS DD de MMMM DE YYYY) también en la esquina inferior derecha, justo bajo el conteo de páginas
Problemática
Se agregó una validación en la sección correspondiente al pié del segundo grupo para que agregara una salto de página, lo cual funcionaba incorrectamente.
Se desplegaba un corte después del primer corte y un corte mas al empezar el segundo corte, lo que dejaba una página en blanco adicional, entre el encabezado del segundo corte y los primeros datos a desplegar del mismo:
Video1: El cual denota al reporte con los cortes incorrectos:
Solución
Aquí va el video de la corrección, la cual consistió en desmarcar dos propiedades del sub reporte:
- Keep Object Together
- Close Border on Page Break
Aquí esta el reporte ya con los cortes correctos, espero les sea útil