Fórum Problema nos blocos??? #281787

16/05/2005

0

alguem consegue me dizer por que esse procedure só funciona pros alunos? ele nao chega a rodar nos professores. acho que tem algum problema nos blocos(begin / end)... olhei olhei mas nao consegui encherga-lo. Se alguem puder me ajudar...
--------------------------------------------------

procedure TEmprestimo.Btn_BaixarClick(Sender: TObject);
var
d1,d2 : TDateTime;
vdDATA,multa : extended;
Cod1,Cod2,viMINUTOS,viHORAS : integer;
begin


// Verifica o tipo de consulta
if Combo_TipoConsulta.Text <>´´ Then
begin
Dm.Tbl_TipoConsulta.Close;
Dm.Tbl_TipoConsulta.SelectSQL.Clear;
Dm.Tbl_TipoConsulta.SelectSQL.Add(´select * from TIPO_CONSULTA Where TIPO = ´´´ + Trim(Combo_TipoConsulta.Text) + ´´´´);
Dm.Tbl_TipoConsulta.Open;
end;


Edit_DataBaixa.Text := FormatDateTime(´dd/mm/yyyy´,Date);
// uses: DateUtils
vdDATA := DaysBetween(date, StrToDateTime(Edit_DATAEMPR.text));



{Checa as unidades de tempo}
//-----------------------------------------------------
if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Dia(s)´ then
begin
multa := ((( (vdDATA / StrToFloat(DM.Tbl_TipoConsultaTEMPO.AsString)-1)) * StrToFloat(DM.Tbl_TipoConsultaMULTA.AsString)));
// subtração de data para verificar multa
d1 := StrToDate(Edit_DataBaixa.Text);
d2 := StrToDate(Edit_DataDev.Text);

// se o emprestimo for para aluno
if Combo_Tipo.Text = ´ALUNO´ then
begin
if d1 > d2 then
// emprestimo para aluno com multa
begin
ShowMessage(´emprestimo para aluno com multa:´+FloatToStr(multa));
end
else
// emprestimo para aluno sem multa
begin
ShowMessage(´emprestimo para aluno sem multa:´+FloatToStr(multa));
end;
end;
end

else
// se o emprestimo for para Professor
if Combo_Tipo.Text = ´PROFESSOR´ then
begin
if d1 > d2 then
//emprestimo para Professor com multa
begin
ShowMessage(´emprestimo para Professor com multa:´+FloatToStr(multa));
end
else
// emprestimo para Professor sem multa
begin
ShowMessage(´emprestimo para Professor sem multa:´+FloatToStr(multa))

end;
end;

//-----------------------------------------------------

end;


Mahdak

Mahdak

Responder

Posts

16/05/2005

Rjun

[/code]
procedure TEmprestimo.Btn_BaixarClick(Sender: TObject);
var
d1,d2 : TDateTime;
vdDATA,multa : extended;
Cod1,Cod2,viMINUTOS,viHORAS : integer;

begin
if Combo_TipoConsulta.Text <>´´ Then
begin
Dm.Tbl_TipoConsulta.Close;
Dm.Tbl_TipoConsulta.SelectSQL.Clear;
Dm.Tbl_TipoConsulta.SelectSQL.Add(´select * from TIPO_CONSULTA Where TIPO = ´´´ + Trim(Combo_TipoConsulta.Text) + ´´´´);
Dm.Tbl_TipoConsulta.Open;
end;

Edit_DataBaixa.Text := FormatDateTime(´dd/mm/yyyy´,Date);
vdDATA := DaysBetween(date, StrToDateTime(Edit_DATAEMPR.text));

if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Dia(s)´ then
begin
multa := ((( (vdDATA / StrToFloat(DM.Tbl_TipoConsultaTEMPO.AsString)-1)) * StrToFloat(DM.Tbl_TipoConsultaMULTA.AsString)));
d1 := StrToDate(Edit_DataBaixa.Text);
d2 := StrToDate(Edit_DataDev.Text);

if Combo_Tipo.Text = ´ALUNO´ then
begin
if d1 > d2 then
ShowMessage(´emprestimo para aluno com multa:´+FloatToStr(multa))
end
ShowMessage(´emprestimo para aluno sem multa:´+FloatToStr(multa));
end
else
begin
if Combo_Tipo.Text = ´PROFESSOR´ then
begin
if d1 > d2 then
ShowMessage(´emprestimo para Professor com multa:´+FloatToStr(multa))
else
ShowMessage(´emprestimo para Professor sem multa:´+FloatToStr(multa))
end;
end;
end;
end;
[/code]


Responder

Gostei + 0

16/05/2005

Mahdak

amigo... nao deu certo... vou postar o codigo novamente aqui:

----------------------------------
procedure TEmprestimo.Btn_BaixarClick(Sender: TObject);
var
d1,d2 : TDateTime;
vdDATA,multa : extended;
Cod1,Cod2,viMINUTOS,viHORAS : integer;

begin
    if Combo_TipoConsulta.Text <>´´ Then
    begin
        Dm.Tbl_TipoConsulta.Close;
        Dm.Tbl_TipoConsulta.SelectSQL.Clear;
        Dm.Tbl_TipoConsulta.SelectSQL.Add(´select * from TIPO_CONSULTA Where TIPO = ´´´ + Trim(Combo_TipoConsulta.Text) + ´´´´);
        Dm.Tbl_TipoConsulta.Open;
    end;

        Edit_DataBaixa.Text := FormatDateTime(´dd/mm/yyyy´,Date);
        vdDATA := DaysBetween(date, StrToDateTime(Edit_DATAEMPR.text));

            if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Dia(s)´ then
            begin
                multa := ((( (vdDATA / StrToFloat(DM.Tbl_TipoConsultaTEMPO.AsString)-1)) * StrToFloat(DM.Tbl_TipoConsultaMULTA.AsString)));
                d1 := StrToDate(Edit_DataBaixa.Text);
                d2 := StrToDate(Edit_DataDev.Text);

                if Combo_Tipo.Text = ´ALUNO´ then
                begin
                    if d1 > d2 then
                        ShowMessage(´emprestimo para aluno com multa:´+FloatToStr(multa))
                    else
                        ShowMessage(´emprestimo para aluno sem multa:´+FloatToStr(multa));
                    end;
                end
                      else
                          begin
                              if Combo_Tipo.Text = ´PROFESSOR´ then
                              begin
                                  if d1 > d2 then
                                  ShowMessage(´emprestimo para Professor com multa:´+FloatToStr(multa))
                                  else
                                      ShowMessage(´emprestimo para Professor sem multa:´+FloatToStr(multa))
                                  end;
                           end;

             end;



Responder

Gostei + 0

17/05/2005

Massuda

Formatando corretamente seu código fica assim
procedure TEmprestimo.Btn_BaixarClick(Sender: TObject);
var
  d1, d2: TDateTime;
  vdDATA, multa: extended;
  Cod1, Cod2, viMINUTOS, viHORAS: Integer;
begin
  if Combo_TipoConsulta.Text <> ´´ then begin
    Dm.Tbl_TipoConsulta.Close;
    Dm.Tbl_TipoConsulta.SelectSQL.Clear;
    Dm.Tbl_TipoConsulta.SelectSQL.Add(´select * from TIPO_CONSULTA Where TIPO = ´´´ +
      Trim(Combo_TipoConsulta.Text) + ´´´´);
    Dm.Tbl_TipoConsulta.Open;
  end;

  Edit_DataBaixa.Text := FormatDateTime(´dd/mm/yyyy´, Date);
  vdDATA := DaysBetween(Date, StrToDateTime(Edit_DATAEMPR.Text));

  if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Dia(s)´ then begin
    multa := ((((vdDATA / StrToFloat(DM.Tbl_TipoConsultaTEMPO.AsString) - 1)) *
      StrToFloat(DM.Tbl_TipoConsultaMULTA.AsString)));
    d1 := StrToDate(Edit_DataBaixa.Text);
    d2 := StrToDate(Edit_DataDev.Text);

    if Combo_Tipo.Text = ´ALUNO´ then begin
      if d1 > d2 then
        ShowMessage(´emprestimo para aluno com multa:´ + FloatToStr(multa))
      else
        ShowMessage(´emprestimo para aluno sem multa:´ + FloatToStr(multa));
    end;
  end
  else begin
    if Combo_Tipo.Text = ´PROFESSOR´ then begin
      if d1 > d2 then
        ShowMessage(´emprestimo para Professor com multa:´ + FloatToStr(multa))
      else
        ShowMessage(´emprestimo para Professor sem multa:´ + FloatToStr(multa))
    end;
  end;
end;
Parece que o teste para o caso do professor está no lugar errado, mas só sabendo as regras de negócio para saber onde deveria estar. Me parece que devia estar logo após o teste do caso de ser aluno. A propósito, se a unidade for diferente de dias, a pessoa não paga multa?


Responder

Gostei + 0

17/05/2005

Mahdak

sim claro, a pessoa paga multa sim, mas só coloquei essa unidade aqui em questao, por que o codigo varia pouco de unidade para unidade, sendo o formato dele praticamente o mesmo. testarei o codigo e qualquer coisa entro em contato. Por enquanto muito obrigado.
Abraços


Responder

Gostei + 0

17/05/2005

Mahdak

oi, nao deu nao... :( a unica parte do código que nao funciona eh a que diz respeito ao professor... simplismente o sistema nao calcula, nao manda mensagem, ou seja, nao faz nada... eu ja to apavorado aqui, pq tenho que entregar esse sistema em 15 dias....

Parte que nao funciona:


else begin 
    if Combo_Tipo.Text = ´PROFESSOR´ then begin
      if d1 > d2 then 
        ShowMessage(´emprestimo para Professor com multa:´ + FloatToStr(multa)) 
      else 
        ShowMessage(´emprestimo para Professor sem multa:´ + FloatToStr(multa)) 
    end; 
  end; 
end;



Responder

Gostei + 0

17/05/2005

Mahdak

agora sim... era só tinha que descer um end la pro final do bloco e remover outro no fial do aluno...
Abraços a todos e valleu!
segue o codigo certo abaixo:
-------------------------------------------

procedure TEmprestimo.Btn_BaixarClick(Sender: TObject); 
var 
  d1, d2: TDateTime; 
  vdDATA, multa: extended; 
  Cod1, Cod2, viMINUTOS, viHORAS: Integer; 
begin 
  if Combo_TipoConsulta.Text <> ´´ then begin 
    Dm.Tbl_TipoConsulta.Close; 
    Dm.Tbl_TipoConsulta.SelectSQL.Clear; 
    Dm.Tbl_TipoConsulta.SelectSQL.Add(´select * from TIPO_CONSULTA Where TIPO = ´´´ + Trim(Combo_TipoConsulta.Text) + ´´´´);
    Dm.Tbl_TipoConsulta.Open; 
  end; 

  Edit_DataBaixa.Text := FormatDateTime(´dd/mm/yyyy´, Date); 
  vdDATA := DaysBetween(Date, StrToDateTime(Edit_DATAEMPR.Text)); 

  if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Dia(s)´ then begin 
    multa := ((((vdDATA / StrToFloat(DM.Tbl_TipoConsultaTEMPO.AsString) - 1)) * StrToFloat(DM.Tbl_TipoConsultaMULTA.AsString)));
    d1 := StrToDate(Edit_DataBaixa.Text); 
    d2 := StrToDate(Edit_DataDev.Text); 

    if Combo_Tipo.Text = ´ALUNO´ then begin 
      if d1 > d2 then 
        ShowMessage(´emprestimo para aluno com multa:´ + FloatToStr(multa)) 
      else 
        ShowMessage(´emprestimo para aluno sem multa:´ + FloatToStr(multa)); 
    end

  else begin
    if Combo_Tipo.Text = ´PROFESSOR´ then begin
      if d1 > d2 then 
        ShowMessage(´emprestimo para Professor com multa:´ + FloatToStr(multa)) 
      else 
        ShowMessage(´emprestimo para Professor sem multa:´ + FloatToStr(multa)) 
    end; 
  end; 
 end;
end;



Responder

Gostei + 0

17/05/2005

Rjun

Amigo, acho q essa lógica esta errada. Repare que ele só vai entrar no IF para professor se a unidade for diferente de ´Dia(s)´.


Responder

Gostei + 0

17/05/2005

Massuda

...Repare que ele só vai entrar no IF para professor se a unidade for diferente de ´Dia(s)´.
Não... agora está certo. Você está sendo ´tapeado´ pela (má) formatação do código.


Responder

Gostei + 0

17/05/2005

Mahdak

ok, vou implementar as unidades restantes aqui e verificar meu erro, qualquer coisa entro em contato. Agradeço o toque :wink:
Abração!
Juliano


Responder

Gostei + 0

17/05/2005

Rjun

[quote:a081e4003f=´Rjun´]...Repare que ele só vai entrar no IF para professor se a unidade for diferente de ´Dia(s)´.
Não... agora está certo. Você está sendo ´tapeado´ pela (má) formatação do código.[/quote:a081e4003f]


Massuda, você esta absolutamente certo. Esse monte de IF me confundiu mesmo.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar