Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Saber si una base de datos esta vacía (https://www.clubdelphi.com/foros/showthread.php?t=96059)

Angel.Matilla 16-01-2023 10:46:43

Saber si una base de datos esta vacía
 
¿Existe ninguna propiedad o evento entre los componentes de las pestañas de Interbase que nos diga si una base de datos tiene registros o no o la única manera es ir abriendo las tablas una por uan y con un query ver cuantos registros tiene?

Casimiro Notevi 16-01-2023 10:58:02

Creo que tendrás que contar los registros por cada tabla, prueba este procedure.
Código SQL [-]
CREATE OR ALTER PROCEDURE ContarRegistrosTablas RETURNS (
    TABLA VARCHAR(31),
    CANTIDAD INTEGER
)
AS
BEGIN
  /* Ejemplo: select * from ContarRegistrosTablas order by 2 desc */
  For Select RDB$Relation_Name From RDB$Relations
  Where (RDB$System_Flag = 0) And (RDB$View_BLR Is Null)
  Order By RDB$Relation_Name Into :Tabla Do
  Begin
    Execute Statement 'Select Count (*) From ' || :Tabla Into :Cantidad;
    Suspend;
  End
End

duilioisola 16-01-2023 11:06:25

Habría que definir "vacia".
Si hay una tabla con un registro que tiene constantes (idioma, valor por defecto para cosas, ultima actualizacion, etc), ¿se la considera vacía?

Angel.Matilla 16-01-2023 12:35:54

Gracias a los dos. Me temía que no existía esa funcionalidad; probaré el código en cuanto pueda. Sobre lo que comenta duilioisola, es evidente que lo de "vacía" es muy elástico; me refiero a que el usuario no ha introducido ningún campo de forma manual. No sé si me explico.

Casimiro Notevi 16-01-2023 13:25:47

Puedes consultar sólo las tablas que puedan ser editadas por los usuarios y comprobar si hay registros de más en ellas.

pgranados 16-01-2023 19:00:15

Cita:

Empezado por Angel.Matilla (Mensaje 550043)
¿Existe ninguna propiedad o evento entre los componentes de las pestañas de Interbase que nos diga si una base de datos tiene registros o no o la única manera es ir abriendo las tablas una por uan y con un query ver cuantos registros tiene?

Por medio de Delphi lo haria de la siguiente manera:

Código Delphi [-]
FDQuery.IsEmpty
(regresa true o false) o
Código Delphi [-]
FDQuery.RecordCount = 0
(regresa la cantidad de registros)

Por medio de base de datos seria algo así:
Código SQL [-]
SELECT COUNT(*) FROM TABLA


La franja horaria es GMT +2. Ahora son las 14:37:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi