ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Resolvido - Como gerar agendamento automático

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
mikelustosa
Aprendiz
Aprendiz


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 193

MensagemEnviada: Seg Ago 18, 2014 10:45 am    Assunto: Resolvido - Como gerar agendamento automático Responder com Citação

Bom dia amigos!

É o seguinte, preciso de uma ajuda na Lógica de como gerar um agendamento de um determinado paciente de acordo com o pacote escolhido.

Por exemplo:
os pacotes disponíveis são:
1x p/ semana, 2x p/ semana, 3x p/ semana, 4x p/ semana, 5x p/ semana

e ainda tem a opção de quantidade de sessões.

Ou seja se o paciente optar por 2x p/ semana, segunda e quarta, por exemplo, e 30 sessões, o sistema deverá agendar esse paciente em todas as segundas e quartas até acabarem as 30 sessões.

E assim por diante...

Entenderam?

Abraço a todos!


Editado pela última vez por mikelustosa em Sex Ago 22, 2014 5:21 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Seg Ago 18, 2014 5:47 pm    Assunto: Responder com Citação

Sim, entendi..qual sua dificuldade ???

A "logica" ta pronta, o que falta é código..qual sua dificuldade ???
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mikelustosa
Aprendiz
Aprendiz


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 193

MensagemEnviada: Seg Ago 18, 2014 9:40 pm    Assunto: Responder com Citação

Opa!

Então a dificuldade é realmente codificar.

To meio sem ideia de como fazer. kkk

Tipo se o usuário selecionar 2x na semana, e 30 sessões....

o que codificar.

Talzes colocaria um loop até atingir as 30 sessões para verificar cada dia da semana mas sempre verificando se já chegou as 30 sessões. Caso tenha chegado, sair do loop.

??

: /
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Ter Ago 19, 2014 9:09 am    Assunto: Responder com Citação

Se você tem a quantidade de sessões basta fazer um for até o numero de sessões e lançar...ta simples..escolhe o dia da semana e dai vai somando 7 dias a data inicial até completar a semana...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Ter Ago 19, 2014 9:19 am    Assunto: Responder com Citação

O ghost tem razão, somente fazer um for..do, pois o resto é simples, claro que tem de definir o dia da primeira sessão e da segunda e depois é somente adicionar 7 dias às datas destas, assim sempre dará no mesmo dia da semana as sessões.



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
MKL
Novato
Novato


Registrado: Segunda-Feira, 25 de Mai de 2009
Mensagens: 7

MensagemEnviada: Qui Ago 21, 2014 12:15 am    Assunto: Re: Como gerar agendamento automático Responder com Citação

Acho que isso deve resolver teu problema.


var
dt: TDate;
i : integer;
begin

dt:= date();
i:= 0;

while not I = 30 do
begin
case DayofWeek(dt) of
// aki vc coloca os dias da semana se for de 2 em 2 por exemplo terças
// e quintas, sendo que no DayOfWheek o primeiro dia é Domingo

3: begin
//Comandos para agendar
inc(i)
end;
5: begin
//Comandos para agendar
inc(i)
end;
end;
dt:= dt+1;

end;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mikelustosa
Aprendiz
Aprendiz


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 193

MensagemEnviada: Qui Ago 21, 2014 1:10 pm    Assunto: Responder com Citação

Fiz assim:

for i := 0 to 10 do//Aqui o usuário selecionou dez sessões....

begin
case DayofWeek(dt) of
// aki vc coloca os dias da semana se for de 2 em 2 por exemplo terças
// e quintas, sendo que no DayOfWheek o primeiro dia é Domingo

3: begin
//Comandos para agendar
if (ch_ter.Checked = true) then
begin
showmessage('Entrou terça');
with dataModule1.adoq_marcacoes do
begin
close;
SQL.Clear;
SQL.Add('insert into marcacoes (Data, Horario, Nome, Telefone, Telefone2, Cod_medico, Procedimento, Procedimento2,Convenio, Cod_paciente, Valor, identidade, Cod_funcionario, FormaPgt, sala) values (:DataInicial,'''+ edit19.Text +''','''+ ed_nome.text +''','''+ ed_foneRes.Text +''','''+ ed_foneCel.Text +''','''+ frm_marcacoes.ed_codMed.Text +''','''+ frm_marcacoes.DBGrid1.Columns[6].Field.asString +''','''+ frm_marcacoes.DBGrid1.Columns[7].Field.asString +''','''+ frm_marcacoes.DBGrid1.Columns[5].Field.asString +''','''+ frm_marcacoes.DBGrid1.Columns[13].Field.asString +''', :Valor,'''+ ed_identidade.Text +''', :Cod_funcionario, '''+ lbl_formaPgt.Caption +''', '''+ frm_marcacoes.DBGrid1.Columns[21].Field.asString +''')');
parameters.ParamByName('DataInicial').Value := dateTostr(dt);
parameters.ParamByName('Valor').Value := 0;//valor / vVezesSemana;
parameters.ParamByName('Cod_funcionario').Value := dataModule1.adoq_login.FieldByName('Cod_funcionario').Value;
ExecSQL;
close;

end;

//inc(i)
end;
end;

5: begin
//Comandos para agendar
if (ch_qui.Checked = true) then
begin
showmessage('Entrou quinta');
with dataModule1.adoq_marcacoes do
begin
close;
SQL.Clear;
SQL.Add('insert into marcacoes (Data, Horario, Nome, Telefone, Telefone2, Cod_medico, Procedimento, Procedimento2,Convenio, Cod_paciente, Valor, identidade, Cod_funcionario, FormaPgt, sala) values (:DataInicial,'''+ edit21.Text +''','''+ ed_nome.text +''','''+ ed_foneRes.Text +''','''+ ed_foneCel.Text +''','''+ frm_marcacoes.ed_codMed.Text +''','''+ frm_marcacoes.DBGrid1.Columns[6].Field.asString +''','''+ frm_marcacoes.DBGrid1.Columns[7].Field.asString +''','''+ frm_marcacoes.DBGrid1.Columns[5].Field.asString +''','''+ frm_marcacoes.DBGrid1.Columns[13].Field.asString +''', :Valor,'''+ ed_identidade.Text +''', :Cod_funcionario, '''+ lbl_formaPgt.Caption +''', '''+ frm_marcacoes.DBGrid1.Columns[21].Field.asString +''')');
parameters.ParamByName('DataInicial').Value := dateTostr(dt);
parameters.ParamByName('Valor').Value := 0;//valor / vVezesSemana;
parameters.ParamByName('Cod_funcionario').Value := dataModule1.adoq_login.FieldByName('Cod_funcionario').Value;
ExecSQL;
close;

end;

//inc(i)
end;
end;

end;
dt:= dt+1;

end;

end;


Porém ele faz o laço de dez dias e não de dez sessões.

O problema é se o usuário selecionar mais de uma vez na semana.

O sistema vai ter que entender que são 10 sessões e se for 2x por semana vão ser 5 semanas.

Como resolveria?

Está quase solucionado! abraço a todos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mikelustosa
Aprendiz
Aprendiz


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 193

MensagemEnviada: Sex Ago 22, 2014 11:01 am    Assunto: Responder com Citação

^^ up!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mikelustosa
Aprendiz
Aprendiz


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 193

MensagemEnviada: Sex Ago 22, 2014 5:18 pm    Assunto: Responder com Citação

Amigos, consegui resolver o problema.

Obrigado a todos pela ajuda mas resolvi.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB