Página 1 de 1

lAutoOrder en dbBrowse con NtxDataSource

Publicado: Lun Jul 30, 2007 10:54 pm
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

lAutoOrder en dbBrowse con NtxDataSource

Publicado: Mar Jul 31, 2007 11:36 am
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
>

lAutoOrder en dbBrowse con NtxDataSource

Publicado: Mié Ago 01, 2007 12:38 pm
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

lAutoOrder en dbBrowse con NtxDataSource

Publicado: Mié Ago 01, 2007 7:29 pm
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
>

lAutoOrder en dbBrowse con NtxDataSource

Publicado: Sab Ago 04, 2007 12:04 pm
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
>>
>
>

lAutoOrder en dbBrowse con NtxDataSource

Publicado: Dom Ago 05, 2007 9:29 am
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
>>>
>>
>>
>

lAutoOrder en dbBrowse con NtxDataSource

Publicado: Dom Ago 05, 2007 11:22 am
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)Â

lAutoOrder en dbBrowse con NtxDataSource

Publicado: Dom Ago 05, 2007 9:59 pm
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
>

lAutoOrder en dbBrowse con NtxDataSource

Publicado: Dom Ago 05, 2007 10:01 pm
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
>>
>
>