Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-01-2005
DobleSiete DobleSiete is offline
Miembro
 
Registrado: ene 2005
Posts: 32
Poder: 0
DobleSiete Va por buen camino
Unhappy Extraer metadatos de archivos DBF

Saludos a todos en el foro...

Tengo dos bases de datos, una en dBASE III y la otra InterBase 6, el asunto es realizar una transición leyendo los registros de un archvo DBF y copiandolos a una tabla relacional en tiempo de ejecución (la estructura es estática).

Mi pequeño problema es que existen registros marcados para ser eliminados que son copiados a la base de datos InterBase, por lo tanto obtengo registros duplicados y registros "basura"

Mi idea es extraer metadatos de un archivo DBF para saber especificamente cuando un registro ha sido marcado para ser eliminado y de esta forma no sea copiado... pero he allí mi "pequeño gran problema" no se si es posible y de ser así cual seria el procedimiento, obviamente usando Delphi 7 ...

gracias a todos por adelantado

PD: para convertir los archivos DBF a InterBase utilice K2Pump http://www.ibphoenix.com/downloads/k2pump.zip
__________________
"Nadie es perfecto" (Don Nadie)
Responder Con Cita
  #2  
Antiguo 06-01-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues mira, me acabo de bajar la utilidad que comentas, me he cogido una tabla Dbase con un campo memo incluso, la tabla tiene 2499 Registros he marcado para borrar 50, no he hecho pack y la he dejado como comento.

Con la utilidad que mencionas recien descargada, lo he pasado a una base de datos de Firebird 1.5, me ha pasado 2.449 registros, como ves los marcados no me los ha pasado.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 07-01-2005
DobleSiete DobleSiete is offline
Miembro
 
Registrado: ene 2005
Posts: 32
Poder: 0
DobleSiete Va por buen camino
Gracias por la información, eso me aclara la mitad del problema... solo la mitad, el asunto es que los registro como tal no aparecen en un reporte hecho en Clipper, pero están en los archivos DBF... que son convertidos a tablas relacionales.

Tal vez sea una confusión, pero estoy casi seguro que los reportes de Clipper son generados a partir de los mismos archivos DBF que son utilizados en la conversión, y que esos registros marcados para eliminación estan pasando... así que no entiendo

En otras palabras ¿tendrá algo que ver alguna función de Clipper? (por ejemplo pack) pienso que no, pero... :-(

Lo unico que pudiese aclararme las dudas es ver los metadatos de los archivos, pero el DataBase Desktop no muestra información acerca de registros "eliminados" ¿o si?

Última edición por DobleSiete fecha: 07-01-2005 a las 12:56:05.
Responder Con Cita
  #4  
Antiguo 07-01-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Cita:
Gracias por la información, eso me aclara la mitad del problema... solo la mitad, el asunto es que los registro como tal no aparecen en un reporte hecho en Clipper, pero están en los archivos DBF... que son convertidos a tablas relacionales.
Los Ficheros de Clipper, generalmente generados con la utilidad DBU, son ficheros de tipo Dbase.

Cita:
Tal vez sea una confusión, pero estoy casi seguro que los reportes de Clipper son generados a partir de los mismos archivos DBF que son utilizados en la conversión, y que esos registros marcados para eliminación estan pasando... así que no entiendo
En un informe hecho en Clipper los registros marcados para borrar no saldrán, (normalmente), porque no se si sabrás que existen una instrucción Xbase, Set Deleted On/Off y dependiendo como este esta opción los registros se verán o no, a pesar de estar marcados para borrar, incluso existe otro instruccion Recall All que desmarcaría todos los registros marcardos para borrar.

Cita:
En otras palabras ¿tendrá algo que ver alguna función de Clipper? (por ejemplo pack) pienso que no, pero... :-(
Si se ejecuta Pack sobre una tabla Dbf todos los registros marcados para borrar desaparecerán, no siendo posible recuperarlos.

Cita:
Lo unico que pudiese aclararme las dudas es ver los metadatos de los archivos, pero el DataBase Desktop no muestra información acerca de registros "eliminados" ¿o si?
Las Tablas Dbase no tienen Metadatos, por eso no es posible mostrarlos, pero si utilizas DBU al visualizar los registros de una tabla, te mostrará todos pero cuando pases sobre los borrados verás <Deleted>. que como dije antes no desaparecen del todo hasta que se ejecuta un Pack sobre dicha tabla, de igual manera ocurre con Dbase III y Dbase IV.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 07-01-2005
DobleSiete DobleSiete is offline
Miembro
 
Registrado: ene 2005
Posts: 32
Poder: 0
DobleSiete Va por buen camino
Toda esa infomación es nueva para mi (excepto la existencia del DBU :-)) y alumbra bastante el problema... pero (siempre el "pero" por delante) no explica porque TU usaste el k2pump y transfirió los archivos marcados para borrar, pero en MI caso si los transfirió ¿por que?

Tu me hablaste de Firebird 1.5, yo estoy usando InterBase 6.0 ¿tendra algo que ver?

Ademas tu me dices que los archivos DBF no tienen metadatos, eso no lo asimilo bien, k2pump utiliza funciones de Delphi para extraer información de los DBF, como nombres de archivos, tablas, tipos de datos, longitud, etc. entre esos datos debería estar el "switch" (por llamarlo de alguna manera) que dice "esta marcado para borrar, no te lo puedo proporcionar" ¿o eso lo maneja el mismo DBF?

Gracias por tu enorme ayuda ...
Responder Con Cita
  #6  
Antiguo 07-01-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Cita:
Ademas tu me dices que los archivos DBF no tienen metadatos, eso no lo asimilo bien, k2pump utiliza funciones de Delphi para extraer información de los DBF, como nombres de archivos, tablas, tipos de datos, longitud, etc. entre esos datos debería estar el "switch" (por llamarlo de alguna manera) que dice "esta marcado para borrar, no te lo puedo proporcionar" ¿o eso lo maneja el mismo DBF?
La información de los campos y el tipo de los mismos, se obtiene del propio DBF, no olvides que los Dbf son tablas planas de escritorio y no están almacenados en un solo archivo como Interbase, Firebird, o incluso Access aunque este último también es un sistema de escritorio.

En los Dbf, cada tabla es un archivo, por lo tanto la única información que podemos extraer está en la propia tabla, no existe un sistema de metadatos y dominios como en Interbase y Firebird.

Si utilizamos el BDE, que es el motor de base de datos de Borland que incorpora Delphi, podemos extraer todas estas propiedades a través de distintas funciones, FieldCount, FielDefs.....

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 22:03:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi