lunes, 28 de octubre de 2013

Importar data a SalesLogix sin Scribe ni Inaport - Herramienta gratis

Siempre se dice que es necesario importar la data utilizando las claves que maneja SalesLogix, y ciértamente, aunque funciona insertar un valor numérico convertido a cadena, la verdad que se ve muy poco profesional trabajar de esta manera.

Se me ha dado un par de ocasiones, que en la implementación es necesario cargar maestros de datos con gran número de registros (10,000 ó +) que me han pasado en un Excel y por alguna razón, no he tenido disponibilidad de usar ni Scribe ni Inaport.

Para fines educativos, he creado una herramienta que permite generar un número determinado de registros, y luego por "query" de base de datos, he realizado los "updates".

Para descargar la herramienta lo puedes hacer de GitHub https://github.com/scorpile/Development donde también encontrarás el código fuente.  Eso si! Es una herramienta que hice muy rápido y no hice el "error handling" así que no critquen!

Primero necesitamos importar todos los registros que deseemos cargar del Excel a SQL u Oracle.  Yo lo he conseguido creando la tabla auxiliar (a la que llamaré TEST) y colocando los campos que corresponden a las columnas en el Excel.  Luego he creado una fórmula en Excel para crear una sentencia p.ej: "INSERT INTO TEST (ACCOUNT,CONTACT,EMAIL,MAINPHONE) VALUES ('VALOR','VALOR','VALOR','VALOR')" y he concatenado las columnas para que se registren los valores.  Propagando la fórmula hasta abajo, he logrado conseguir insertar todos mis valores.



Luego abrimos la herramienta:


Llenamos los datos del Servidor (ya se que dice Serevidor, fue un "typo" y ya les dije que fue algo rápido).  Este es el de SLX y no el de BD.  Igual el conector y el pass del usuario Admin.

Colocamos la tabla que en este caso utilizaré Account, utilizaré el campo USERFIELD1 para enlazar, y en este caso es necesario marcar el checkbox "Utilizar" del SECCODEID ya que la tabla Account tiene habilitada la seguridad.  Colocamos una cantidad N de registros a insertar.

Al final, presionamos el botón "Realizar la Inserción" y el programa se conectará a SalesLogix e insertará la cantidad especificada de registros en la tabla especificada, y en el campo de enlace, colocará valores como "SLXKey1, SLXKey2, SLXKey3 ... SLXKeyN".

Por último, realizamos el update con el siguiente "query":

UPDATE SYSDBA.ACCOUNT SET SYSDBA.ACCOUNT.ACCOUNT = AUX.ACCOUNT FROM
(
SELECT 'SlxKey' + CAST (ROW_NUMBER () OVER (ORDER BY CAMPO) + 3 AS varchar) AS ID,ACCOUNT FROM SYSDBA.TEST
) AS AUX WHERE SYSDBA.ACCOUNT.USERFIELD1 = AUX.ID


Mucho cuidado!  Como pueden apreciar, estamos actualizando el valor de Account.Account con el valor del campo Valor en la tabla auxiliar "Test".  Obvio los demás campos los ponemos en el mismo update.

Si no se tiene cuidado con lo que se está haciendo, en lugar de una ayuda lo que vamos es a destruir nuestra tabla.

Lo que deben tener cuidado es con valores en los campos que ya contengan la comilla simple " ' " en cuyo caso, desde el Excel las reemplazarían por doble comilla simple (2 veces ' ).