Agenda com StringGrid

Delphi

27/11/2012

Fala galera

Comecei a seguir um exemplo de como fazer esse modelo de agenda:

Hora Nome
----- --------------
07:00
07:30 Fulano
08:00

E não to conseguindo listar os dados do banco na StringGrid... No banco tenho 2 horarios cadastrados: 15:30:00 e 20:30:00, mas n aparecem, tentei adaptar para o meu código mas não deu certo...

var
  i: Integer;
  hora: string;

  begin

  //qryAgenda.Active:= true;

  hora := '06:30';
  //Preenche a primeira coluna com os horarios
  for i := 1 to 30 do
  begin
    hora :=  FormatDateTime('hh:mm:ss',
     IncMinute(StrtoDateTime(FormatDateTime('hh:mm:ss',StrToDateTime(hora))), 30));
     StringGrid2.Cells[0, i] := hora;
  end;

  while not qryAgenda.Eof do
  begin
    for i := 1 to StringGrid2.RowCount - 1 do
    begin
      //Se a hora for igual a que esta na coluna lança na grade
      if Copy(qryAgenda.FieldByName('hrservico').AsString, 0, i) = StringGrid2.Cells[0, i] then
      begin
       StringGrid2.Cells[0, i] := qryAgenda.FieldByName('dtservico').AsString;

     //Abandona o laço
        Break;
      end;
    end;
    //Vai para o proximo registro
    Next;
  end;
Vander Carlos

Vander Carlos

Curtidas 0

Respostas

Claudia Nogueira

Claudia Nogueira

27/11/2012

Levei em conta que seu campo hrservico é do tipo string, por causa do seu código.
Tenta assim:

var
  i, iColuna: Integer;
  hora: string;
  horabd : TTime;
begin
  hora := '06:30';
  //Preenche a primeira coluna com os horarios
  for i := 1 to 30 do
  begin
    hora := FormatDateTime('hh:mm:ss',IncMinute(StrtoDateTime(FormatDateTime('hh:mm:ss',StrToDateTime(hora))), 30));
    StringGrid2.Cells[0, i] := hora;
  end;

  while not qryAgenda.Eof do
  begin
    iColuna := 1;
    try
      horabd := StrToTime(qryAgenda.FieldByName('hrservico').AsString);
      for i := 1 to StringGrid2.RowCount - 1 do
      begin
        //Se a hora for igual a que esta na coluna lança na grade
        if FormatDateTime('hh:mm:ss',horabd) = StringGrid2.Cells[0, i] then
        begin
          if StringGrid2.Cells[iColuna, i] <> '' then
            Inc(iColuna);
          StringGrid2.Cells[iColuna, i] := qryAgenda.FieldByName('dtservico').AsString;
          //Abandona o laço
          Break;
        end;
      end;
    except
    end;
    //Vai para o proximo registro
    qryAgenda.Next;
  end;
end;
GOSTEI 0
Vander Carlos

Vander Carlos

27/11/2012

Olá Claudiadnh, muito obrigado mas com esse não deu certo... Procurei outro exemplo e deu certo:


while (not qryAgenda.Eof) do begin

  // Procurando a linha que o horário está
  vLinha := 0;

  for I := 0 to (StringGrid2.RowCount - 1) do begin

     if (StringGrid2.Cells[0,I] = qryAgenda.FieldByName('hrservico').AsString) then begin
        vLinha := I;
        Break;
    end;
  end;

    //Pegando os registros do banco e inserindo na hora que foi localizada

    StringGrid2.Cells[2,vLinha] := qryAgenda.FieldByName('cliente').AsString;


    qryAgenda.Next;

    //Definindo o nome das colunas
    StringGrid2.Cells[0,0]:= 'Horário';
    StringGrid2.Cells[1,0]:= 'Nome';

  end;
 end;


Só me tira mais uma dúvida, no banco as datas estão salvas assim: 27/11/2012 00:00:00

E quando eu tento fazer alguma consulta só para listar os horários daquela data, não me retorna nenhum registro.

Consulta:

 qryAgenda.Close;
 qryAgenda.SQL.Clear;
 qryAgenda.SQL.Add('SELECT * FROM cadagenda WHERE dtagendamento = ' + edtDataAtual.Text); //que é essa 27/11/2012 00:00:00 
 qryAgenda.Open;


Estou usando o MySQL, mudei essa semana pra ele :(

Grato.

GOSTEI 0
Claudia Nogueira

Claudia Nogueira

27/11/2012

Tenta assim:

qryAgenda.Close;
qryAgenda.SQL.Clear;
qryAgenda.SQL.Add('SELECT * FROM cadagenda WHERE dtagendamento = ' + QuotedStr(FormatDateTime('yyyy-mm-dd hh:mm:ss', StrToDateTime(edtDataAtual.Text)))); //que é essa 27/11/2012 00:00:00
qryAgenda.Open;
GOSTEI 0
Vander Carlos

Vander Carlos

27/11/2012

É isso mesmo Claudiadnh :D

Muito obrigado, resolvido.
GOSTEI 0
Vander Carlos

Vander Carlos

27/11/2012

Só mais 1 coisa, como eu posso zerar o tempo do MonthCalendar ?

Quando eu faço essa consulta:

qryAgenda.SQL.Add('SELECT * FROM cadagenda WHERE dtagendamento = ' + QuotedStr(FormatDateTime('yyyy-mm-dd hh:mm:ss' MonthCalendar1.Date)));


Ele me retorna a data + a hora atual, e eu queria que ele me retornasse a data + o tempo zerado: 2012-11-28 00:00:00

Grato.
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

27/11/2012

Primeiro adiciona DateUtils no Uses do Form.

qryAgenda.SQL.Add('SELECT * FROM cadagenda WHERE dtagendamento = ' + QuotedStr(FormatDateTime('yyyy-mm-dd hh:mm:ss', DateOf(MonthCalendar1.Date))));


Só mais 1 coisa, como eu posso zerar o tempo do MonthCalendar ?

Quando eu faço essa consulta:

qryAgenda.SQL.Add('SELECT * FROM cadagenda WHERE dtagendamento = ' + QuotedStr(FormatDateTime('yyyy-mm-dd hh:mm:ss' MonthCalendar1.Date)));


Ele me retorna a data + a hora atual, e eu queria que ele me retornasse a data + o tempo zerado: 2012-11-28 00:00:00

Grato.
GOSTEI 0
Vander Carlos

Vander Carlos

27/11/2012

Isso mesmo =)

Muito obrigadooo.
GOSTEI 0
Glebson Guimaraes

Glebson Guimaraes

27/11/2012

Isso mesmo =)

Muito obrigadooo.


kara pelo amor de Deus não Sei Como fazer essa agenda me ajuda ai por favor por onde eu começo?
Tenho um a cliente que quer uma agenda assim
GOSTEI 0
Vander Carlos

Vander Carlos

27/11/2012

Já tem todas as tabelas feitas ?
GOSTEI 0
Glebson Guimaraes

Glebson Guimaraes

27/11/2012

Já tem todas as tabelas feitas ?


quais sao que precisa para essa agenda?
GOSTEI 0
Vander Carlos

Vander Carlos

27/11/2012

Só criar a tabela da agenda rsrs... Ela só quer um sistema pra agendamento ?

GOSTEI 0
Jeferson Machia

Jeferson Machia

27/11/2012

Olá Claudiadnh estava procurando um e-mail para contato, vi que deu algumas dicas para um pessoal sobre agenda em stringGrid, preciso montar uma para um cliente meu, e estou meio perdido se puder me dar algumas dicas ao menos para direcionar para algum lugar. Obriagdo.
GOSTEI 0
Cleber Oliveira

Cleber Oliveira

27/11/2012

tambem estou precisando de uma ajuda com uma agenda medica nem sei por onde começar meu email e crbosjrp@gmail.com
GOSTEI 0
Robson Morais

Robson Morais

27/11/2012

Bom dia, eu fiz a agenda de 2 maneiras....1 criando dinamicamente edit para cada horário configurado, ficou rapido e leve e outra utilizando a agenda do tms software, muito boa.
GOSTEI 0
POSTAR