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


Responder a