Nao consigo fazer um filtro no SQL?
Pessoal, boa noite, estou com problemas com filtros no SQL, quero filtrar se no caso as empresas nao possuem vinculos empregaticios, que na grid pelo count apareçe como 0 (zero), mais a procedure em destaque em vermelho abaixo nao esta funcionando.
Entao pessoal, na grid primeiro chamo a procedure [b:d83df08bc5]EmprFunc3[/b:d83df08bc5] que mostra todas empresas independente de ter ou nao funcionários, a procedure [b:d83df08bc5]EmprFunc[/b:d83df08bc5] Esta filtrando corretamente ou seja no where ja esta dizendo que tem que ser # diferente de 0 (zero) agora na procedure [b:d83df08bc5]EmprFunc2[/b:d83df08bc5] que estou querendo que mostre apenas as empresas que nao possuem empregados nao funciona :( sendo que na dbgrid apareçe o campo [b:d83df08bc5]ID_Func[/b:d83df08bc5] como 0 (zero), mais no filtro nao filtra nada.
Serah que tem algo haver com esse query fazer esse campo [b:d83df08bc5]count(id_func)[/b:d83df08bc5] em tempo de execução? Pois nao existe este campo na tabela Empresa esta sendo vinculada com a tabela Funcionarios o select.
Alguem pode me ajudar?
Banco = Firebird 2.0 - Componente para o filtro zQuery zeos 6.6.1
Adriano.
Procedure TFConEmpr.EmprFunc;
begin
//--Procedure que mostra se a empresa tem empregados
dm.qEmpresa.DisableControls; //desabilita os controles do query
with dm.qEmpresa do
begin
close;
sql.clear;
sql.Add(´select E.id_empresa, E.empresa, count(F.id_func)as ID_Func, count(F.id_func)as figura from empresa E left join Funcionarios F on F.id_empresa = E.id_empresa´);
sql.Add(´where F.id_func <> 0 group by 1,2 order by id_empresa´);
Open;
end;
dm.qEmpresa.EnableControls; //habilita os controles do query
end; //final da procedure
[color=red:d83df08bc5]Procedure TFConEmpr.EmprFunc2;
begin
//--Procedure que mostra se a empresa nao tem empregados
dm.qEmpresa.DisableControls; //desabilita os controles do query
with dm.qEmpresa do
begin
close;
sql.clear;
//sql.add(´select * from empresa E where not exists(select * from salario_m F where F.id_empresa = E.id_empresa)´);
sql.Add(´select E.id_empresa, E.empresa, count(F.id_func)as ID_Func, count(F.id_func)as figura from empresa E left join Funcionarios F on F.id_empresa = E.id_empresa´);
sql.Add(´where id_func = 0 group by 1,2 order by id_empresa´);
Open;
end;
dm.qEmpresa.EnableControls; //habilita os controles do query
end; //final da procedure[/color:d83df08bc5]
Procedure TFConEmpr.EmprFunc3;
begin
//--Procedure que mostra todas empresas
dm.qEmpresa.DisableControls; //desabilita os controles do query
with dm.qEmpresa do
begin
close;
sql.clear;
sql.Add(´select E.id_empresa, E.empresa, count(F.id_func)as ID_Func, count(F.id_func)as figura from empresa E left join Funcionarios F on F.id_empresa = E.id_empresa´);
sql.Add(´group by 1,2 order by id_empresa´);
Open;
end;
dm.qEmpresa.EnableControls; //habilita os controles do query
end; //final da procedure
Entao pessoal, na grid primeiro chamo a procedure [b:d83df08bc5]EmprFunc3[/b:d83df08bc5] que mostra todas empresas independente de ter ou nao funcionários, a procedure [b:d83df08bc5]EmprFunc[/b:d83df08bc5] Esta filtrando corretamente ou seja no where ja esta dizendo que tem que ser # diferente de 0 (zero) agora na procedure [b:d83df08bc5]EmprFunc2[/b:d83df08bc5] que estou querendo que mostre apenas as empresas que nao possuem empregados nao funciona :( sendo que na dbgrid apareçe o campo [b:d83df08bc5]ID_Func[/b:d83df08bc5] como 0 (zero), mais no filtro nao filtra nada.
Serah que tem algo haver com esse query fazer esse campo [b:d83df08bc5]count(id_func)[/b:d83df08bc5] em tempo de execução? Pois nao existe este campo na tabela Empresa esta sendo vinculada com a tabela Funcionarios o select.
Alguem pode me ajudar?
Banco = Firebird 2.0 - Componente para o filtro zQuery zeos 6.6.1
Adriano.
Adriano_servitec
Curtidas 0