Página 1 de 1

A

Publicado: Mar Abr 18, 2006 1:02 pm
por Xevi
Con CDX...
(cAlias)->( OrdListClear() )
(cAlias)->( OrdListAdd( cFitxer ) )
(cAlias)->( OrdSetFocus( "REFERENCIA" ) )
Esto funciona correctamente, ahora bien con NTX???
¿Como puedo añadir un índice a la área abierta???
USE MiDBF
SET INDEX TO (cIndex1), (cIndex2), (cIndex3), (cIndex4)
....
en un momento determinato de la aplicación...
index on Field->MATRICULA to (cIndex5)
....
Creía que me bastaría con
(cAlias)->( OrdListAdd( cIndex5 ) )
pero por lo visto OrdListAdd no acepta NTX
¿Cómo añado este nuevo índice a la área activa, sin tener que cerrarla???
Gracias

A

Publicado: Mar Abr 18, 2006 1:14 pm
por jfgimenez
Xevi,
> Con CDX...
> (cAlias)->( OrdListClear() )
> (cAlias)->( OrdListAdd( cFitxer ) )
> (cAlias)->( OrdSetFocus( "REFERENCIA" ) )
>
> Esto funciona correctamente, ahora bien con NTX???
> ¿Como puedo añadir un índice a la área abierta???
>
> USE MiDBF
> SET INDEX TO (cIndex1), (cIndex2), (cIndex3), (cIndex4)
> ...
> en un momento determinato de la aplicación...
> index on Field->MATRICULA to (cIndex5)
> ...
>
> Creía que me bastaría con
> (cAlias)->( OrdListAdd( cIndex5 ) )
> pero por lo visto OrdListAdd no acepta NTX
>
>
> ¿Cómo añado este nuevo índice a la área activa, sin tener que cerrarla???
Nunca lo he probado, pero supongo que funcionará:
SET INDEX TO (otro_indice) ADDITIVE
--
Un saludo,
José F. Giménez

A

Publicado: Mar Abr 18, 2006 3:34 pm
por Xevi
Jose,
Pues parece ser que no...
MSGINFO( OrdSetFocus()) //Indice1
DbSetOrder(2)
MSGINFO( OrdSetFocus()) //Indice2
DbSetOrder(3)
MSGINFO( OrdSetFocus()) //Indice3
DbSetOrder(4)
MSGINFO( OrdSetFocus()) //Indice4
cIndexTemp := "IndiceNuevo.Ntx"
index on Field->MATRICULA to (cIndexTemp)
SET INDEX TO (cIndexTemp) ADDITIVE
MSGINFO( OrdSetFocus()) //IndiceNuevo
DbSetOrder(2)
MSGINFO( OrdSetFocus()) //En Blanco
DbSetOrder(3)
MSGINFO( OrdSetFocus()) //En Blanco
DbSetOrder(4)
MSGINFO( OrdSetFocus()) //En Blanco
DbSetOrder(5)
MSGINFO( OrdSetFocus()) //En Blanco
¿Alguna sugerencia más???
Gracias.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:4444ca06$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
>> Con CDX...
>> (cAlias)->( OrdListClear() )
>> (cAlias)->( OrdListAdd( cFitxer ) )
>> (cAlias)->( OrdSetFocus( "REFERENCIA" ) )
>>
>> Esto funciona correctamente, ahora bien con NTX???
>> ¿Como puedo añadir un índice a la área abierta???
>>
>> USE MiDBF
>> SET INDEX TO (cIndex1), (cIndex2), (cIndex3), (cIndex4)
>> ...
>> en un momento determinato de la aplicación...
>> index on Field->MATRICULA to (cIndex5)
>> ...
>>
>> Creía que me bastaría con
>> (cAlias)->( OrdListAdd( cIndex5 ) )
>> pero por lo visto OrdListAdd no acepta NTX
>>
>>
>> ¿Cómo añado este nuevo índice a la área activa, sin tener que cerrarla???
>
> Nunca lo he probado, pero supongo que funcionará:
>
> SET INDEX TO (otro_indice) ADDITIVE
>
> --
> Un saludo,
>
> José F. Giménez
>

A

Publicado: Mar Abr 18, 2006 3:41 pm
por Xevi
¿No se tratará de un Bug de xHarbour???
pues lo que debería de funcionar es OrdListAdd...
SET INDEX TO (cIndexTemp) ADDITIVE
Este es el código genera al compilar /p...
if !.T. ; ordListClear() ; end ; ordListAdd((cIndexTemp) )
A mi entender, creo que las funciones OrdListClear() y OrdListAdd() deberían
de funcionar igual para NTX y/o CDX
Un Saludo,
Xevi.
"Xevi" <xevi@garatgeautopista.com> escribió en el mensaje
news:4444eaaf$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Jose,
>
> Pues parece ser que no...
>
> MSGINFO( OrdSetFocus()) //Indice1
> DbSetOrder(2)
> MSGINFO( OrdSetFocus()) //Indice2
> DbSetOrder(3)
> MSGINFO( OrdSetFocus()) //Indice3
> DbSetOrder(4)
> MSGINFO( OrdSetFocus()) //Indice4
> cIndexTemp := "IndiceNuevo.Ntx"
> index on Field->MATRICULA to (cIndexTemp)
> SET INDEX TO (cIndexTemp) ADDITIVE
> MSGINFO( OrdSetFocus()) //IndiceNuevo
> DbSetOrder(2)
> MSGINFO( OrdSetFocus()) //En Blanco
> DbSetOrder(3)
> MSGINFO( OrdSetFocus()) //En Blanco
> DbSetOrder(4)
> MSGINFO( OrdSetFocus()) //En Blanco
> DbSetOrder(5)
> MSGINFO( OrdSetFocus()) //En Blanco
>
> ¿Alguna sugerencia más???
>
> Gracias.
>
> Un Saludo,
> Xevi.
>
>
> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
> news:4444ca06$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Xevi,
>>
>>> Con CDX...
>>> (cAlias)->( OrdListClear() )
>>> (cAlias)->( OrdListAdd( cFitxer ) )
>>> (cAlias)->( OrdSetFocus( "REFERENCIA" ) )
>>>
>>> Esto funciona correctamente, ahora bien con NTX???
>>> ¿Como puedo añadir un índice a la área abierta???
>>>
>>> USE MiDBF
>>> SET INDEX TO (cIndex1), (cIndex2), (cIndex3), (cIndex4)
>>> ...
>>> en un momento determinato de la aplicación...
>>> index on Field->MATRICULA to (cIndex5)
>>> ...
>>>
>>> Creía que me bastaría con
>>> (cAlias)->( OrdListAdd( cIndex5 ) )
>>> pero por lo visto OrdListAdd no acepta NTX
>>>
>>>
>>> ¿Cómo añado este nuevo índice a la área activa, sin tener que
>>> cerrarla???
>>
>> Nunca lo he probado, pero supongo que funcionará:
>>
>> SET INDEX TO (otro_indice) ADDITIVE
>>
>> --
>> Un saludo,
>>
>> José F. Giménez
>>
>
>

A

Publicado: Mié Abr 19, 2006 10:01 am
por jfgimenez
Xevi,
> ¿No se tratará de un Bug de xHarbour???
Puede ser.
> pues lo que debería de funcionar es OrdListAdd...
>
> SET INDEX TO (cIndexTemp) ADDITIVE
> Este es el código genera al compilar /p...
> if !.T. ; ordListClear() ; end ; ordListAdd((cIndexTemp) )
>
> A mi entender, creo que las funciones OrdListClear() y OrdListAdd()
> deberían de funcionar igual para NTX y/o CDX
Acabo de revisar la documentación de Clipper sobre esta función y no
encuentro que mencione ninguna limitación en los NTX. Es posible que sea un
bug de xHarbour. Por favor, comentalo en el foro de xHarbour, aunque pongas
el mensaje en castellano.
--
Un saludo,
José F. Giménez

A

Publicado: Mié Abr 19, 2006 10:59 am
por Xevi
Jose,
De momento lo he apañado creando un DataSet y añadiendo los índices con
AddTag()
Y funciona perfectamente, por lo que sería bueno saber ¿como teneis
construido este evento de la Clase para antes de hechar la culpa al
compilador, saber seguro que se trata de un Bug.
De todas formas lo posteo en el Foro... Uhmmm!!!
Si me escribis la dirección del Foro de xHarbour... pues no lo tengo a mano.
Gracias
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:4445ee46$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
>> ¿No se tratará de un Bug de xHarbour???
>
> Puede ser.
>
>> pues lo que debería de funcionar es OrdListAdd...
>>
>> SET INDEX TO (cIndexTemp) ADDITIVE
>> Este es el código genera al compilar /p...
>> if !.T. ; ordListClear() ; end ; ordListAdd((cIndexTemp) )
>>
>> A mi entender, creo que las funciones OrdListClear() y OrdListAdd()
>> deberían de funcionar igual para NTX y/o CDX
>
> Acabo de revisar la documentación de Clipper sobre esta función y no
> encuentro que mencione ninguna limitación en los NTX. Es posible que sea
> un bug de xHarbour. Por favor, comentalo en el foro de xHarbour, aunque
> pongas el mensaje en castellano.
>
> --
> Un saludo,
>
> José F. Giménez
>

A

Publicado: Mié Abr 19, 2006 11:04 am
por ignacio
Xevi,
#define COMPILAR(cExpr) &("{||" + cExpr + "}")
METHOD AddTag( cTag, cExp, cFor, cFile, oPgBar ) CLASS XDbfDataSet
Local bEval
Local nCount, nStep
DEFAULT cFile TO ::DefIdxFile()
if oPgBar != nil
nCount := ::RecCount
With Object oPgBar
:nMin := 0
:nValue := 0
:nStep := 1
if nCount > 100
nStep := Round( ( nCount / 100) + 0.5, 0 )
:nMax := 100
else
nStep := 1
:nMax := nCount
endif
end with
bEval := {|| oPgBar:nValue += 1, .t. }
endif
if cFor != nil
( ::cAlias )->( OrdCondSet( cFor, COMPILAR( cFor ),,, bEval, nStep,,,,, .F.,, .T., .F., .F., .F. ) )
elseif oPgBar != nil
( ::cAlias )->( OrdCondSet( ,,,, bEval, nStep,,,,, .F.,, .T., .F., ..F., .F. ) )
endif
( ::cAlias )->( OrdCreate( cFile, cTag, cExp, COMPILAR( cExp ) ) )
RETURN nil
"Xevi" <xevi@garatgeautopista.com> escribió en el mensaje news:4445fbb4$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Jose,
>
> De momento lo he apañado creando un DataSet y añadiendo los í­ndices con
> AddTag()
> Y funciona perfectamente, por lo que serí­a bueno saber ¿como teneis
> construido este evento de la Clase para antes de hechar la culpa al
> compilador, saber seguro que se trata de un Bug.
>
> De todas formas lo posteo en el Foro... Uhmmm!!!
> Si me escribis la dirección del Foro de xHarbour... pues no lo tengo a mano.
>
> Gracias
>
> Un Saludo,
> Xevi.
>
>
> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
> news:4445ee46$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Xevi,
>>
>>> ¿No se tratará de un Bug de xHarbour???
>>
>> Puede ser.
>>
>>> pues lo que deberí­a de funcionar es OrdListAdd...
>>>
>>> SET INDEX TO (cIndexTemp) ADDITIVE
>>> Este es el código genera al compilar /p...
>>> if !.T. ; ordListClear() ; end ; ordListAdd((cIndexTemp) )
>>>
>>> A mi entender, creo que las funciones OrdListClear() y OrdListAdd()
>>> deberí­an de funcionar igual para NTX y/o CDX
>>
>> Acabo de revisar la documentación de Clipper sobre esta función y no
>> encuentro que mencione ninguna limitación en los NTX. Es posible que sea
>> un bug de xHarbour. Por favor, comentalo en el foro de xHarbour, aunque
>> pongas el mensaje en castellano.
>>
>> --
>> Un saludo,
>>
>> José F. Giménez
>>
>
>
--

A

Publicado: Mié Abr 19, 2006 11:38 am
por Xevi
Ignacio,
Pues por lo visto, si no utilizamos bFor ni oPgBar, el evento se limita a utilizar la función OrdCreate() del Alias.
Por lo que entiendo que si en lugar de utilizar OrListAdd() o SET INDEX... ADDITIVE, utilizo OrdCreate(), deberí­a de funcionar correctamente.
Un Saludo,
Xevi.
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje news:4445fd05$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
Xevi,
#define COMPILAR(cExpr) &("{||" + cExpr + "}")
METHOD AddTag( cTag, cExp, cFor, cFile, oPgBar ) CLASS XDbfDataSet
Local bEval
Local nCount, nStep
DEFAULT cFile TO ::DefIdxFile()
if oPgBar != nil
nCount := ::RecCount
With Object oPgBar
:nMin := 0
:nValue := 0
:nStep := 1
if nCount > 100
nStep := Round( ( nCount / 100) + 0.5, 0 )
:nMax := 100
else
nStep := 1
:nMax := nCount
endif
end with
bEval := {|| oPgBar:nValue += 1, .t. }
endif
if cFor != nil
( ::cAlias )->( OrdCondSet( cFor, COMPILAR( cFor ),,, bEval, nStep,,,,, .F.,, .T., .F., .F., .F. ) )
elseif oPgBar != nil
( ::cAlias )->( OrdCondSet( ,,,, bEval, nStep,,,,, .F.,, .T., .F., ..F., .F. ) )
endif
( ::cAlias )->( OrdCreate( cFile, cTag, cExp, COMPILAR( cExp ) ) )
RETURN nil
"Xevi" <xevi@garatgeautopista.com> escribió en el mensaje news:4445fbb4$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Jose,
>
> De momento lo he apañado creando un DataSet y añadiendo los í­ndices con
> AddTag()
> Y funciona perfectamente, por lo que serí­a bueno saber ¿como teneis
> construido este evento de la Clase para antes de hechar la culpa al
> compilador, saber seguro que se trata de un Bug.
>
> De todas formas lo posteo en el Foro... Uhmmm!!!
> Si me escribis la dirección del Foro de xHarbour... pues no lo tengo a mano.
>
> Gracias
>
> Un Saludo,
> Xevi.
>
>
> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
> news:4445ee46$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Xevi,
>>
>>> ¿No se tratará de un Bug de xHarbour???
>>
>> Puede ser.
>>
>>> pues lo que deberí­a de funcionar es OrdListAdd...
>>>
>>> SET INDEX TO (cIndexTemp) ADDITIVE
>>> Este es el código genera al compilar /p...
>>> if !.T. ; ordListClear() ; end ; ordListAdd((cIndexTemp) )
>>>
>>> A mi entender, creo que las funciones OrdListClear() y OrdListAdd()
>>> deberí­an de funcionar igual para NTX y/o CDX
>>
>> Acabo de revisar la documentación de Clipper sobre esta función y no
>> encuentro que mencione ninguna limitación en los NTX. Es posible que sea
>> un bug de xHarbour. Por favor, comentalo en el foro de xHarbour, aunque
>> pongas el mensaje en castellano.
>>
>> --
>> Un saludo,
>>
>> José F. Giménez
>>
>
>
--

A

Publicado: Mié Abr 19, 2006 11:40 am
por ignacio
Xevi,
Te recomiendo que eches un vistazo al PPO para ver que está pasando.
Un saludo,
"Xevi" <xevi@garatgeautopista.com> escribió en el mensaje news:[email=444604d2@ozsrvnegro.ozlan.local...]444604d2@ozsrvnegro.ozlan.local...[/email]
Ignacio,
Pues por lo visto, si no utilizamos bFor ni oPgBar, el evento se limita a utilizar la función OrdCreate() del Alias.
Por lo que entiendo que si en lugar de utilizar OrListAdd() o SET INDEX... ADDITIVE, utilizo OrdCreate(), deberí­a de funcionar correctamente.
Un Saludo,
Xevi.
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje news:4445fd05$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
Xevi,
#define COMPILAR(cExpr) &("{||" + cExpr + "}")
METHOD AddTag( cTag, cExp, cFor, cFile, oPgBar ) CLASS XDbfDataSet
Local bEval
Local nCount, nStep
DEFAULT cFile TO ::DefIdxFile()
if oPgBar != nil
nCount := ::RecCount
With Object oPgBar
:nMin := 0
:nValue := 0
:nStep := 1
if nCount > 100
nStep := Round( ( nCount / 100) + 0.5, 0 )
:nMax := 100
else
nStep := 1
:nMax := nCount
endif
end with
bEval := {|| oPgBar:nValue += 1, .t. }
endif
if cFor != nil
( ::cAlias )->( OrdCondSet( cFor, COMPILAR( cFor ),,, bEval, nStep,,,,, .F.,, .T., .F., .F., .F. ) )
elseif oPgBar != nil
( ::cAlias )->( OrdCondSet( ,,,, bEval, nStep,,,,, .F.,, .T., ..F., .F., .F. ) )
endif
( ::cAlias )->( OrdCreate( cFile, cTag, cExp, COMPILAR( cExp ) ) )
RETURN nil
"Xevi" <xevi@garatgeautopista.com> escribió en el mensaje news:4445fbb4$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Jose,
>
> De momento lo he apañado creando un DataSet y añadiendo los í­ndices con
> AddTag()
> Y funciona perfectamente, por lo que serí­a bueno saber ¿como teneis
> construido este evento de la Clase para antes de hechar la culpa al
> compilador, saber seguro que se trata de un Bug.
>
> De todas formas lo posteo en el Foro... Uhmmm!!!
> Si me escribis la dirección del Foro de xHarbour... pues no lo tengo a mano.
>
> Gracias
>
> Un Saludo,
> Xevi.
>
>
> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
> news:4445ee46$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Xevi,
>>
>>> ¿No se tratará de un Bug de xHarbour???
>>
>> Puede ser.
>>
>>> pues lo que deberí­a de funcionar es OrdListAdd...
>>>
>>> SET INDEX TO (cIndexTemp) ADDITIVE
>>> Este es el código genera al compilar /p...
>>> if !.T. ; ordListClear() ; end ; ordListAdd((cIndexTemp) )
>>>
>>> A mi entender, creo que las funciones OrdListClear() y OrdListAdd()
>>> deberí­an de funcionar igual para NTX y/o CDX
>>
>> Acabo de revisar la documentación de Clipper sobre esta función y no
>> encuentro que mencione ninguna limitación en los NTX. Es posible que sea
>> un bug de xHarbour. Por favor, comentalo en el foro de xHarbour, aunque
>> pongas el mensaje en castellano.
>>
>> --
>> Un saludo,
>>
>> José F. Giménez
>>
>
>
--