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