Validar datos obtenidos de csv

Estoy haciendo un programa para importar registros de un csv a una tabla dbf, pero necesito validar la información que obtengo del csv, es decir, asegurarme que la información que estoy obteniendo sea la que necesito, me explico con un ejemplo:
    Estoy importando datos de clientes y pedidos desde archivo csv y por el momento tengo algo así:
      Creo un cursor y le agrego los datos del csv, posteriormente le agrego un valor a uno de los campos y luego lo agrego a la tabla, es decir, pido que el usuario seleccione el archivo con un getfile cArchivo = GetFile("Archivo de texto separado por comas(.csv):csv", "Archivo:", "Abrir", 0, "Seleccione el archivo a abrir")
Luego necesito validar de alguna forma que no quieran subir el archivo de pedidos en clientes y clientes en pedidos, es decir que en la opción de pedidos, verificar que efectivamente hayan seleccionado el archivo de clientes y en la de pedidos, el archivo de pedidos.

1 respuesta

Respuesta
1
Esa está interesante. Por lo pronto se me ocurre que, siendo que el archivo es un csv, debe tener un encabezado, es decir, la primer línea del archivo indica el nombre de cada columna que tiene dicho archivo. Entonces lo que se puede hacer es obtener esa primera línea, la del encabezado, y leer una o más columnas para con ello poder determinar para qué tipo de tabla va dirigido. Podrías usar algo así:
** Se obtiene el nombre del archivo
cArchivo = GetFile("Archivo de texto separado por comas(.csv):csv", "Archivo:", "Abrir", 0, "Seleccione el archivo a abrir")
** Se obtiene la primer línea del archivo
cEncabezado = ""
nIdArc = FOPEN(cArchivo)  && Se abre el archivo
IF nIdArc > 0
    cEncabezado = FGETS(nIdArc)  && Obtiene una línea del archivo
    FCLOSE(nIdArc)
ELSE
    MESSAGEBOX("Error al abrir el archivo.", 16, "Error")
    RETURN
ENDIF
** Se obtiene el nombre de la primer columna del archivo
cColumna = LEFT(cEncabezado, AT(",", cEncabezado) - 1)
** Ya con la primer columna, muy probablemente se pueda determinar para qué tabla es
IF LOWER(cColumna) == "IdPedido"
    ** Por ejemplo, aquí se sabría que va para la tabla Pedidos
ELSE
    ** Acá iría para la otra tabla
Endif
Algo así debería funcionar, en caso de que la primer columna de ambas tablas se llame igual, pues tendrías que evaluar la segunda, y así consecutivamente, hasta que puedas determinar la tabla destino. Igual si no le hayas para determinar los nombres de las otras columnas, me avisas y vemos cómo se podría hacer.
Muy bien, excelente respuesta, me sirvió mucho, como te darás cuenta soy novato en esto del foxpro y como todos, tengo que resolver los problemas que a mi jefe se le ocurren, afortunadamente existen expertos capaces de ayudar, gracias mil y saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas