jueves, 10 de julio de 2008

IE6 y consola javascript - Sintaxis Error, un error que puede generar grandes problemas

Dar soporte para IE6 es complicado, y mas cuando existen problemas de Javascript, que en ocasiones los errores presentados, no son entendibles, por la "consola de javascript" que este maneja.

Problema continuo: SINTAXIS ERROR (Line 1)
Consola Javascript del IE6

Este problema puede ser algo engorroso de encontrar, teniendo en cuenta, que uno puede tener toda su programación bien, incluso cuando usando navegadores diferentes, el problema no se presenta.

Mi caso:
Llevó 2 días trabajandole a un problema que me tenia algo consternado, pero por más que buscaba no podía encontrar el error presentado en mi codigo javascript.

Opciones de revisión que use:
1. Buscar un error con la consola del IE6 es un problema pues no presenta mayores ayudas para ver en qué punto se está presentando el error.

2. Buscar una alternativa para hacer DEBUG que me dé "un poco más de información" para poder hacer DEBUG a mi programación JS.
Buscando encontre algo muy bueno, llamado el JS COMPANION, que aunque no es como el FIREBUG del FIREFOX, pues ayuda muchisimo para este caso de revisar en IE6

Aunque contaba ya con el JS COMPANION montado en mi IE6 los problemas ya eran más faciles de encontrar, pero sin embargo seguia el SINTAXIS ERROR (line 1).

Metodo de depuración extrema....
Desesperado empece a depurar mi archivo JS quitando TODAS las funciones y agregando de a una para encontrar el PUNTO EXACTO del problema.

Despues de casí 2 días intentando encontrar el problema..... LO ENCONTRÉ....

La consola de javascript de IE6, no interpreta bien los CARACTERES ESPECIALES.
Es decir, si en los comentarios tienes un caracter especial como (á,é,í,ó,ú,ç....etc) y para cólmo lo tienes al final de la línea, la consola no alcanza a interpretar ese caracter y lo que termina haciendo es poniendo un caracter diferente, que termina tomando más caracteres a su derecha, e incluso SUBE la siguiente línea, quedando esta comentariada, aquí el caso:


Código que escribí:

1. ....
//codigo javascript anterior
2. if ( parseInt(cont) == parseInt(fin) ){
3. MSG_TERMINO =
" - El proceso exitoso.";
4. btnEjecicionProceso("termino"); //oculta el boton de ejecución
5. }
6. ...
//codigo javascript siguiente

Ponga atención en la linea 4. en el comentario "ejecución" la tilde

Codigo interpretado por la consola del Javascript del IE6, ahora mire el resultado:
1. ....//codigo javascript anterior
2.
if ( parseInt(cont) == parseInt(fin) ){
3. MSG_TERMINO =
" - El proceso exitoso.";
4. btnEjecicionProceso
("termino"); //oculta el boton de ejecuci� }
5. ...
//codigo javascript siguiente

Mire la linea 4. interpretada y como quedó..
Cosas a revisar...
1. Si mira las lineas de codigo, ya son sólo 5, y en el codigo anterior eran 6.
2. El caracter con tílde no lo interpreto bien y puso otro, pero adicionalmente, se COMIÓ o SUBIÓ la linea siguiente donde estaba el cierre del la llave del if asi: � }
3. La 5. linea se la llevó para el comentario, en la linea 4. y obviamente esto ya es un error de programación.

Conclusión...

En los comentarios NUNCA, pero NUNCA, volver a usar palabras especiales (á,é,í,ó,ú,ç,ñ,) sólo use, solamente las letras básicas asi: a-zA-Z y numeros del 0-9.

viernes, 27 de junio de 2008

Hacer un indice alfabético, al extraer la primera letra de un una campo de la base de datos

El día de hoy me encontre con la necesidad de crear un indice alfabético de una tabla, para poder acceder a la información de manera rapida.

Es una información para listar, listado de paises.

(Se que es una bobada pero siempre hay personas que le sirve esto)

Esto es en definitiva lo que obtuve:




El punto es que, para hacerlo, utilice un query, hacia de una vez todo el trabajo de:
1. Sacar del campo "pais" solo la primera palabra de esta.
2. Si hay varios paises que empiezan con la misma letra, hacer que solo muestre uno.
3. Que el indice alfabético quede ordenado.

Para cada punto se hace esto:
1. Se usa un LEFT(CAMPO, NUMEROLETRASATRAER)
2. Usar DISTINCT para restringir las letras iguales.
3. Usar el ORDER BY para el campo del pais

El query final debe ser asi:

SELECT DISTINCT LEFT(NombrePais,1) as LETRA
FROM TABLA_PAIS
ORDER BY LEFT(NombrePais,1)
Probado para: Sql server

Espero sea util.