Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Código Não Funciona Completo


Eder

Pergunta

Ola, Pessoal

Bom Dia!!

Eu montei este código:

procedure TFormGrafAbaste.EncartaButton1Click(Sender: TObject);
Var Txt:String;
begin
    If DateTimePicker2.Date < DateTimePicker1.Date Then
    begin
      ShowMessage('Intervalo de datas Inválido, a data Inicial é maior que a data Final!');
      DateTimePicker2.Date := DateTimePicker1.Date;
    exit;
    end;
    If Combobox1.Text = '' Then
    Begin
    Showmessage('Selecione a Marca do Veículo.');
    Combobox1.SetFocus;
    Exit;
    End;
    //
    If Combobox2.Text = '' Then
    Begin
    Showmessage('Selecione a Filial do Veículo.');
    Combobox2.SetFocus;
    Exit;
    End;
    //
Txt:='SELECT sum(Abaste.KmPer) as Total1, Sum(Abaste.Litros) as Total2, '+
'Sum(Abaste.ValorFinal) as Total3, Vei.Placa, Vei.Marca, Vei.Veiculo, Vei.Unidade, Vei.Tipo '+
'FROM ABASTE, VEI '+
'WHERE (ABASTE.DATA >= :DATAI) and (ABASTE.DATA <= :DATAF) AND '+
'Abaste.CodVei = Vei.CodVei '+
'and Vei.Marca = '+ QuotedStr(ComboBox1.text) +
'and Vei.Unidade = '+ QuotedStr(ComboBox2.text) +
'Group By Vei.Placa, Vei.Marca, Vei.Veiculo, Vei.Unidade, Vei.Tipo '+
'Order By Vei.Placa';
     //
Query1.Close;
Query1.SQL.Text := Txt;
Query1.ParamByName('datai').AsDate := DateTimePicker1.Date;
Query1.ParamByName('dataf').AsDate := DateTimePicker2.Date;
Query1.Open;
//
  If Query1.IsEmpty Then
   begin
    ShowMessage('Nenhum Registro Encontrado!');
    exit;
    Abort;
   end;
//
frReport1.ShowReport;
end;
Nesta parte abaixo: no caso quando não tiver registro deveria vir a mensagem "Nenhum Registro Encontrado".
If Query1.IsEmpty Then
   begin
    ShowMessage('Nenhum Registro Encontrado!');
    exit;
    Abort;
   end;

Mas sempre aparece o relatorio....a mensagem não aparece...abortanto a operação.

Notei que no relatorio tem um contador no Sumary....e este contador diz que é = 1.

O porque que a mensagem não aparece, e o contador conta 1?

Neste caso acima...qual seria a solução pra aparecer a mensagem????(porque na verdade não existe registro de lançamento pra determinada placa).

Grato

Editado por Micheus
Substituida tag QUOTE por CODE
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Ola..Churc

Tente trocar por

If Query1.RecordCount = 0 Then

e não precisa do Abort, somente o Exit

Carinha também não da certo, pois como mencionei no post, sempre o relatorio processa o count = 1, mesmo não relacionando dados.

:(

grato

t+

Editado por Eder
Link para o comentário
Compartilhar em outros sites

  • 0
Carinha também não da certo, pois como mencionei no post, sempre o relatorio processa o count = 1, mesmo não relacionando dados.
Eder, acredite se quiser, mas o Paradox usando o group by vai retornar uma linha de resultado com todos os campos nulos. :blink:

Vai entender...

Sabendo disto, e que deverá haver uma placa válida, você pode testar se o campo placa está nulo ou não.

Também há meios de eliminar todos os Exit, basta estruturar o código utilizando if...then...else, veja sugestão:

procedure TFormGrafAbaste.EncartaButton1Click(Sender: TObject);
begin
  If DateTimePicker2.Date < DateTimePicker1.Date Then
  begin
    ShowMessage('Intervalo de datas Inválido, a data Inicial é maior que a data Final!');
    DateTimePicker2.Date := DateTimePicker1.Date;
  end else
    If Combobox1.Text = '' Then
    Begin
      Showmessage('Selecione a Marca do Veículo.');
      Combobox1.SetFocus;
    End else
      If Combobox2.Text = '' Then
      Begin
        Showmessage('Selecione a Filial do Veículo.');
        Combobox2.SetFocus;
      End else
      begin
        Query1.Close;
        Query1.SQL.Text := 'SELECT sum(Abaste.KmPer) as Total1, Sum(Abaste.Litros) as Total2, '+
          'Sum(Abaste.ValorFinal) as Total3, Vei.Placa, Vei.Marca, Vei.Veiculo, Vei.Unidade, Vei.Tipo '+
          'FROM ABASTE, VEI '+
          'WHERE (ABASTE.DATA >= :DATAI) and (ABASTE.DATA <= :DATAF) AND '+
          'Abaste.CodVei = Vei.CodVei '+
          'and Vei.Marca = '+ QuotedStr(ComboBox1.text) +
          'and Vei.Unidade = '+ QuotedStr(ComboBox2.text) +
          'Group By Vei.Placa, Vei.Marca, Vei.Veiculo, Vei.Unidade, Vei.Tipo '+
          'Order By Vei.Placa';

        Query1.ParamByName('datai').AsDate := DateTimePicker1.Date;
        Query1.ParamByName('dataf').AsDate := DateTimePicker2.Date;
        Query1.Open;

        if Query1.FieldByName('Placa').IsNull then  // se a placa estiver nula, é sinal que não há resultado
          ShowMessage('Nenhum Registro Encontrado!')
        else
          frReport1.ShowReport;
      end;
end;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...