In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

lAutoOrder en dbBrowse con NtxDataSource

Foro de Xailer profesional en español
Responder
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

lAutoOrder en dbBrowse con NtxDataSource

Mensaje por jose.luis »

Hola,
Un dbBrowse con un dbfDataset/NtxDatasource.
lAutoOrder := .T.
Al hacer clic sobre la cabecera de la columna se ordena el dataset por ese
campo.
Pregunta:
¿Se crea un nuevo Bag?
¿Sustituye el bag activo?
Saludos y gracias,
José Luis Capel
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9459
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

lAutoOrder en dbBrowse con NtxDataSource

Mensaje por ignacio »

José Luis,
Se crea uno nuevo. Sustituye al bag activo si es temporal. En l caso de RDDs
multi-tag simplemente se crea un nuevo tag en el cdx temporal.
Un saludo,
"José Luis Capel" <jose.luis@capelsoft.com> escribió en el mensaje
news:46ae50a6$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hola,
>
> Un dbBrowse con un dbfDataset/NtxDatasource.
>
> lAutoOrder := .T.
>
> Al hacer clic sobre la cabecera de la columna se ordena el dataset por ese
> campo.
>
> Pregunta:
>
> ¿Se crea un nuevo Bag?
> ¿Sustituye el bag activo?
>
> Saludos y gracias,
> José Luis Capel
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

lAutoOrder en dbBrowse con NtxDataSource

Mensaje por jose.luis »

Ignacio,
Gracias por tu respuesta.
>
> Se crea uno nuevo. Sustituye al bag activo si es temporal. En l caso de
> RDDs multi-tag simplemente se crea un nuevo tag en el cdx temporal.
>
Disculpa mi insistencia. En el caso concreto del NtxDataSource... Al hacer
click sobre una columna y crear el nuevo bag, ¿cierras el que esté activo en
ese momento?
Saludos y gracias por tus aclaraciones.
José Luis Capel
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9459
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

lAutoOrder en dbBrowse con NtxDataSource

Mensaje por ignacio »

José Luis,
Lo puedes ver tu mismo en los fuentes en el metodo TDbfDataset:Sort() o
interrogarlo facilmente con las funciones ORD. Como puedes observar cada vez
que se pulsa en una columna se crea un tag sobre un único fichero temporal.
Entiendo que los NTX deben de funcionar perfectamente y tener todos los tags
abiertos ya que xHarbour soporta multi-tag también en NTX.
Un saludo,
"José Luis Capel" <jose.luis@capelsoft.com> escribió en el mensaje
news:[email=46b064d6@ozsrv2.ozlan.local...]46b064d6@ozsrv2.ozlan.local...[/email]
> Ignacio,
>
> Gracias por tu respuesta.
>>
>> Se crea uno nuevo. Sustituye al bag activo si es temporal. En l caso de
>> RDDs multi-tag simplemente se crea un nuevo tag en el cdx temporal.
>>
>
> Disculpa mi insistencia. En el caso concreto del NtxDataSource... Al
> hacer click sobre una columna y crear el nuevo bag, ¿cierras el que esté
> activo en ese momento?
>
> Saludos y gracias por tus aclaraciones.
> José Luis Capel
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

lAutoOrder en dbBrowse con NtxDataSource

Mensaje por jose.luis »

Hola Ignacio,
Disculpa nuevamente mi persistencia.
Abro una tabla NTX con un dataset de Xailer. La tabla tiene dos í­ndices. Lo
abro de esta manera:
WITH OBJECT ::oDataSet := TDbfDataSet():New( wTrade:oForm )
:cName := ::cTabla
:oDataSource := wTrade:oDataSource
:cProcess := "GENERAL"
:aIdxFiles := ::aIndices
:lOpen := .T.
:Create()
END
Donde aIndices es una matriz con los í­ndices ntx. Por ejemplo
{"CAL_COD","CAL_NOM"} y wTrade:oDataSource es el NtxDatasource.
Entonce si hago:
::oDataSet:OrdSetFocus("CAL_COD")
MsgInfo(::oDAtaSEt:OrdBagName()) //--> c:micarpetacal_cod.ntx
::oDataSet:OrdSetFocus("CAL_NOM")
MsgInfo(::oDAtaSEt:OrdBagName()) //--> c:micarpetacal_nom.ntx
Y si ahora pulsamos sobre una columna donde se ordena la tabla
MsgInfo(::oDataSet:OrdBagNAme()) //--> c:micarpertacalida1.tmp
Y al volver al í­ndice anterior
::oDataSet:OrdSetFocus("CAL_COD")
Aparece este error:
TDBFDATASET:ORDSETFOCUS(1082)
Warning Xailer: TRddDataSource/0 Error de OrdSetFocus() en CALIDAD: Tag
inexistente CAL_COD
Argumentos: ()
Supongo que debo de estar muy desentrenado con el tema de las dbfs... pero
creo que no he cerrado ningún tag.
¿Qué más deberí­a hacer?
Saludos y gracias por vuestra ayuda.
José Luis Capel
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje de
noticias news:[email=46b0c317@ozsrv2.ozlan.local...]46b0c317@ozsrv2.ozlan.local...[/email]
> José Luis,
>
> Lo puedes ver tu mismo en los fuentes en el metodo TDbfDataset:Sort() o
> interrogarlo facilmente con las funciones ORD. Como puedes observar cada
> vez que se pulsa en una columna se crea un tag sobre un único fichero
> temporal. Entiendo que los NTX deben de funcionar perfectamente y tener
> todos los tags abiertos ya que xHarbour soporta multi-tag también en NTX.
>
> Un saludo,
>
> "José Luis Capel" <jose.luis@capelsoft.com> escribió en el mensaje
> news:[email=46b064d6@ozsrv2.ozlan.local...]46b064d6@ozsrv2.ozlan.local...[/email]
>> Ignacio,
>>
>> Gracias por tu respuesta.
>>>
>>> Se crea uno nuevo. Sustituye al bag activo si es temporal. En l caso de
>>> RDDs multi-tag simplemente se crea un nuevo tag en el cdx temporal.
>>>
>>
>> Disculpa mi insistencia. En el caso concreto del NtxDataSource... Al
>> hacer click sobre una columna y crear el nuevo bag, ¿cierras el que esté
>> activo en ese momento?
>>
>> Saludos y gracias por tus aclaraciones.
>> José Luis Capel
>>
>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9459
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

lAutoOrder en dbBrowse con NtxDataSource

Mensaje por ignacio »

José Luis,
El metodo Sort de TDBFdataset crea los tags de la siguiente forma:
::AddTag( cTag, cExp, cFor, ::cSortFile, oPgBar, .T. )
Qué en principio NO DEBERIA CERRAR ningún índice activo pues como puedes ver
en su código únicamente llama a OrdConset() y OrdCreate() y en ningún caso a
OrdListClear().
Te recomiendo que interrogues los tags abiertos con el método GetTags para
saber a ciencia cierta los tags realmente abiertos.
Un saludo
--
Ignacio Ortiz de Zúñiga
Email: iozuniga@ozs.com
"José Luis Capel" <jose.luis@capelsoft.com> escribió en el mensaje
news:[email=46b44f51@ozsrv2.ozlan.local...]46b44f51@ozsrv2.ozlan.local...[/email]
> Hola Ignacio,
>
> Disculpa nuevamente mi persistencia.
>
> Abro una tabla NTX con un dataset de Xailer. La tabla tiene dos índices.
> Lo abro de esta manera:
>
> WITH OBJECT ::oDataSet := TDbfDataSet():New( wTrade:oForm )
> :cName := ::cTabla
> :oDataSource := wTrade:oDataSource
> :cProcess := "GENERAL"
> :aIdxFiles := ::aIndices
> :lOpen := .T.
> :Create()
> END
>
> Donde aIndices es una matriz con los índices ntx. Por ejemplo
> {"CAL_COD","CAL_NOM"} y wTrade:oDataSource es el NtxDatasource.
>
> Entonce si hago:
>
> ::oDataSet:OrdSetFocus("CAL_COD")
> MsgInfo(::oDAtaSEt:OrdBagName()) //--> c:micarpetacal_cod.ntx
> ::oDataSet:OrdSetFocus("CAL_NOM")
> MsgInfo(::oDAtaSEt:OrdBagName()) //--> c:micarpetacal_nom.ntx
>
> Y si ahora pulsamos sobre una columna donde se ordena la tabla
>
> MsgInfo(::oDataSet:OrdBagNAme()) //--> c:micarpertacalida1.tmp
>
> Y al volver al índice anterior
>
> ::oDataSet:OrdSetFocus("CAL_COD")
>
> Aparece este error:
>
>
> TDBFDATASET:ORDSETFOCUS(1082)
> Warning Xailer: TRddDataSource/0 Error de OrdSetFocus() en CALIDAD: Tag
> inexistente CAL_COD
> Argumentos: ()
>
> Supongo que debo de estar muy desentrenado con el tema de las dbfs... pero
> creo que no he cerrado ningún tag.
>
> ¿Qué más debería hacer?
>
> Saludos y gracias por vuestra ayuda.
> José Luis Capel
>
>
> "Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje de
> noticias news:[email=46b0c317@ozsrv2.ozlan.local...]46b0c317@ozsrv2.ozlan.local...[/email]
>> José Luis,
>>
>> Lo puedes ver tu mismo en los fuentes en el metodo TDbfDataset:Sort() o
>> interrogarlo facilmente con las funciones ORD. Como puedes observar cada
>> vez que se pulsa en una columna se crea un tag sobre un único fichero
>> temporal. Entiendo que los NTX deben de funcionar perfectamente y tener
>> todos los tags abiertos ya que xHarbour soporta multi-tag también en NTX.
>>
>> Un saludo,
>>
>> "José Luis Capel" <jose.luis@capelsoft.com> escribió en el mensaje
>> news:[email=46b064d6@ozsrv2.ozlan.local...]46b064d6@ozsrv2.ozlan.local...[/email]
>>> Ignacio,
>>>
>>> Gracias por tu respuesta.
>>>>
>>>> Se crea uno nuevo. Sustituye al bag activo si es temporal. En l caso de
>>>> RDDs multi-tag simplemente se crea un nuevo tag en el cdx temporal.
>>>>
>>>
>>> Disculpa mi insistencia. En el caso concreto del NtxDataSource... Al
>>> hacer click sobre una columna y crear el nuevo bag, ¿cierras el que esté
>>> activo en ese momento?
>>>
>>> Saludos y gracias por tus aclaraciones.
>>> José Luis Capel
>>>
>>
>>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

lAutoOrder en dbBrowse con NtxDataSource

Mensaje por jose.luis »

Ignacio,
Gracias por tu respuesta.
Te dejo un ejemplo que creo que está simplificado al máximo.
Te ruego le eches un vistazo y me indiques, si fueras tan amable, qué estoy
haciendo mal en mi código.
Muchas gracias por tu tiempo.
Saludos,
José Luis Capel
--

Attached files Ntxs.zip (6.9 KB)Â
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9459
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

lAutoOrder en dbBrowse con NtxDataSource

Mensaje por ignacio »

José Luis,
Visto el error. Se corrige comentando parte del código en el metodo AddTag()
IF cFor != Nil
( ::cAlias )->( OrdCondSet( cFor, COMPILAR( cFor ),,, bEval,
nStep,,,,, .F.,, .T., .F., .F., .F.,, lTemporary ) )
ELSE //IF oPgBar != Nil
( ::cAlias )->( OrdCondSet( ,,,, bEval, nStep,,,,, .F.,, .T., .F.,
..F., .F.,, lTemporary ) )
ENDIF
Fijate que el ESEIF está parido y comentado. Sólo se estaba usando OrdConSet
cuando había una cláusula FOR o se indicaba una TProgressBar, sin embargo,
también es necesario para indicar que el índice es aditivo ya que por
defecto no lo es. Era un error nuestro.
La semana que viene publicamos la 1.6 con este error y otros corregidos.
Un saludo,
--
Ignacio Ortiz de Zúñiga
Email: iozuniga@ozs.com
"José Luis Capel" <jose.luis@capelsoft.com> escribió en el mensaje
news:[email=46b59731@ozsrv2.ozlan.local...]46b59731@ozsrv2.ozlan.local...[/email]
> Ignacio,
>
> Gracias por tu respuesta.
>
> Te dejo un ejemplo que creo que está simplificado al máximo.
>
> Te ruego le eches un vistazo y me indiques, si fueras tan amable, qué
> estoy
> haciendo mal en mi código.
>
> Muchas gracias por tu tiempo.
> Saludos,
> José Luis Capel
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9459
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

lAutoOrder en dbBrowse con NtxDataSource

Mensaje por ignacio »

Quise decir PARTIDO. Perdón.
Un saludo
--
Ignacio Ortiz de Zúñiga
Email: iozuniga@ozs.com
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
news:46b62c53$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> José Luis,
>
> Visto el error. Se corrige comentando parte del código en el metodo
> AddTag()
>
> IF cFor != Nil
> ( ::cAlias )->( OrdCondSet( cFor, COMPILAR( cFor ),,, bEval,
> nStep,,,,, .F.,, .T., .F., .F., .F.,, lTemporary ) )
> ELSE //IF oPgBar != Nil
> ( ::cAlias )->( OrdCondSet( ,,,, bEval, nStep,,,,, .F.,, .T., .F.,
> .F., .F.,, lTemporary ) )
> ENDIF
>
> Fijate que el ESEIF está parido y comentado. Sólo se estaba usando
> OrdConSet cuando había una cláusula FOR o se indicaba una TProgressBar,
> sin embargo, también es necesario para indicar que el índice es aditivo ya
> que por defecto no lo es. Era un error nuestro.
>
> La semana que viene publicamos la 1.6 con este error y otros corregidos.
>
> Un saludo,
>
> --
> Ignacio Ortiz de Zúñiga
> Email: iozuniga@ozs.com
> "José Luis Capel" <jose.luis@capelsoft.com> escribió en el mensaje
> news:[email=46b59731@ozsrv2.ozlan.local...]46b59731@ozsrv2.ozlan.local...[/email]
>> Ignacio,
>>
>> Gracias por tu respuesta.
>>
>> Te dejo un ejemplo que creo que está simplificado al máximo.
>>
>> Te ruego le eches un vistazo y me indiques, si fueras tan amable, qué
>> estoy
>> haciendo mal en mi código.
>>
>> Muchas gracias por tu tiempo.
>> Saludos,
>> José Luis Capel
>>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder