es que el AS Total implica que lo dejara creo, en una variable Total que no tienes definida
yo por ejemplo para un Stored Procedure que hice hace 2 dias es asi, puede que te arroje algo de luz porque es algo parecido
Código:
DELIMITER $$
USE `BASE_DE_DATOS_A_USAR`$$
DROP PROCEDURE IF EXISTS `Stardust_Players_Conected`$$
CREATE DEFINER=`USUARIOBD`@`%` PROCEDURE `Stardust_Players_Conected`()
BEGIN
DECLARE suma_total DECIMAL(10, 0);
-- Sumar los valores de campo_a_sumar cuando condicion_campo es 1
SELECT COALESCE(SUM(status_online), 0) INTO suma_total
FROM STARDUST_BDUsers
WHERE status_online = 1;
-- Insertar el resultado en la tabla resultados_suma
TRUNCATE TABLE STARDUST_TOTAL_PLAYERS_CONECTADOS;
INSERT INTO STARDUST_TOTAL_PLAYERS_CONECTADOS (NUM_PLAYERS, Fecha)
VALUES (suma_total, CURDATE());
END$$
DELIMITER ;
como ves, el DECLARE suma_total es lo que seria tu Total que no encuentra
si "suma_total" es con decimales lo declaramos (por ejemplo con 2 decimales) como DECLARE suma_total DECIMAL(10, 2);
el COALESCE es por si no tiene valor ese campo o registro (NULL) creo que lo pone como 0
seria algo asi para pasarlo al TLabel o TEdit
Código:
void PasarSumaTotalAMyLabel() {
// Supongamos que tienes un componente TMyQuery llamado MyQuery
MyQuery->SQL->Clear();
MyQuery->SQL->Add("SELECT SUM(Importe) INTO Total FROM CuentasPorCobrar"); // Tu consulta SQL
MyQuery->Open(); // Ejecuta la consulta
// Verificamos si hay resultados
if (!MyQuery->Eof) {
// Extraer el valor de 'Total'
double sumaTotal = MyQuery->FieldByName("Total")->AsFloat;
// Convertir el valor a texto y asignarlo al TLabel
Label1->Caption = FloatToStr(Total);
} else {
Label1->Caption = "No hay resultados"; // En caso de no obtener resultados
}
MyQuery->Close();
}
TEN EN CUENTA QUE EL CAMPO Importe tiene la I en mayuscula en la definicion de la Tabla y eso creo que importa porque diferencia mayusculas de minusculas
Este tipo de consulta devuelve directamente la suma de un campo llamado campo en la tabla tu_tabla, y puedes extraer el valor de suma_total directamente desde el conjunto de resultados sin declarar nada en SQL.
Código:
// Asumiendo que tienes un componente TMyQuery llamado MyQuery
MyQuery->SQL->Clear();
MyQuery->SQL->Add("SELECT SUM(campo) AS suma_total FROM tu_tabla"); // La consulta SQL
MyQuery->Open(); // Ejecuta la consulta y abre el conjunto de resultados
if (!MyQuery->Eof) { // Asegurarse que hay resultados
double sumaTotal = MyQuery->FieldByName("suma_total")->AsFloat; // Recuperar el resultado de la suma
Label1->Caption = FloatToStr(sumaTotal); // Mostrar en el Label
}