pertenecia a fichero dbf

Post Reply
Julio Cepeda
Posts: 47
Joined: Wed Oct 12, 2005 6:58 pm

pertenecia a fichero dbf

Post by Julio Cepeda »

Utilizando ficheros dbf normales de siempre, y ficheros índices de tipo "ntx", donde un fichero "dbf" tiene varios ficheros índices, "ntx".
En el directorio de la aplicación hay varios ficheros "dbf" y cada uno tiene, en el mismo directorio común, sus propios índices "ntx".
Por ejemplo:
CLIENTES.DBF tiene índices CLIENNUM.NTX, CLIENNOM.NTX, CLIENNIF.NTX
OPERARIO.DBF tiene índices OPERNUME.NTX, OPERNOMB.NTX

Al abrir un fichero índice con la función cGetFile32( "*.ntx",'Abrir índice ...' ) hay alguna manera de comprobar si el
índice que se selecciona en cGetFile32 pertenece a el área de trabajo activa.

Dicho de otra forma ¿ Existe alguna función en Harbour que permita saber si el índice CLIENNUM.NTX pertenece al fichero
CLIENTES.DBF o no ?

Gracias de antemano y recibir un saludo.
User avatar
acuellar
Posts: 1312
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: pertenecia a fichero dbf

Post by acuellar »

Julio

Es mejor usar .CDX

Tus indices tenes que crearlos con TAG ya que crea un solo archivo de indices con el mismo nombre de la base .DBF
Hazlo asi:

Code: Select all

 RddSetDefault( "DBFCDX" )

USE CLIENTES NEW 
INDEX ON CODIGO TAG CODIGO
INDEX ON NOMBRE TAG NOMBRE
INDEX ON MONTO TAG MONTO

// CUANDO TENGAS QUE CAMBIAR DE INDICE LO HACES ASI
SET ORDER TO TAG NOMBRE
 
Saludos,

Adhemar
Saludos,

Adhemar C.
Julio Cepeda
Posts: 47
Joined: Wed Oct 12, 2005 6:58 pm

Re: pertenecia a fichero dbf

Post by Julio Cepeda »

Muchas gracias Adhemar.
Pero no estoy haciendo una aplicación de gestión, en mis aplicaciones de gestión si utilizo índices "cdx".
Lo que estoy haciendo es una aplicación similar al DBU de Clipper pero de 32 bits, ya que tanto el DBU, como el Prometeus
son ambos de 16 bits.
En esta aplicación cuando el usuario abre una DBF y a continuación un indice, aparecen todos los ficheros existentes en el directorio con extensión "ntx", si se abre un fichero "ntx" que no corresponda a la base de tados en uso, se produce un error.
Por esto quiero saber si el indice que el usuario intenta abrir, ( a través de la función cGetFile32()), corresponde o no al fichero DBF en uso.

Gracias de nuevo.
User avatar
Raymundo Islas M.
Posts: 590
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Re: pertenecia a fichero dbf

Post by Raymundo Islas M. »

Julio,

Cierto que son apps 16 bits, pero te deberian de funcionar al 100% en 32 bits, asi he estado usando Prometheus.

Inclusive, montando una Pc Virtual en W7 a 64 bits, los puedo seguir usando sin problema alguno, tanto Prometheus como WorkShop.

Saludos
FWH 10.6 + xHarbour + Borland 582
Carlos Mora
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: pertenecia a fichero dbf

Post by Carlos Mora »

Julio,

hasta donde me acuerdo (hace bastante que no uso ntx) no hay nada dentro de un ntx que te diga a que dbf pertenece. Lo único que se me ocurre es que cuando hagas el SET INDEX TO lo encierres en un BEGIN SECUENCE y captures el error al abrirlo. Se puede deducir que el índice no corresponde a al dbf si en la expresión del indice o en la condicion 'for' hay algún campo que no existe en la tabla lo que producirá un error que tu puedes capturar. Además algunas herramientas creaban una especie de ini para cada dbf donde guardaban los índices con los que los habías abierto la última vez, creo que es una buena idea por si tienes que seguir con ntx.

Es lo que se me ocurre hasta el momento. ¿No andarán por ahí los fuentes del Prometeus , o su autor? Sería fantástico poder recompilarlo para 32 bits.
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: pertenecia a fichero dbf

Post by MarioG »

Pregunten en el foro Puertosur si laguen tiene el correo de Daniel Andrade, autor de Prometeus; que ya hace unos años por razones laborales se paso a Delphi, si mal no recuerdo.
http://ar.groups.yahoo.com/group/Puerto ... =312688556

Saludos
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Julio Cepeda
Posts: 47
Joined: Wed Oct 12, 2005 6:58 pm

Re: pertenecia a fichero dbf

Post by Julio Cepeda »

Muchas gracias a todos por vuestro interés.
Estoy intentando acceder a los ficheros "NTX" a bajo nivel, (Fopen() ), buscar el campo clave, y verificarentre los nombres de _, si este campo clave pertenece a la base de datos en uso.
Tengo un antiguo libro de Editorial Anaya publicado en 1992 escrito por Rick Spence desarrollador de Clipper, que al final del libro incluye la estructura de ficheros "NTX" además de un pequeño programa en C para abrirlos y ver la cabecera.
Ya os contaré si funciona o no el invento.

Saludos y gracias de nuevo.
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: pertenecia a fichero dbf

Post by hmpaquito »

Julio,

Siento decir que no es suficiente con saber si la clave del .ntx se corresponde con la .dbf, porque podria ocurrir que diferentes .dbfs tuvieran la misma clave. Se podria hacer una "aproximación" mirando si el .ntx tiene los mismos registros que el .dbf... pero sólo sería una aproximación porque podría darse la circunstancia también que dos .dbfs tuvieran los mismos nombres de campo y misma cantidad de registros.... ya digo sólo aproximaciones, nunca certezas.

Saludos
Carlos Mora
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: pertenecia a fichero dbf

Post by Carlos Mora »

hmpaquito wrote:Se podria hacer una "aproximación" mirando si el .ntx tiene los mismos registros que el .dbf... pero sólo sería una aproximación porque podría darse la circunstancia también que dos .dbfs tuvieran los mismos nombres de campo y misma cantidad de registros.... ya digo sólo aproximaciones, nunca certezas.
Tampoco valdría esa aproximación, ya que un índice con cláusula FOR tiene menos registros que la tabla.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
xmanuel
Posts: 613
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla
Contact:

Re: pertenecia a fichero dbf

Post by xmanuel »

Me temo que eso no es posible y lo que comentas es un poco complicado ya que un indice puede estar formado por una expresión incluso del campo de otra DBF...
Yo te recomiendo que tenga una "hoja de estilos" por ejemplo una cosa que yo hago es llamar a los índices así:

i01Bancos.ntx
i02Bancos.ntx
i03Bancos.ntx

Ves que comienza con la "i" de índice, un numero que sería el orden que ocupan para, por ejemplo, el SET ORDER y por último la DBF.

Y la DBF se llamaría:
Bancos.dbf

Lógicamente con esto lo tienes fácil usando la función de (x)Harbour "SubStr()" sacar el nombre de la DBF.

Y si usas el SET AUTOOPEN creo que ya lo tienes todo. :D

Espero haberte ayudado.

Un saludo
Manu Expósito
______________________________________________________________________________
Sevilla - Andalucía
Post Reply