Hmmm
Yo procesaría cada archivo TXT para pasarlo a un viejo y querido
documento XML, quizás un dataset, etc. , quizás leyendo un renglón
entero y con String.Split y un poco de imaginación, posiblemente
utilizando una tabla de configuración que describa la posición de cada
campo, etc. y hacés un código único para importar todos los XML.
Como sea, una vez en XML, el código que lo procese es uno solo, porque
el elemento <CUIT> es el mismo para todos y como decís que sufre las
mismas validaciones en todo el universo de empresas, va como tiro. Si lo
hacés dataset lo pegás de una en cualquier base de datos.
También sería válido utilizar entidades, pero en definitiva es casi lo
mismo.
Si te están apretando con los tiempos, renunciá a escribir las rutinas
en .NET, y fíjate con el proveedor administrado de ODBC utilizando
schema.ini junto al driver de texto que admite definición de campos en
archivos delimitados con longitud de registro fija. El problema acá es
la dualidad 32/64 bits, se complica con el driver de 64 (el conseguirlo)
(http://www.geekays.net/post/2008/11/05/schemaini-file-to-interpret-column-attributres-while-reading-a-CSV-using-MS-Text-Driver.aspx)
Suerte
Carlos
El 2013-04-10 22:30, Leandro Halfon escribio:
Hola Lista, les escribo para ver si alguno me puedo orientar para
donde encarar la solución de un desarrollo.
En que consiste?
Básicamente, tengo N empresas donde cada una tiene que importar a un
sistema un archivo txt delimitado por comas.
Cada empresa va a manejar un formato distinto pero los campos van a
ser los mismos en diferente orden.
Ej:
Empresa A envia el siguiente orden: CUIT, Razon Social, Domicilio..
Empresa B envia el siguiente orden: Domicilio, Razon Social, CUIT
A su vez, cada uno de esos campos tiene validaciones de longitud,
obligatoriedad, etc (son las mismas validaciones para todas las
empresas)
Lo que había pensado era que para cada empresa se configure en la
BD los campos y en que posicion/orden los envía y luego realizar un
bucle para validar cada campo
A Alguno se le ocurre otra posible solución que sea un poco
mas automática?
Gracias!
Leandro