Modo de apertura de indices en V.Foxpro6

05/08/2004 - 18:50 por Hecpok | Informe spam
Hola amigos

Soy novato en Vfox6. Vengo del mundo de clipper. Me gustaria saber como debo
abrir correctamente una tabla con su respectivo indice, pero en ambiente
multiusuario.
Hasta aqui, en mi primer sistema fox, simplemente he colocado :

select 1
use sueldos alias sueldos
set index to tag sueld_rut
select sueldos
- etc

pero al igual que en clipper, hay que tener cuidado con abrir el archivo
indice, sobretodo cuando se agregan registros. Me gustaria pedirles su
opinion, para ver si puedo ocupar la misma rutina, en foxpro, y si no
sirven, saber como podria adaptarlas.

Muchas gracias
HECTOR
Santiago de Chile

Rutinas :

FUNCTION BLOQREG && BLOQUEA REGISTROS
PARA INTENTOS
IF RLOCK()
RETURN .T.
ENDIF
FOR NRO=INTENTOS TO 0 STEP -0.5
IF RLOCK()
RETURN .T.
ENDIF
INKEY(.5)
NEXT NRO
RETURN(.F.)

FUNCTION BLOQARC && BLOQUEA ARCHIVOS
PARA INTENTOS
IF FLOCK()
RETURN .T.
ENDIF
FOR NRO=INTENTOS TO 0 STEP -0.5
IF FLOCK()
RETURN .T.
ENDIF
INKEY(.5)
NEXT NRO
RETURN(.F.)

FUNCTION AGREGAR && CREA NUEVO REGISTRO
PARA INTENTOS
APPEND BLANK
IF !NETERR()
RETURN(.T.)
ENDIF
FOR NRO=INTENTOS TO 0 STEP -0.5
IF !NETERR()
RETURN(.T.)
ENDIF
INKEY(.3)
NEXT NRO
RETURN(.F.)

Preguntas similare

Leer las respuestas

#1 Diego Rodriguez
06/08/2004 - 13:42 | Informe spam
Error, en Fox no necesitás abrir los índices... una gran ventaja, no ?


Hecpok wrote:
Hola amigos

Soy novato en Vfox6. Vengo del mundo de clipper. Me gustaria saber como debo
abrir correctamente una tabla con su respectivo indice, pero en ambiente
multiusuario.
Hasta aqui, en mi primer sistema fox, simplemente he colocado :

select 1
use sueldos alias sueldos
set index to tag sueld_rut
select sueldos
- etc

pero al igual que en clipper, hay que tener cuidado con abrir el archivo
indice, sobretodo cuando se agregan registros. Me gustaria pedirles su
opinion, para ver si puedo ocupar la misma rutina, en foxpro, y si no
sirven, saber como podria adaptarlas.

Muchas gracias
HECTOR
Santiago de Chile

Rutinas :

FUNCTION BLOQREG && BLOQUEA REGISTROS
PARA INTENTOS
IF RLOCK()
RETURN .T.
ENDIF
FOR NRO=INTENTOS TO 0 STEP -0.5
IF RLOCK()
RETURN .T.
ENDIF
INKEY(.5)
NEXT NRO
RETURN(.F.)

FUNCTION BLOQARC && BLOQUEA ARCHIVOS
PARA INTENTOS
IF FLOCK()
RETURN .T.
ENDIF
FOR NRO=INTENTOS TO 0 STEP -0.5
IF FLOCK()
RETURN .T.
ENDIF
INKEY(.5)
NEXT NRO
RETURN(.F.)

FUNCTION AGREGAR && CREA NUEVO REGISTRO
PARA INTENTOS
APPEND BLANK
IF !NETERR()
RETURN(.T.)
ENDIF
FOR NRO=INTENTOS TO 0 STEP -0.5
IF !NETERR()
RETURN(.T.)
ENDIF
INKEY(.3)
NEXT NRO
RETURN(.F.)


Respuesta Responder a este mensaje
#2 Hecpok
06/08/2004 - 21:03 | Informe spam
Gracias por contestar, pero quede igual. En realidad mi principal temor es
con respecto al "append blank", ya que ahi era en clipper, donde existian
problemas. ¿ seria posible que me dieran un pequeño ejemplo, sobre como usar
el "append blank" ?

Muchas gracias
Hector
Santiago de Chile



"Diego Rodriguez" escribió en el mensaje
news:
Error, en Fox no necesitás abrir los índices... una gran ventaja, no ?


Hecpok wrote:
> Hola amigos
>
> Soy novato en Vfox6. Vengo del mundo de clipper. Me gustaria saber como


debo
> abrir correctamente una tabla con su respectivo indice, pero en ambiente
> multiusuario.
> Hasta aqui, en mi primer sistema fox, simplemente he colocado :
>
> select 1
> use sueldos alias sueldos
> set index to tag sueld_rut
> select sueldos
> - etc
>
> pero al igual que en clipper, hay que tener cuidado con abrir el archivo
> indice, sobretodo cuando se agregan registros. Me gustaria pedirles su
> opinion, para ver si puedo ocupar la misma rutina, en foxpro, y si no
> sirven, saber como podria adaptarlas.
>
> Muchas gracias
> HECTOR
> Santiago de Chile
>
> Rutinas :
>
> FUNCTION BLOQREG && BLOQUEA REGISTROS
> PARA INTENTOS
> IF RLOCK()
> RETURN .T.
> ENDIF
> FOR NRO=INTENTOS TO 0 STEP -0.5
> IF RLOCK()
> RETURN .T.
> ENDIF
> INKEY(.5)
> NEXT NRO
> RETURN(.F.)
>
> FUNCTION BLOQARC && BLOQUEA ARCHIVOS
> PARA INTENTOS
> IF FLOCK()
> RETURN .T.
> ENDIF
> FOR NRO=INTENTOS TO 0 STEP -0.5
> IF FLOCK()
> RETURN .T.
> ENDIF
> INKEY(.5)
> NEXT NRO
> RETURN(.F.)
>
> FUNCTION AGREGAR && CREA NUEVO REGISTRO
> PARA INTENTOS
> APPEND BLANK
> IF !NETERR()
> RETURN(.T.)
> ENDIF
> FOR NRO=INTENTOS TO 0 STEP -0.5
> IF !NETERR()
> RETURN(.T.)
> ENDIF
> INKEY(.3)
> NEXT NRO
> RETURN(.F.)
>
>
Respuesta Responder a este mensaje
#3 Ricardo Passians
08/08/2004 - 15:45 | Informe spam
VFP no es Clipper. Tiene resuelto ese problema (y muchos otros) hace tiempo.

Lo ideal es crear indices CDX's (estructurales) los cuales se abren
automaticamente al abrir la tabla y no tienes que preocuparte por abrirlo
explicitamente.

Yo en Fox nunca he utilizado indices IDX's pues no es necesario. Con los
CDX's basta y sobra para todo.

Busca mayor info. en la ayuda de VFP sobre los indices estructurales.

En general, es bueno revisar bien la ayuda para saber las diferencias de Fox
respecto a Clipper antes de tratar de aprovechar el codigo de un antiguo
programa en Clipper pues eso puede ser problemático.


"Hecpok" wrote in message
news:u3$
Hola amigos

Soy novato en Vfox6. Vengo del mundo de clipper. Me gustaria saber como


debo
abrir correctamente una tabla con su respectivo indice, pero en ambiente
multiusuario.
Hasta aqui, en mi primer sistema fox, simplemente he colocado :

select 1
use sueldos alias sueldos
set index to tag sueld_rut
select sueldos
- etc

pero al igual que en clipper, hay que tener cuidado con abrir el archivo
indice, sobretodo cuando se agregan registros. Me gustaria pedirles su
opinion, para ver si puedo ocupar la misma rutina, en foxpro, y si no
sirven, saber como podria adaptarlas.

Muchas gracias
HECTOR
Santiago de Chile

Rutinas :

FUNCTION BLOQREG && BLOQUEA REGISTROS
PARA INTENTOS
IF RLOCK()
RETURN .T.
ENDIF
FOR NRO=INTENTOS TO 0 STEP -0.5
IF RLOCK()
RETURN .T.
ENDIF
INKEY(.5)
NEXT NRO
RETURN(.F.)

FUNCTION BLOQARC && BLOQUEA ARCHIVOS
PARA INTENTOS
IF FLOCK()
RETURN .T.
ENDIF
FOR NRO=INTENTOS TO 0 STEP -0.5
IF FLOCK()
RETURN .T.
ENDIF
INKEY(.5)
NEXT NRO
RETURN(.F.)

FUNCTION AGREGAR && CREA NUEVO REGISTRO
PARA INTENTOS
APPEND BLANK
IF !NETERR()
RETURN(.T.)
ENDIF
FOR NRO=INTENTOS TO 0 STEP -0.5
IF !NETERR()
RETURN(.T.)
ENDIF
INKEY(.3)
NEXT NRO
RETURN(.F.)


Respuesta Responder a este mensaje
#4 Leonardo Cadena
10/08/2004 - 14:39 | Informe spam
Hola amigo... hojala esto te sirva..
mira en VFP ya no se usan IDX eso ya es cuento del
pasado.. ano ser que quiers indexzar un archivo
(consulta) que resulta de un comando sql esto en visual
foxpro 6.0 no se puede todavia hacer un SQL Readwrite
pero las versiones 7.0 en adelante a Al Grano...

Mira.. Los Pasos

1 Crear una tabla
2 Index On Micampo Tag Miprimercdx Additive I Asi todos
lo indeces que queiras tener en esta tabla.. ok los que
queras no imporeta..

3. En El Momento de abrirla solo tenes que decirle
Select 0
Use Mitabla Shared ;
Again Alias Tablapruaba;
Order Miprimercdx

Luego cuando en el proceso de registros queras cambiar el
modo de indice solo tenesque decirle
SET ORDER TO NOMBRECDX
JAMAS se te valla ocurrir decir como he visto por ahi a
varios disque SET ORDER TO 1 JAMAS por que cuando ordenas
archivos los ordenes de loscdx pueden cambiar de orden es
mejor llamas el CDX por el nombre SET ORDER TO NOMBRECDX

Ahora como añades registros...
Vfp automaticamente anade tu registros a los cdx
cuando esta trabajando modo multiuaurios utiliza esto..

Sele mitabla
Scatter Memvar Memo && Carga en memoria registro actual
Scatter Memvar Blank && Carga en memoria registro En
Blanco

Luego
GATHER MEMVAR && Guarda Los regitros en modificacion
Insert Into(alias()) From Memvar Inserta Un Registo nuevo
que este en memoria..

Consulta la ayuda de fvp acerga de SCATTER / GATHER
Cualquier cosa escribeme yo con gusto te ayudare


Leonardo Cadena
Hagamos de FVP Nuestra Mejor Herramienta De trabajo
Suerte A Todos
Respuesta Responder a este mensaje
#5 Hecpok
20/08/2004 - 02:36 | Informe spam
Gracias amigo Leonardo por tu ayuda, al igual que los demás.

No tengo problemas con los archivos indice, ya que desde que empeze a
meterme con Fox, he usado CDXs.
Tambien en lo que se refiere a abrir un indice he usado el formato (set
order to tag miarchivo.cdx). Gracias de nuevo por la advertencia. Lo que si,
no me ha quedado claro, ha sido el uso de Scatter y Gather. Vi el Help de
Fox, pero no me quedo claro. Te comento, como he usado en Fox, mis
grabaciones, para que tu, me digas por favor, que deberia cambiar a la
manera de fox.

* agregar registro

store 0 to txtcodigo
store space(40) to txtnombre
.. lectura de los texts
.. datos correctos (si)
append blank
if rlock()
replace mibase.codigo with val(thisform.txtcodigo.text), ;
mibase.nombre with thisform.txtnombre.text
else
messagebox("registro ocupado.")
endif

* modificar un registro

thisform.txtcodigo.value=mibase.codigo
thisform.txtnombre.value=mibase.nombre
.y para grabar
if rlock()
replace mibase.codigo with val(thisform.txtcodigo.text), ;
mibase.nombre with thisform.txtnombre.text
else
messagebox("registro ocupado.")
endif

Muchisimas gracias nuevamente
Hector
Santiago de Chile




"Leonardo Cadena" escribió en el
mensaje news:32a801c47ed7$18d72d80$
Hola amigo... hojala esto te sirva..
mira en VFP ya no se usan IDX eso ya es cuento del
pasado.. ano ser que quiers indexzar un archivo
(consulta) que resulta de un comando sql esto en visual
foxpro 6.0 no se puede todavia hacer un SQL Readwrite
pero las versiones 7.0 en adelante a Al Grano...

Mira.. Los Pasos

1 Crear una tabla
2 Index On Micampo Tag Miprimercdx Additive I Asi todos
lo indeces que queiras tener en esta tabla.. ok los que
queras no imporeta..

3. En El Momento de abrirla solo tenes que decirle
Select 0
Use Mitabla Shared ;
Again Alias Tablapruaba;
Order Miprimercdx

Luego cuando en el proceso de registros queras cambiar el
modo de indice solo tenesque decirle
SET ORDER TO NOMBRECDX
JAMAS se te valla ocurrir decir como he visto por ahi a
varios disque SET ORDER TO 1 JAMAS por que cuando ordenas
archivos los ordenes de loscdx pueden cambiar de orden es
mejor llamas el CDX por el nombre SET ORDER TO NOMBRECDX

Ahora como añades registros...
Vfp automaticamente anade tu registros a los cdx
cuando esta trabajando modo multiuaurios utiliza esto..

Sele mitabla
Scatter Memvar Memo && Carga en memoria registro actual
Scatter Memvar Blank && Carga en memoria registro En
Blanco

Luego
GATHER MEMVAR && Guarda Los regitros en modificacion
Insert Into(alias()) From Memvar Inserta Un Registo nuevo
que este en memoria..

Consulta la ayuda de fvp acerga de SCATTER / GATHER
Cualquier cosa escribeme yo con gusto te ayudare


Leonardo Cadena
Hagamos de FVP Nuestra Mejor Herramienta De trabajo
Suerte A Todos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida