Ir al contenido


Foto

Conteo de Registros en un dbgrid


  • Por favor identifícate para responder
4 respuestas en este tema

#1 discorf1978

discorf1978

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 16 noviembre 2012 - 07:26

Hola a todos, tengo un problema tengo una cantidad de registros en el dbgrid, pero no se como si seleciono uno de ellos me diga en que registro estoy.  Tengo este codigo pero me actualiza siempre hasta el ultimo registro, pero si me muevo dentro de la grilla no me actualiza en que registro se encuentra



delphi
  1.   registroact := 0;
  2.   totalreg    := 0;
  3.   registroact := M.ZTlibro.RecNo;
  4.   totalreg    := M.ZTlibro.RecordCount;
  5.   Fregistro.Lregistro.Caption :=  IntToStr(registroact )+' - '+IntToStr(totalreg);


  • 0

#2 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 16 noviembre 2012 - 07:33

Saludos.

La propiedad RecNo siempre se actualiza cada vez que te mueves dentro del DataSet; debes revisar donde tienes puesto el código que muestras.
  • 0

#3 Faust

Faust

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 213 mensajes
  • LocationDistrito Federal

Escrito 16 noviembre 2012 - 06:20

En algunas bases de datos SQL la lectura de la posición del registro actual es imprecisa o simplemente es siempre cero aunque la consulta devuelva un conjunto de filas, esto es porque al ejecutar la consulta por el servidor nunca sabe la cantidad de registros que devolverá ya que el cursor que se usa es unidireccional, al menos en SQL Server y Access utilizando los componentes ADO si muestra de manera fidedigna la posición del registro actual, no he intentado esto con firebird, interbase o algún otro tipo de servidor de bases de datos pero esperemos que alguien con más experiencia en esto nos lo comente, saludos.

Acabo de leer detenidamente tu pregunta y creo que es lo que te comento... por eso cuando llegas al final del grid si te muestra la posición del registro. Sospecho que estás usando MySQL y los componentes Zeos...
  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 17 noviembre 2012 - 05:00

Hola, a mí me pasó algo similar con los recordcounts en Firebird con IBX, siempre daba 1 habiendo miles de registros, el truco estaba en ir al último registro y luego volver al primero:



delphi
  1. Tabla.Last;
  2. Tabla.First;



Así sí da el registro total y el RecNo trabaja de manera correcta.

Saludos.

PD.: Gracias a Egostar el Tip ;)
  • 0

#5 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.301 mensajes
  • LocationArgentina

Escrito 17 noviembre 2012 - 08:19

El problema no es de IBX necesariamente... el problema proviene desde TCustomDataSet que define a RecNo como virtual y por defecto no hace nada. Resulta que por esto, casi ninguna suite de componentes se digna de redefinir el comportamiento para devolver el valor como corresponde.

Saludos,
  • 0




IP.Board spam blocked by CleanTalk.