viernes, 31 de enero de 2014

Saber si un cursor temporal o tabla .dbf está vacio.

Hola. Reciban cordiales saludos todos. Un pequeño tip, pero muy útil, es saber la forma para determinar si un cursor temporal o una tabla física (.dbf) está vacia totalmente. Muchas veces, para tal fin, contamos el numero de registros de las tablas con RECCOUNT() o usando la función COUNT(). Éstas son buenas opciones pero a veces, las funciones tienen ciertas condiciones o excepciones que dificultan obtener una certeza amplia sobre el numero de registros de dicha tabla.


Una forma práctica y rápida para saber si no hay ningun registro en la tabla o cursor es usar la Variable '_Tally'. Con un código como éste, podremos comprobarlo:


**--
SELECT tabla/cursor

IF _TALLY = 0

          **--Aqui el proceso si está vacio
          Messagebox("El cursor está vacio")


ENDIF
**--//


Bien... cualquier duda, sugerencia o comentario es siempre bienvenido.

Saludos!

Desde Managua, Nicaragua!
Ravenn :D :D :D

4 comentarios:

  1. Funciona solo inmediatamente despues de un Select SQL, no cuando hacemos Select

    ResponderEliminar
    Respuestas
    1. Hola. Gracias por comentar. Si, si ,si claro... la variable _TALLY devuelve el numero de registros procesados por ciertos comandos inmediatamente despues que éstos se ejecutan... si no, al procesar ningun registro... el valor de _TALLY seguiria siendo 0 y no podrias determinar la cantidad de registros. Los comandos deben ejecutarse primero para que la informacion contenida (numero de registros procesados) sea almacenada en la variable y asi puedas saber la cantidad de registros.

      Aca tenes una lista de comandos... y el funcionamiento de _TALLY

      http://msdn.microsoft.com/es-es/library/cc484924%28v=vs.71%29.aspx

      Un saludo!
      Desde Managua, Nicaragua!

      Eliminar
  2. y como se si el cursor esta vacio si me conecto con ODBC

    x1 = "select max(registro) num from siaf_certif_fase where ano= ?xano"
    = SQLEXEC(lnHandle, x1, 'sql6')
    quiero saber si sql6 me trae registtros o no,

    ResponderEliminar
    Respuestas
    1. usa este codigo
      x1 = "select max(registro) num from siaf_certif_fase where ano= ?xano"
      = SQLEXEC(lnHandle, x1, 'sql6')
      if reccound('sql6')>0 &&verifica si la tabla o cursor tiene registros
      direcctivas.....
      else && no tiene registros
      directivas
      endif

      Eliminar