Então e vou passar como parâmetro a data, serviço, hora inicial e hora final e o retorno quero que seja os nome dos funcionários que estão disponíveis. Para vc enterder melhor tenho duas tabelas no banco:
- agenda: servico, data, hora inicial, hora final e cliente
- permissão: funcionario, servico e privilegio
Abaixo segue o codigo que estou utilizando mas dessa maneira não estou conseguindo testar o intervalo entre hora finicial e hora final:
//método busca agenda
public BindingSource BuscaAgenda(MOR.agendaMOR ag)
{
DataSet tabela = new DataSet();
BindingSource bs = new BindingSource();
SqlDataAdapter da = new SqlDataAdapter(" SELECT pm.codigo, pm.funcionario, pm.tipo, pm.servico,pm.privilegio,fc.nome nome_func"
+ " FROM permissao pm INNER JOIN"
+ " funcionario fc ON pm.funcionario = fc.codigo"
+ " WHERE privilegio = 'SIM' AND servico = '" + ag.Servico.Codigo + "'AND (NOT EXISTS"
+ " (SELECT 'Agenda'"
+ " FROM agenda ag"
+ " WHERE data = '"+ag.Data+"' AND horaInicial >= '"+ag.HoraInicial+"' AND horaFinal <= '"+ag.HoraFinal+"'"
+ " AND servico = '"+ag.Servico.Codigo+"'AND ag.funcionario = pm.funcionario))", ConStr);
da.Fill(tabela, "agenda");
bs.DataSource = tabela;
bs.DataMember = "AGENDA";
return bs;
}
}