Hola,
//Creo un DbfDataSet... usando NTX
WITH OBJECT ::oNtxDataSource1 := TNtxDataSource():New( Self )
:cConnect := "."
:Create()
END
WITH OBJECT ::oDbfDataSet1 := TDbfDataSet():New( Self )
:oDataSource := ::oNtxDataSource1
:cProcess := "GENERAL"
o:cName := "CMOV.dbf"
o:AddIdxFile( "C11" )
o:AddIdxFile( "C14" )
o:AddIdxFile( "C15" )
o:AddIdxFile( "C16" )
o:AddIdxFile( "C17" )
o:AddIdxFile( "C18" )
:lOpen := .T.
:Create()
END
Creo un StatusBar para mostrar en que registro estoy del total de registros...
Y en OnChange del Browse...
METHOD DBBrowse1Change( oSender, lBookMarkChanged ) CLASS TFrmBrowseCMOV
::oStatusBar1:aItems[2]:cText := "Registro " +;
AllTrim( Str( ::oDBBrowse1:nKeyNo ) ) +;
" de " +;
AllTrim( Str( ::oDbfDataSet1:RecCount() ) ) //Resultado 19117
* AllTrim( Str( ::oDBBrowse1:KeyCount() ) ) //Resultado 19117
RETURN Nil
Un botón para aplicar un Filtro al DataSet...
METHOD Button1Click( oSender ) CLASS TFrmBrowseCMOV
::oDbfDataSet1:Filter( " COMENTARI = 'A' ", .T. )
RETURN Nil
Bien... el filtrado lo hace PERFECTO... PERO... el Evento OnChange del Browse me sigue dando como resultado de total de Registros igual que sin el filtrado 19117... ¿?¿?
Y si pulso la tecla <Fin>... se va al último registro correctamente, pero me está informando que estoy en el registro 19119 de 19117.¿?¿?
Existe un Bug al tratar con Filtros o estoy haciendo algo mal???
Gracias,
Un Saludo,
Xevi.
--
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.
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.
DataSet ... Error Total Registros
- ignacio
- Site Admin
- Mensajes: 9447
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
DataSet ... Error Total Registros
Xevi,
Como te puedes imaginar el RecCount esta basado en la propia función del RDD. Con eso creo que está dicho todo.
KeyCount esta basado en OrdKeyCount() del RDD pero para NTX dicha funcionalidad todavía no esta implementada, pero lo va estar en un par de días cuando salga la definitiva Beta 1.5, pero en cualquier caso NO contemplará el uso de filtros. Lo mismo ocurre ocn KeyNo.
Si necesitas que KeyCount y nKeyNo te den información exacta tendrás que poner la propiedad lKeyExact a .T., pero OJO, consume un montón de recursos por lo que no te recomiendo que lo utilices en en tablas que una vez filtradas tengan un montón de registros visibles. Usala con cuidado.
En cualquier caso las incongruencias que indicas seguro que sabrás que son limitaciones de los propios RDD y en definitiva del sistema de archivos Dbase, y por supuesto ocurrían igualmente en Clipper. Con bases de datos SQL este problema no existe, no obstante, una máxima de SQL es nunca hacer cursores que devuelvan esa cantidad ingente de registros.
Saludos
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=42a5cfd4@ozsrvnegro.ozlan.local...]42a5cfd4@ozsrvnegro.ozlan.local...[/email]
Hola,
//Creo un DbfDataSet... usando NTX
WITH OBJECT ::oNtxDataSource1 := TNtxDataSource():New( Self )
:cConnect := "."
:Create()
END
WITH OBJECT ::oDbfDataSet1 := TDbfDataSet():New( Self )
:oDataSource := ::oNtxDataSource1
:cProcess := "GENERAL"
o:cName := "CMOV.dbf"
o:AddIdxFile( "C11" )
o:AddIdxFile( "C14" )
o:AddIdxFile( "C15" )
o:AddIdxFile( "C16" )
o:AddIdxFile( "C17" )
o:AddIdxFile( "C18" )
:lOpen := .T.
:Create()
END
Creo un StatusBar para mostrar en que registro estoy del total de registros...
Y en OnChange del Browse...
METHOD DBBrowse1Change( oSender, lBookMarkChanged ) CLASS TFrmBrowseCMOV
::oStatusBar1:aItems[2]:cText := "Registro " +;
AllTrim( Str( ::oDBBrowse1:nKeyNo ) ) +;
" de " +;
AllTrim( Str( ::oDbfDataSet1:RecCount() ) ) //Resultado 19117
* AllTrim( Str( ::oDBBrowse1:KeyCount() ) ) //Resultado 19117
RETURN Nil
Un botón para aplicar un Filtro al DataSet...
METHOD Button1Click( oSender ) CLASS TFrmBrowseCMOV
::oDbfDataSet1:Filter( " COMENTARI = 'A' ", .T. )
RETURN Nil
Bien... el filtrado lo hace PERFECTO... PERO... el Evento OnChange del Browse me sigue dando como resultado de total de Registros igual que sin el filtrado 19117... ¿?¿?
Y si pulso la tecla <Fin>... se va al último registro correctamente, pero me está informando que estoy en el registro 19119 de 19117.¿?¿?
Existe un Bug al tratar con Filtros o estoy haciendo algo mal???
Gracias,
Un Saludo,
Xevi.
--
Como te puedes imaginar el RecCount esta basado en la propia función del RDD. Con eso creo que está dicho todo.
KeyCount esta basado en OrdKeyCount() del RDD pero para NTX dicha funcionalidad todavía no esta implementada, pero lo va estar en un par de días cuando salga la definitiva Beta 1.5, pero en cualquier caso NO contemplará el uso de filtros. Lo mismo ocurre ocn KeyNo.
Si necesitas que KeyCount y nKeyNo te den información exacta tendrás que poner la propiedad lKeyExact a .T., pero OJO, consume un montón de recursos por lo que no te recomiendo que lo utilices en en tablas que una vez filtradas tengan un montón de registros visibles. Usala con cuidado.
En cualquier caso las incongruencias que indicas seguro que sabrás que son limitaciones de los propios RDD y en definitiva del sistema de archivos Dbase, y por supuesto ocurrían igualmente en Clipper. Con bases de datos SQL este problema no existe, no obstante, una máxima de SQL es nunca hacer cursores que devuelvan esa cantidad ingente de registros.
Saludos
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=42a5cfd4@ozsrvnegro.ozlan.local...]42a5cfd4@ozsrvnegro.ozlan.local...[/email]
Hola,
//Creo un DbfDataSet... usando NTX
WITH OBJECT ::oNtxDataSource1 := TNtxDataSource():New( Self )
:cConnect := "."
:Create()
END
WITH OBJECT ::oDbfDataSet1 := TDbfDataSet():New( Self )
:oDataSource := ::oNtxDataSource1
:cProcess := "GENERAL"
o:cName := "CMOV.dbf"
o:AddIdxFile( "C11" )
o:AddIdxFile( "C14" )
o:AddIdxFile( "C15" )
o:AddIdxFile( "C16" )
o:AddIdxFile( "C17" )
o:AddIdxFile( "C18" )
:lOpen := .T.
:Create()
END
Creo un StatusBar para mostrar en que registro estoy del total de registros...
Y en OnChange del Browse...
METHOD DBBrowse1Change( oSender, lBookMarkChanged ) CLASS TFrmBrowseCMOV
::oStatusBar1:aItems[2]:cText := "Registro " +;
AllTrim( Str( ::oDBBrowse1:nKeyNo ) ) +;
" de " +;
AllTrim( Str( ::oDbfDataSet1:RecCount() ) ) //Resultado 19117
* AllTrim( Str( ::oDBBrowse1:KeyCount() ) ) //Resultado 19117
RETURN Nil
Un botón para aplicar un Filtro al DataSet...
METHOD Button1Click( oSender ) CLASS TFrmBrowseCMOV
::oDbfDataSet1:Filter( " COMENTARI = 'A' ", .T. )
RETURN Nil
Bien... el filtrado lo hace PERFECTO... PERO... el Evento OnChange del Browse me sigue dando como resultado de total de Registros igual que sin el filtrado 19117... ¿?¿?
Y si pulso la tecla <Fin>... se va al último registro correctamente, pero me está informando que estoy en el registro 19119 de 19117.¿?¿?
Existe un Bug al tratar con Filtros o estoy haciendo algo mal???
Gracias,
Un Saludo,
Xevi.
--
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
DataSet ... Error Total Registros
Ignacio,
He añadido...
::oDbfDataSet1:lKeyExact := .T.
Al pulsar en el botón de filtrado... pero sigue erre que erre dando 19117 registros totales...
Cuando trabajo con filtros, suelen ser muy pocos registros... 6, 10, 50, 80...
Un saludo,
Xevi.
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje news:42a5d7cf$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
Xevi,
Como te puedes imaginar el RecCount esta basado en la propia función del RDD. Con eso creo que está dicho todo.
KeyCount esta basado en OrdKeyCount() del RDD pero para NTX dicha funcionalidad todavía no esta implementada, pero lo va estar en un par de días cuando salga la definitiva Beta 1.5, pero en cualquier caso NO contemplará el uso de filtros. Lo mismo ocurre ocn KeyNo.
Si necesitas que KeyCount y nKeyNo te den información exacta tendrás que poner la propiedad lKeyExact a .T., pero OJO, consume un montón de recursos por lo que no te recomiendo que lo utilices en en tablas que una vez filtradas tengan un montón de registros visibles. Usala con cuidado.
En cualquier caso las incongruencias que indicas seguro que sabrás que son limitaciones de los propios RDD y en definitiva del sistema de archivos Dbase, y por supuesto ocurrían igualmente en Clipper. Con bases de datos SQL este problema no existe, no obstante, una máxima de SQL es nunca hacer cursores que devuelvan esa cantidad ingente de registros.
Saludos
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=42a5cfd4@ozsrvnegro.ozlan.local...]42a5cfd4@ozsrvnegro.ozlan.local...[/email]
Hola,
//Creo un DbfDataSet... usando NTX
WITH OBJECT ::oNtxDataSource1 := TNtxDataSource():New( Self )
:cConnect := "."
:Create()
END
WITH OBJECT ::oDbfDataSet1 := TDbfDataSet():New( Self )
:oDataSource := ::oNtxDataSource1
:cProcess := "GENERAL"
o:cName := "CMOV.dbf"
o:AddIdxFile( "C11" )
o:AddIdxFile( "C14" )
o:AddIdxFile( "C15" )
o:AddIdxFile( "C16" )
o:AddIdxFile( "C17" )
o:AddIdxFile( "C18" )
:lOpen := .T.
:Create()
END
Creo un StatusBar para mostrar en que registro estoy del total de registros...
Y en OnChange del Browse...
METHOD DBBrowse1Change( oSender, lBookMarkChanged ) CLASS TFrmBrowseCMOV
::oStatusBar1:aItems[2]:cText := "Registro " +;
AllTrim( Str( ::oDBBrowse1:nKeyNo ) ) +;
" de " +;
AllTrim( Str( ::oDbfDataSet1:RecCount() ) ) //Resultado 19117
* AllTrim( Str( ::oDBBrowse1:KeyCount() ) ) //Resultado 19117
RETURN Nil
Un botón para aplicar un Filtro al DataSet...
METHOD Button1Click( oSender ) CLASS TFrmBrowseCMOV
::oDbfDataSet1:Filter( " COMENTARI = 'A' ", .T. )
RETURN Nil
Bien... el filtrado lo hace PERFECTO... PERO... el Evento OnChange del Browse me sigue dando como resultado de total de Registros igual que sin el filtrado 19117... ¿?¿?
Y si pulso la tecla <Fin>... se va al último registro correctamente, pero me está informando que estoy en el registro 19119 de 19117.¿?¿?
Existe un Bug al tratar con Filtros o estoy haciendo algo mal???
Gracias,
Un Saludo,
Xevi.
--
He añadido...
::oDbfDataSet1:lKeyExact := .T.
Al pulsar en el botón de filtrado... pero sigue erre que erre dando 19117 registros totales...
Cuando trabajo con filtros, suelen ser muy pocos registros... 6, 10, 50, 80...
Un saludo,
Xevi.
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje news:42a5d7cf$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
Xevi,
Como te puedes imaginar el RecCount esta basado en la propia función del RDD. Con eso creo que está dicho todo.
KeyCount esta basado en OrdKeyCount() del RDD pero para NTX dicha funcionalidad todavía no esta implementada, pero lo va estar en un par de días cuando salga la definitiva Beta 1.5, pero en cualquier caso NO contemplará el uso de filtros. Lo mismo ocurre ocn KeyNo.
Si necesitas que KeyCount y nKeyNo te den información exacta tendrás que poner la propiedad lKeyExact a .T., pero OJO, consume un montón de recursos por lo que no te recomiendo que lo utilices en en tablas que una vez filtradas tengan un montón de registros visibles. Usala con cuidado.
En cualquier caso las incongruencias que indicas seguro que sabrás que son limitaciones de los propios RDD y en definitiva del sistema de archivos Dbase, y por supuesto ocurrían igualmente en Clipper. Con bases de datos SQL este problema no existe, no obstante, una máxima de SQL es nunca hacer cursores que devuelvan esa cantidad ingente de registros.
Saludos
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=42a5cfd4@ozsrvnegro.ozlan.local...]42a5cfd4@ozsrvnegro.ozlan.local...[/email]
Hola,
//Creo un DbfDataSet... usando NTX
WITH OBJECT ::oNtxDataSource1 := TNtxDataSource():New( Self )
:cConnect := "."
:Create()
END
WITH OBJECT ::oDbfDataSet1 := TDbfDataSet():New( Self )
:oDataSource := ::oNtxDataSource1
:cProcess := "GENERAL"
o:cName := "CMOV.dbf"
o:AddIdxFile( "C11" )
o:AddIdxFile( "C14" )
o:AddIdxFile( "C15" )
o:AddIdxFile( "C16" )
o:AddIdxFile( "C17" )
o:AddIdxFile( "C18" )
:lOpen := .T.
:Create()
END
Creo un StatusBar para mostrar en que registro estoy del total de registros...
Y en OnChange del Browse...
METHOD DBBrowse1Change( oSender, lBookMarkChanged ) CLASS TFrmBrowseCMOV
::oStatusBar1:aItems[2]:cText := "Registro " +;
AllTrim( Str( ::oDBBrowse1:nKeyNo ) ) +;
" de " +;
AllTrim( Str( ::oDbfDataSet1:RecCount() ) ) //Resultado 19117
* AllTrim( Str( ::oDBBrowse1:KeyCount() ) ) //Resultado 19117
RETURN Nil
Un botón para aplicar un Filtro al DataSet...
METHOD Button1Click( oSender ) CLASS TFrmBrowseCMOV
::oDbfDataSet1:Filter( " COMENTARI = 'A' ", .T. )
RETURN Nil
Bien... el filtrado lo hace PERFECTO... PERO... el Evento OnChange del Browse me sigue dando como resultado de total de Registros igual que sin el filtrado 19117... ¿?¿?
Y si pulso la tecla <Fin>... se va al último registro correctamente, pero me está informando que estoy en el registro 19119 de 19117.¿?¿?
Existe un Bug al tratar con Filtros o estoy haciendo algo mal???
Gracias,
Un Saludo,
Xevi.
--