PDA

Ver la Versión Completa : Traspaso de datos de archivos dat (visual basic) creo a paradox


Vero_rm80
10-08-2006, 19:19:35
Hola, no soy una programadora demasiado experta y para colmo tengo que hacer un traspaso de datos de archivos .dat (creo que generados con visual basic) a una aplicacion desarrolada en delfi con motor de datos paradox( .db)
me gustaria que me hecharais una mano.
ahh otra cosa el archivo lo puedo abrir con el bloq de notas y no veo claramente los datos lo he intentado hacer como si fuera un archivo de texto pero las lineas no tienen relacion.
espero haberme esplica<do bien y muchiiiiiiiiisimas gracias de antemano:D

egostar
10-08-2006, 19:37:02
El problema es que es un archivo tipeado, si no conoces la estructura de ese archivo es dificil que puedas leerlo y obtener la información del mismo, por eso es que veras caracteres "raros" al abrirlo con un editor y no como un archivo de texto que puedes leer sin problemas.

Los archivos tipeados no estan compuestos de lineas de caracteres como los secuenciales, sino que tienen una estructura fija y estan determinados por los datos que contiene que pueden ser enteros, reales, string.

Mi sugerencia es que consigas la estructura del archivo y si tienes mas dudas entonces si en este foro te podrán ayudar.

Saludos

Vero_rm80
10-08-2006, 19:47:51
muchisimas gracias egostar :p ,
ahunque no me ha servido de mucho, la verdad es que no veo caracteres raros, veo algo similar a esto
" 11/10/200001 1 LAMO GONZALEZ JESUS COSIO ESCALANTE, 2, 1º 39500 - CABEZON DE LA SAL 942- Cantabria 13203952-C942/700-447 1 "
como puedes ver los datos son totalmente legibles pero no tienen lineas normales como cualquier archivo de texto, subo un ejemplo haber si alguien me puede hechar una mano, porque me he metido en un berenjenal.....

http://www.dantecantabri.com/01cliente0.dat (http://www.dantecantabria.com/01cliente0.dat)

:o gracias por todo:o

roman
10-08-2006, 19:52:04
No puedo bajar el ejemplo

// Saludos

Vero_rm80
10-08-2006, 19:55:06
:( ups ya lo siento:( , ya esta modificado.....
lo siento mucho
de todas formas repito el enlace

http://www.dantecantabria.com/01cliente0.dat
:p

Vero_rm80
11-08-2006, 10:07:53
:confused: :confused: :confused: :confused: :confused: :confused: :confused:
son las 10 de la manaña y me sigo volviendo loca .............. ayuda porfi¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ :o

egostar
11-08-2006, 16:59:05
Ten un poco de paciencia, de hecho ya baje el archivo y por lo que veo es un archivo con datos generales de ciertas personas, seguro alguien mas estará ahora tratando de darte una respuesta.

Saludos.

Vero_rm80
11-08-2006, 17:18:53
:o si ya se que tengo que tener paciencia .... jejeje.

ahh otra cosa el archivo que he subido es el de clientes,

Y de verdad muchisimas gracias, sois unos soles

:p :p :p :p :p :p :p :p

egostar
11-08-2006, 21:17:17
Hola Vero, una pregunta

Estuve checando el archivo que tienes y encontre algunos ENTER dentro del mismo, la pregunta es, ¿este archivo es el original? ¿no lo editaste y le diste ENTER en algunas partes del archivo?

Porque los ENTER que existen no nos dan una pauta para saber donde termina una linea, es decir, hay lineas de 58169, 27, 9, 57548 Caracteres entre otras lineas de caracteres.

Esto no tiene ningún sentido ni nos ayuda mucho.

Saludos.

AGAG4
15-08-2006, 17:48:11
Es mejor que consigas la estructura del archivo, no batallarás nada....

Vero_rm80
28-08-2006, 09:58:01
hola a todos, muchas gracias por vuestras contestaciones, he estado de vacaciones y no he podido contentaros.
sobre lo de los intros ya me he dado cuenta y el archivo es el original, no esta modificado

Lepe
28-08-2006, 14:36:48
Los intros no significan nada, bien puede ser el contenido de un Memo, ayudaría un poco ver los labels que tienen en el programa actual, ya que la cadena

942- Cantabria 13203952-C942/700-447 1 1 1 1
No tenemos ni idea de como llamarle, es decir qué nombre ponerle cada uno de los "1" que aparecen.

Además por el nombre quizás pudieramos identificar cuantos caracteres lleva o incluso el tipo de datos, Boolean, entero o caracter.

En principio, si lleva un patrón:
- 20 espacios en blanco (la pregunta es POR QUÉ LLEVA ESOS ESPACIOS)
- fecha en formato dd/mm/yyyy
- 2 caracteres (01)
- 3 caracteres que guardan un número. No pondría el campo como integer, ya que según veo, está todo guardado como texto.
- 4 caracteres en blanco (que puede pertenecer al campo anterior o al nombre. En principio yo uniría este campo con el anterior, pero lo hago sin ton ni son).
- 40 caracteres para el apellido
- 20 para el nombre
- 40 letras para la direccion
- 30 para ¿el código postal y ciudad?
- 20 para la provincia (incluido el número Ej: "942 - Cantabria")

y el resto... pues es lo que decía, necesitamos saber, al menos, el nombre de los campos. Hasta el momento yo haría el registro como:

type Tdatos = record
vacio : string[20];
fecha: string[10];
campo1:string[2];
campo2:string[7];
apellidos:string[40];
nombre: string[20];
direccion:string[40];
cpCiudad:string[30];
provincia:string[20];
end;


Se trataría de ir leyendo el archivo ese número fijo de caracteres. Hace tiempo que no lo uso, pero sería algo así como:

var F:TextFile;
datos : Tdatos;
begin
AssignFile(F, 'ruta completa del archivo y extension');
read (f,datos.vacio,20); // el número es el ancho de cada campo
read(f,datos.fecha, 10);
read(f, datos.campo1, 2);
read(f, datos.campo2, 7);
....
CloseFile(F);


Pero vamos, si son pocos datos le dices que los meta de nuevo y te olvidas de armar este puzzle. Si necesitas implementarlo, danos toda la info que puedas sobre el programa, campos, labels, etc.

Saludos

Lepe
28-08-2006, 14:46:34
Me ha faltado decir cómo he sacado la estructura. Creo que es lo más importante:

- Abro con el bloc de notas, Formato -> Ajuste de línea desactivado !!!
- Pulso la tecla SHIFT y le voy dando con el cursor derecho mientras cuento las veces que lo he pulsado.
- Paro de contar cuando encuentro un dato "nuevo".
- Contrasto esa longitud que acabo de contar con los demás Clientes. Para buscar el siguiente cliente busco la siguiente fecha en formato dd/mm/yyyy (solo hay una fecha con ese formato).

Hay editores como el JetEdit, o incluso abriendolo con delphi, que te dicen la columna en la que estas, y solo tienes que restar... pero eso es otra historia ;).

Edito: En realidad no hay "separador entre registros", simplemente escribe cada dato, uno detrás de otro, rellenando con espacios en blanco el ancho de cada campo.

Lo más dificil de detectar son los campos vacíos consecutivos, ya que si no tiene nada (solo espacios), pues no se sabe si son dos campos de longitud 20, o bien uno de 40.

Saludos