PDA

Ver la Versión Completa : Saber si una base de datos esta vacía


Angel.Matilla
16-01-2023, 10:46:43
¿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.

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

FDQuery.IsEmpty (regresa true o false) o FDQuery.RecordCount = 0 (regresa la cantidad de registros)

Por medio de base de datos seria algo así:
SELECT COUNT(*) FROM TABLA