 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
mikelustosa Aprendiz

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 193
|
Enviada: Seg Ago 18, 2014 10:45 am Assunto: Resolvido - Como gerar agendamento automático |
|
|
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 |
|
 |
Ghost_Rider Colaborador

Registrado: Segunda-Feira, 6 de Outubro de 2003 Mensagens: 4437
|
Enviada: Seg Ago 18, 2014 5:47 pm Assunto: |
|
|
Sim, entendi..qual sua dificuldade ???
A "logica" ta pronta, o que falta é código..qual sua dificuldade ??? |
|
| Voltar ao Topo |
|
 |
mikelustosa Aprendiz

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 193
|
Enviada: Seg Ago 18, 2014 9:40 pm Assunto: |
|
|
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 |
|
 |
Ghost_Rider Colaborador

Registrado: Segunda-Feira, 6 de Outubro de 2003 Mensagens: 4437
|
Enviada: Ter Ago 19, 2014 9:09 am Assunto: |
|
|
| 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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Ter Ago 19, 2014 9:19 am Assunto: |
|
|
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 |
|
 |
MKL Novato


Registrado: Segunda-Feira, 25 de Mai de 2009 Mensagens: 7
|
Enviada: Qui Ago 21, 2014 12:15 am Assunto: Re: Como gerar agendamento automático |
|
|
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 |
|
 |
mikelustosa Aprendiz

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 193
|
Enviada: Qui Ago 21, 2014 1:10 pm Assunto: |
|
|
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 |
|
 |
mikelustosa Aprendiz

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 193
|
Enviada: Sex Ago 22, 2014 11:01 am Assunto: |
|
|
| ^^ up! |
|
| Voltar ao Topo |
|
 |
mikelustosa Aprendiz

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 193
|
Enviada: Sex Ago 22, 2014 5:18 pm Assunto: |
|
|
Amigos, consegui resolver o problema.
Obrigado a todos pela ajuda mas resolvi. |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|