pertenecia a fichero dbf

pertenecia a fichero dbf

Postby Julio Cepeda » Mon Aug 29, 2011 8:47 am

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
Julio Cepeda
 
Posts: 65
Joined: Wed Oct 12, 2005 6:58 pm

Re: pertenecia a fichero dbf

Postby acuellar » Mon Aug 29, 2011 1:10 pm

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  Expand view  RUN

 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.
User avatar
acuellar
 
Posts: 1645
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: pertenecia a fichero dbf

Postby Julio Cepeda » Mon Aug 29, 2011 3:19 pm

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.
Saludos

julio@cepedaserinf.es
FiveWin 22.12 + Harbour 3.2.0dev (r2008190002), BCC 7 Windows 11
User avatar
Julio Cepeda
 
Posts: 65
Joined: Wed Oct 12, 2005 6:58 pm

Re: pertenecia a fichero dbf

Postby Raymundo Islas M. » Tue Aug 30, 2011 2:44 am

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
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Re: pertenecia a fichero dbf

Postby Carlos Mora » Tue Aug 30, 2011 6:35 am

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.
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: pertenecia a fichero dbf

Postby MarioG » Thu Sep 01, 2011 2:30 pm

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/PuertoSur/?yguid=312688556

Saludos
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: pertenecia a fichero dbf

Postby Julio Cepeda » Mon Sep 05, 2011 10:27 am

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 los campos, 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.
Saludos

julio@cepedaserinf.es
FiveWin 22.12 + Harbour 3.2.0dev (r2008190002), BCC 7 Windows 11
User avatar
Julio Cepeda
 
Posts: 65
Joined: Wed Oct 12, 2005 6:58 pm

Re: pertenecia a fichero dbf

Postby hmpaquito » Mon Sep 05, 2011 10:50 am

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
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: pertenecia a fichero dbf

Postby Carlos Mora » Mon Sep 05, 2011 12:12 pm

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"
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: pertenecia a fichero dbf

Postby xmanuel » Mon Sep 05, 2011 12:54 pm

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
xmanuel
 
Posts: 763
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 16 guests