Olá!
A intenção da aplicação é mostrar todos os horários disponíveis no dia. Caso ali já exista algum agendamento ele será exibido na respectiva linha, caso contrário a linha virá em branco mostrando que aquele horário está disponível.
Os agendamentos são exibidos no DataGridView de acordo com o dia que eu seleciono no calendário
Exemplo:

A imagem acima mostra como ele deverá ficar, porém
no momento o datagrid é preenchido da seguinte forma (clinica trabalha das 08:00 as 20:00)
private void frmAgenda_Load(object sender, EventArgs e)
{
string data = agenda.SelectionRange.Start.ToString("dd/MM/yyyy");
for (int cont = 8; cont <= 19; cont++)
{
string[] row = new string[] { "", "", data, cont.ToString() + ":00", "" };
dtgrdAgendamentos.Rows.Add(row);
string[] row2 = new string[] { "", "", data, cont.ToString() + ":30", "" };
dtgrdAgendamentos.Rows.Add(row2);
}
string[] row3 = new string[] { "", "", data, "20:00", "" };
dtgrdAgendamentos.Rows.Add(row3);
}
E depois quando seleciono um dia ele carrega as informações do banco MSSQL 2005 assim:
string dia = agenda.SelectionRange.Start.ToString();
try
{
conexao.Open();
adap = new SqlDataAdapter("SELECT paciente_codigo , consulta_nomepaciente , consulta_data, consulta_hora, consulta_valor, consulta_id, consulta_recibo FROM consulta WHERE consulta_data = CONVERT(DATETIME, '" + dia + "', 103)", conexao);
ds = new DataSet();
adap.Fill(ds, "Paciente_Agendamentos");
dtgrdAgendamentos.DataSource = ds.Tables[0];
dtgrdAgendamentos.Columns[5].Visible = false;
dtgrdAgendamentos.Columns[6].Visible = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conexao.Close();
}
Obviamente ele substitui o que havia sido carregado no Load, porém preciso que ele verifique o horário que determinado registro está salvo no BD (coluna consulta_hora), e coloque aquele agendamento na respectiva linha do datagrid. No nosso exemplo foram
agendadas e salvas no BD duas consultas no dia 12/05/2014, uma as 8:30 e a outras as 11:00...a aplicação deve colocar esses dois agendamentos em seus respectivos locais no DataGridView, e os disponíveis deixar sem nada, como na imagem de exemplo.
Agradeço a ajuda porque não faço ideia de como fazer isso. Talvez a forma como esteja no momento nem seja a mais apropriada.
Obrigado!