lunes, 22 de enero de 2018

Sasquatch Bootstrap Theme

Aquí va el tema nuevo en base a Yeti:

sábado, 15 de noviembre de 2014

Hello Dear;

Hello Dear;  
I came across your Email at www.yasni.com i will be delighted to have good relationship with you and to know much better.my name is Isabella; i am single and never married. I will wait for your reply. you can contact me at this my email address( isabellayounis@hotmail.com ) and i will send you my picture and more about myself. waiting to hear from you Please don't forget to contact me direct to my Email address ( isabellayounis@hotmail.com  ) Waiting to read your message at my email box.

miércoles, 15 de enero de 2014

lunes, 24 de junio de 2013

La invitación de Ivan Rangel está esperando tu respuesta

 
 
 
 
 
A Ivan Rangel le gustaría conectar en LinkedIn. ¿Cómo te gustaría responder?
 
 
 
 
Ivan Rangel
Consultor en Advanced Business Systems, SA de CV
 
 
 
 
Ahora recibes Mensajes recordatorios sobre invitaciones pendientes. Date de baja.
© 2013 LinkedIn Corporation. 2029 Stierlin Ct, Mountain View, CA 94043, EE.UU.
 
 

martes, 18 de junio de 2013

La invitación de Ivan Rangel está esperando tu respuesta

 
 
 
 
 
A Ivan Rangel le gustaría conectar en LinkedIn. ¿Cómo te gustaría responder?
 
 
 
 
Ivan Rangel
Consultor en Advanced Business Systems, SA de CV
 
 
 
 
Ahora recibes Mensajes recordatorios sobre invitaciones pendientes. Date de baja.
© 2013 LinkedIn Corporation. 2029 Stierlin Ct, Mountain View, CA 94043, EE.UU.
 
 

sábado, 15 de junio de 2013

Mantente en contacto conmigo a través de LinkedIn

 
LinkedIn
 
 
 
Ivan Rangel
 
De Ivan Rangel
 
Consultor en Advanced Business Systems, SA de CV
Guadalajara y alrededores, México
 
 
 
 
 
 
 

Blog:

Me gustaría añadirte a mi red profesional en LinkedIn.

-Ivan

 
 
 
 
 
 
 
Estás recibiendo invitaciones a conectar. Date de baja
© 2012, LinkedIn Corporation. 2029 Stierlin Ct., Mountain View, CA 94043 EE.UU.
 

martes, 25 de diciembre de 2012

Revisa las fotos de Ivan Emanuel en Facebook.

facebook
Revisa las fotos de Ivan Emanuel en Facebook.
Si te registras en Facebook, podrás mantenerte conectado con amigos y ver sus fotos y videos, conocer sus actualizaciones más recientes, intercambiar mensajes y más.
Únete a Ivan Emanuel en Facebook
Este mensaje se envió a ivan.montemayor.developer@blogger.com. Si no quieres recibir estos correos electrónicos de Facebook o no quieres que se use tu dirección de correo electrónico para hacer sugerencias de amigos, cancela tu suscripción.
Facebook, Inc., Attention: Department 415, PO Box 10005, Palo Alto, CA 94303

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.

  1. Relación de estructuras con los siguientes atributos
    1. Contador: Identificador auto numérico de la tabla
    2. Tabla : Nombre del objeto de base de datos
    3. Esta en origen: Bandera señala si el objeto esta en la base de datos origen
    4. Esta en destino: Bandera señala si el objeto esta en la base de datos destino
    5. Cantidad de campos idéntica: La cantidad de atributos en ambos objetos es idéntica
    6. 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
    7. Susceptible a analizar: Bandera que indica que la estructura u objeto origen difiere de su homóloga en la base de datos destino
  2. Detalle de las inconsistencias
    1. Tabla: Nombre de la tabla u objeto involucrada
    2. Orden: Identificador auto numérico de la tabla
    3. ColOrigen: Nombre de la columna o campo en la base de datos origen
    4. ColDestino: Nombre de la columna o campo en la base de datos destino
    5. Longitud distinta: La longitud del campo difiere de una base de datos a otra
    6. Null distinto: El manejo de nulos del campo difiere de una base de datos a otra
    7. Collate distinto: El idioma o COLLATE del campo difiere de una base de datos a otra
    8. Tipo de dato distinto: El tipo de dato del campo difiere de una base de datos a otra
    9. Campo no está en origen: El campo o atributo no esta en la base de datos origen
    10. 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:

image

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:

  • Quitar el prefijo “PROC(“ en la propiedad del Database/ Set Location de los reportes
  • Que el controlador utilizado en algún sub reporte no coincida con el del reporte que lo contiene. Por ejemplo: el controlador del reporte es OLEDB y el controlador del sub – reporte es SQL.
  • Que el procedimiento almacenado de la base de datos no cuenta con las siguientes prácticas
    • 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.
  • Falta de controladores o librerías para lo cual se debe de correr el paquete redistribuible para 32 bits. CRRedist2008_x86.msi. Se que el instalador es para un sistema operativo de 32 bits, no es un error, y no se debe de instalar el redistribuible para 64 bits aunque parezca en primera instancia lo mas adecuado o correcto, repito "NO” se debe de instalar CRRedist2008_x64, la versión que hace que los reportes funcionen óptimamente es el redistribuible de 32 bits que se menciona al inicio de este punto y de el cual se agrega vínculo de descarga, independientemente si el SO es de x64, lo correcto es el redistribuible de x32.
  • Bajar el UAC (User acceso control) de Windows 7 al mínimo
  • Que el idioma (collate) del servidor y la base de datos sea el mismo (SQL_Latin1_General_CP1_CI_AS)
  • Ejecutar siempre como administrador la aplicación realizando los siguientes pasos:
    • 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:

    http://answers.microsoft.com/en-us/ie/forum/ie9-windows_7/ie9-beta-gives-blank-screen/e0167934-da23-4f1f-ac34-c0b5d0891aa9

    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
    image
    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.

     

    1. Asegurarse que la PC virtual a la cual se le desea cambiar la MAC esta detenida
    2. Cerrar por completo el Manager de Virtual PC
    3. Buscar el archivo con extensión VMC correspondiente
    4. Abrirlo con el block de notas o cualquier editor de texto
    5. encontrar la línea:
      1. <ethernet_card_address type="bytes">0003FFxxxxxx</ethernet_card_address>
    6. Cambiarla por la siguiente línea:
      1. <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