Fórum Nao consigo fazer um filtro no SQL? #58500
05/07/2007
0
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)