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

Relatório com filtro por período


robinhocne

Pergunta

Olá pessoal, sobre a questão de cima ainda não consegui resolver, mas estou com outro problema mais urgente,

Pois tenho um relátorio que tenho que fazer a busca do Instrutor até aki Ok.

Outro é a busca da Data Inicial até a data Final Ex.: do dia 02/09/07 até 08/09/07.

Bom, faço a busca da data incial e final, mas no relátorio em vez de aparecer a data, 02/09/07, 03/09/07, 04/09/07 ..... 04/09/07:

Ex.:

Em Véz de aparecer assim:

Domingo   Segunda      Terça       Quarta      Quinta        Sexta      Sábado
03/09/07  04/09/07    05/09/07    06/09/07     07/09/07     08/09/07     09/09/07
Ele aparece assim:
Domingo   Segunda      Terça       Quarta      Quinta        Sexta      Sábado
02/09/07   02/09/07   02/09/07   02/09/07   02/09/07   02/09/07   02/09/07

Como eu faço sobre essa questão.

Link para o comentário
Compartilhar em outros sites

17 respostass a esta questão

Posts Recomendados

  • 0

Micheus esses são dos dados que eu uso para as buscas.

procedure TfrmLisRelPraSemanais.spbexiClick(Sender: TObject);
begin
  With DtmIza.qryIza do
     Begin
       Close;
       Sql.Clear;
       Sql.Add('SELECT * FROM Praticas');
       Sql.Add('where (Data >= :d1) and (Data <= :d2)');
       ParambyName('d1').value  := FormatDateTime ('dd/mm/yyyy' , StrToDate (TxtDtIni.Text));
       ParambyName('d2').value  := FormatDateTime ('dd/mm/yyyy' , StrToDate (TxtDtfin.Text));
       Open;
     End;
  With TFrmPraticaSemanal.Create(Application) do
     Try
       QuickRep1.Preview;
     Finally
       Free;
  End;
end;

Link para o comentário
Compartilhar em outros sites

  • 0

robinhocne, ficamos na mesma <_<

Veja o que eu postei antes:

robinhocne, pelo resultado parece que seu dataset não está sendo movido.

Se você está utilizando quickreport, você por acaso não esqueceu de ligar sua consulta a propriedade DataSet do seu QuickRep?

A questão é: lá na propriedade DataSet do seu componentes Quickrep1, localizado no seu form FrmPraticaSemanal, você selecionou a query qryIza proveniente do datamodule DtmIza?

Link para o comentário
Compartilhar em outros sites

  • 0
Entendi, o que você quiz dizer sim Micheus, eles estão ligados ao datasets sim, mas eu passei a consulta para você verificar se esta correta. pois acho que é ai que esta dando problema.
Ok.

Bom, está meio estranho, mas vamos ver se chegamos a algum lugar.

A instrução SQL aparentemente não teria algum problema. Mas eu lhe sugeriria alterar esta parte:

de: Sql.Add('where (Data >= :dt1) and (Data <= :dt2)');

para: Sql.Add('where Data between :dt1 and :dt2');

(* onde tem dt1 e dt2, ignore o "t" - coloquei porque senão aparece esta carinha -> :D)

e de:

ParambyName('d1').value := FormatDateTime ('dd/mm/yyyy' , StrToDate (TxtDtIni.Text));

ParambyName('d2').value := FormatDateTime ('dd/mm/yyyy' , StrToDate (TxtDtfin.Text));

para:

ParambyName('d1').AsDateTime := StrToDate (TxtDtIni.Text);

ParambyName('d2').AsDateTime := StrToDate (TxtDtfin.Text);

A quetão de datas em queries é sempre problemática, porque há diferenças entre os vários bancos de dados. Por isso vivo dizendo que a melhor opção é utilizar a parametrização. Você até está utilizando este método, mas não da forma como "prego".

Voce está convertendo a data digitada (string) para o tipo TDate e em seguida convertendo novamente para uma String formatada "dd/mm/yyyy", passando para o parâmetro através de Value (variant). Seria equivalente a dizer que você quer substituir os parâmetros pelo texto formatado - e isto não é o desejável. Por ex., observe que no MySQL você deveria passar a data do tipo string com o formato yyyy-mm-yy, do contrário não funciona.

O lance é utilizar parâmetros e passá-los no tipo que eles realmente são, no seu caso Date ou DateTime.

Se o problema for fruto do que expliquei aqui, então agora deverá estar resolvido seu problema. Verifique.

============================================

relatrio0001kg0.th.jpg

robinhocne, visualizando o lay-out do relatório, vem então algumas perguntas:

- Como você definiu a estrutura de bandas do seu relatório?

- Você está utilizando a propriedade Colunms?

- Você está controlando a impressão na mão?

Editado por Micheus
Incluídos os questionamentos ao final.
Link para o comentário
Compartilhar em outros sites

  • 0
robinhocne, observe que na banda detalhe, que normalmente corresponde a uma linha de registro do resultado de sua consulta, você terá que apresentar na verdade mais que uma já que você quer apreseentar vários dias.

Resumindo, você quer apresentar uma matriz, enquanto o usual (normal) é um vetor.

Tem como fazer no quick, mas estou meio sem tempo para detalhar isto hoje. Se ninguém se habilitar, então tem que esperar um pouquinho. ;)

Link para o comentário
Compartilhar em outros sites

  • 0

Isto vai longe... Vamos tentar começar. ;)

SELECT *

FROM Praticas

WHERE Data BETWEEN :dt1 and :dt2

sobre esta consulta.

Para tentar exemplificar o relatório, é preciso saber:

- em que campos estão armazenados os dados referentes a Data e Hora, que campo será colocado na intercessão de ambos (lá onde tem os quadrinhos com 1)?

- o relatório terá a seqüência de horas fixa, tipo 08:00, 09:00, 10:00, 11:00, 12:00, 14:00; ou apenas nas horas que tiverem registros?

- haverão vários registros para mesma data e hora, ou será apenas 1?

Link para o comentário
Compartilhar em outros sites

  • 0
Isto vai longe... Vamos tentar começar. ;)

SELECT *

FROM Praticas

WHERE Data BETWEEN :dt1 and :dt2

sobre esta consulta.

Para tentar exemplificar o relatório, é preciso saber:

- em que campos estão armazenados os dados referentes a Data e Hora, que campo será colocado na intercessão de ambos (lá onde tem os quadrinhos com 1)?

- o relatório terá a seqüência de horas fixa, tipo 08:00, 09:00, 10:00, 11:00, 12:00, 14:00; ou apenas nas horas que tiverem registros?

- haverão vários registros para mesma data e hora, ou será apenas 1?

- Estão nos Campos da Tabela de Praticas.

- Sim Ter que ser de horas fixa.

- Será Apenas Um registro.

Link para o comentário
Compartilhar em outros sites

  • 0

Esta query

select total, data, if(weekday(data)=0,'dom',
                    if(weekday(data)=1,'seg',
                    if(weekday(data)=2,'ter',
                    if(weekday(data)=3,'qua',
                    if(weekday(data)=4,'qui',
                    if(weekday(data)=5,'sex','sab')))))) diasem
from
  (select sum(nfvalor) total, nfdata data
   from `acme`.`faturamento`
   where nfdata between "2007/07/01" and "2007/07/07"
   group by nfdata
  ) as consulta1
Como 1º de julho foi domingo e a loja não abriu, teremos: total data diasem 4833,10 2007/07/02 seg 1915,60 2007/07/03 ter 4355,20 2007/07/04 qua 3942,40 2007/07/05 qui 3325,60 2007/07/06 sex 9130,53 2007/07/07 sab Só que eu não quero isso em linhas, quero em colunas certo? Então, se no quickreport eu colocar {total} {total} {total} {total} {total} {total} {total} Vou obter 4833,12 4833,12 4833,12 4833,12 4833,12 4833,12 4833,12 1915,60 1915,60 1915,60 1915,60 1915,60 1915,60 1915,60 4355,20 4355,20 4355,20 4355,20 4355,20 4355,20 4355,20 etc... certo? E' esse o problema? Bom, eu hoje procuro resolver tudo ao nível do próprio MySQL... então, em troca de ficar usando os recursos no programa (no Delphi, php, etc...), prefiro por o MySQL para trabalhar para mim... Assim, criei a query que me dá o faturamento semanal em uma só linha... A mesma query lá do começo ficaria assim (passaria ser uma query com várias subquerie):
select nfdata, nfdata_1, total_1,
               nfdata_2, total_2,
               nfdata_3, total_3,
               nfdata_4, total_4,
               nfdata_5, total_5,
               nfdata_6, total_6,
               nfdata_7, total_7
from
  (select nfdata
   from faturamento
   where nfdata between "2007/07/01" and "2007/07/06"
   limit 1
  ) as consultabase
left outer join
  (select sum(nfvalo) total_1, nfdata nfdata_1
   from faturamento
   where nfdata = "2007/07/01"
   group by nfdata_1
  ) as dia1
on ("2007/07/01"=dia1.nfdata_1)
left outer join
  (select sum(nfvalo) total_2, nfdata nfdata_2
   from faturamento
   where nfdata = "2007/07/02"
   group by nfdata_2
  ) as dia2
on ("2007/07/02"=dia2.nfdata_2)
left outer join
  (select sum(nfvalo) total_3, nfdata nfdata_3
   from faturamento
   where nfdata = "2007/07/03"
   group by nfdata_3
  ) as dia3
on ("2007/07/03"=dia3.nfdata_3)
left outer join
  (select sum(nfvalo) total_4, nfdata nfdata_4
   from faturamento
   where nfdata = "2007/07/04"
   group by nfdata_4
  ) as dia4
on ("2007/07/04"=dia4.nfdata_4)
left outer join
  (select sum(nfvalo) total_5, nfdata nfdata_5
   from faturamento
   where nfdata = "2007/07/05"
   group by nfdata_5
  ) as dia5
on ("2007/07/05"=dia5.nfdata_5)
left outer join
  (select sum(nfvalo) total_6, nfdata nfdata_6
   from faturamento
   where nfdata = "2007/07/06"
   group by nfdata_6
  ) as dia6
on ("2007/07/06"=dia6.nfdata_6)
left outer join
  (select sum(nfvalo) total_7, nfdata nfdata_7
   from faturamento
   where nfdata = "2007/07/07"
   group by nfdata_7
  ) as dia7
on ("2007/07/07"=dia7.nfdata_7)

(Acima está em uma versão "simplificada", executada diretamente no SQL Explorer);

Então, se colocar no quickreport:

{nfdata_1} {nfdata_2}...{nfdata_7}

{total_1} {total_2}...{total_7}

Você terá os dados corretamente impressos...

Ok?

Espero ter ajudado!

Link para o comentário
Compartilhar em outros sites

  • 0
Isto vai longe... Vamos tentar começar. ;)
SELECT *

FROM Praticas

WHERE Data BETWEEN :dt1 and :dt2

sobre esta consulta.

Para tentar exemplificar o relatório, é preciso saber:

- em que campos estão armazenados os dados referentes a Data e Hora, que campo será colocado na intercessão de ambos (lá onde tem os quadrinhos com 1)?

- o relatório terá a seqüência de horas fixa, tipo 08:00, 09:00, 10:00, 11:00, 12:00, 14:00; ou apenas nas horas que tiverem registros?

- haverão vários registros para mesma data e hora, ou será apenas 1?

- Estão nos Campos da Tabela de Praticas.

- Sim Ter que ser de horas fixa.

- Será Apenas Um registro.

roginhocne, observe que eu perguntei o nome dos campos - "em que campos estão" não "onde os campos estão". (eu lá vou saber o que você tem dentro da tabela Práticas <_<)

Cara não entendi.
Eu entendi e até poderia ser uma opção, mas não resolve todos os problemas, se você tiver que gerar uma linha de hora em hora.

Vai funcionar bem para o caso de listar apenas as horas que estiverem "ocupadas". Qual sua necessidade?

08:00  xxxx
09:00  sssss
10:00 <nada aqui>
11:00  rrrrr
ou
08:00  xxxx
09:00  sssss
11:00  rrrrr

paulobergo, acho que esta opção pressupõe uma situação em que hajam poucas consultas deste tipo, já que, dependendo do número de informações, vai fazer o banco trabalhar muito (servidor). Este exemplo pode ser bem aplicado no caso do VLDR (já fiz uma referência no post dele)

Link para o comentário
Compartilhar em outros sites

  • 0

Dados da tabelas Praticas:

Aluno > busca o codigo do aluno na tabela de alunos

Instrutor > busca o codigo do instrutor na tabela de intrutores

Categoria > busca o codigo de veiculo na tabela de veiculo

Data

Horario

Status > 1 para desbloqueado 0 para bloqueado

É Micheus e eu gostaria assim:

08:00  000001 = codigo do aluno
09:00  000003 = codigo do aluno
10:00  ****** = horário bloqueado
11:00  000002 = codigo do aluno

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

  • 0

Olá Robinhocne!

Quanto ao início do tópico, o que parecia ser mesmo o problema é a falta de entendimento da relação de uma query com o formulário (a página) do QuickReport, ou seja, o problema das tags na página que não acompanham o "movimento" do dataset...

Como parece que houve uma "mudança de rumo", coloque algumas linhas com dados das suas tabelas...

E parece que o que você precisa é, simplesmente, "uma lista dos horários programados, bloqueados ou disponíveis para aulas em uma autoescola, em um determinado dia, e que esta lista contenha o nome do aluno e do instrutor programado para um dado horário ou uma marcação indicando que o horário está livre ou, ainda, uma marcação para um horário que esteja bloqueado"... seria isso?

a) Voce precisa de uma tabela com a programação diaria... ela deve conter, por exemplo:

Tabela: programacao

data

hora

aluno

instrutor

veiculo

Se planeja criar quadros com a programação (no estilo de tabelas do Word ou Planilhas do Excel), é importantíssimo que, a cada data gravada, sejam preenchidos todos os horários...

Então, se vou incluir a aula de um aluno no dia 22 de setembro próximo às 10:00, devo preencher os demais horários também, mesmo que os demais campos fiquem com o conteúdo nulo.

B) Demais tabelas com seus dados:

Tabela: alunos

codigo, nome, status, etc...

000001, harry

000002, hermione

000003, rony

000004, draco

instrutor

codigo, nome

000008, dumbledore

000009, sprout

000010, snape

categoria

codigo, nome

000010, vassoura

000202, po de flu

001938, lareira

000849, chave de portal

c) Programação preenchida em duas datas:

idprogramacao, data, hora, aluno, instrutor, veiculo
0,2007/09/12,07:00:00,000001, 000008, 000010
0,2007/09/12,08:00:00,null,null,null
0,2007/09/12,09:00:00,null,null,null
0,2007/09/12,10:00:00,000003, 000010, 000010
0,2007/09/12,11:00:00,000002, 000009, 001938
0,2007/09/12,12:00:00,000004, 000008, 000849
[code]
d) O resultado que você precisa se parece com isso?
+----------+----------+----------+
| Hora     |12/09/2007|13/09/2007|
+----------+----------+----------+
|07:00:00  |harry     |
|          |dumbledore|
|          |vassoura  |
+----------+----------+
|08:00:00  |          |
|          |          |
|          |          |
+----------+----------+
|09:00:00  |          |
|          |          |
|          |          |
+----------+----------+
|10:00:00  |rony      |
|          |snape     |
|          |vassoura  |
+----------+----------+
|11:00..
|

Olá Micheus...

Bom... todo o poder e glória para o sql...

Não há perda de desempenho como se possa suspeitar numa query cheia de subqueries como aquela... pelo contrário... há muito ganho de performance...

A query usada para totalizar e mostrar as vendas na semana usa tabelas com muitos registros e é mais complexa do que no exemplo... para você ter uma idéia, essa query, executada pelo MySQL5 em um PentiumIII 700 com 256mb, sob o XP, retornando o resultado em uma página do IEx (a aplicação com a query é executada pelo IIS), e a tabela tendo uns 400mil registros (dados desde 1996), retorna o resultado em dez segundos...

Antigamente, quando o mesmo procedimento era feito pelo Clipper, e, depois, no Delphi, com o programa tendo o trabalho de "filtrar" os dados, e com um banco de dados ainda menor, o tempo era muito maior e o processador ficava muito mais ocupado...

Se o que o colega robinhocne precisa é um "quadro de horários", ainda prefiro gerar tudo no sql (neste caso, criaria uma tabela temporária para "armazenar" o resultado de cada linha que vai ser manipulada no QuickReport)...

Ok?

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0
Olá Robinhocne!

Quanto ao início do tópico, o que parecia ser mesmo o problema é a falta de entendimento da relação de uma query com o formulário (a página) do QuickReport, ou seja, o problema das tags na página que não acompanham o "movimento" do dataset...

Como parece que houve uma "mudança de rumo", coloque algumas linhas com dados das suas tabelas...

E parece que o que você precisa é, simplesmente, "uma lista dos horários programados, bloqueados ou disponíveis para aulas em uma autoescola, em um determinado dia, e que esta lista contenha o nome do aluno e do instrutor programado para um dado horário ou uma marcação indicando que o horário está livre ou, ainda, uma marcação para um horário que esteja bloqueado"... seria isso?

a) Voce precisa de uma tabela com a programação diaria... ela deve conter, por exemplo:

Tabela: programacao

data

hora

aluno

instrutor

veiculo

Se planeja criar quadros com a programação (no estilo de tabelas do Word ou Planilhas do Excel), é importantíssimo que, a cada data gravada, sejam preenchidos todos os horários...

Então, se vou incluir a aula de um aluno no dia 22 de setembro próximo às 10:00, devo preencher os demais horários também, mesmo que os demais campos fiquem com o conteúdo nulo.

B) Demais tabelas com seus dados:

Tabela: alunos

codigo, nome, status, etc...

000001, harry

000002, hermione

000003, rony

000004, draco

instrutor

codigo, nome

000008, dumbledore

000009, sprout

000010, snape

categoria

codigo, nome

000010, vassoura

000202, po de flu

001938, lareira

000849, chave de portal

c) Programação preenchida em duas datas:

idprogramacao, data, hora, aluno, instrutor, veiculo
0,2007/09/12,07:00:00,000001, 000008, 000010
0,2007/09/12,08:00:00,null,null,null
0,2007/09/12,09:00:00,null,null,null
0,2007/09/12,10:00:00,000003, 000010, 000010
0,2007/09/12,11:00:00,000002, 000009, 001938
0,2007/09/12,12:00:00,000004, 000008, 000849
[code]
d) O resultado que você precisa se parece com isso?
+----------+----------+----------+
| Hora     |12/09/2007|13/09/2007|
+----------+----------+----------+
|07:00:00  |harry     |
|          |dumbledore|
|          |vassoura  |
+----------+----------+
|08:00:00  |          |
|          |          |
|          |          |
+----------+----------+
|09:00:00  |          |
|          |          |
|          |          |
+----------+----------+
|10:00:00  |rony      |
|          |snape     |
|          |vassoura  |
+----------+----------+
|11:00..
|
Olá Micheus... Bom... todo o poder e glória para o sql... Não há perda de desempenho como se possa suspeitar numa query cheia de subqueries como aquela... pelo contrário... há muito ganho de performance... A query usada para totalizar e mostrar as vendas na semana usa tabelas com muitos registros e é mais complexa do que no exemplo... para você ter uma idéia, essa query, executada pelo MySQL5 em um PentiumIII 700 com 256mb, sob o XP, retornando o resultado em uma página do IEx (a aplicação com a query é executada pelo IIS), e a tabela tendo uns 400mil registros (dados desde 1996), retorna o resultado em dez segundos... Antigamente, quando o mesmo procedimento era feito pelo Clipper, e, depois, no Delphi, com o programa tendo o trabalho de "filtrar" os dados, e com um banco de dados ainda menor, o tempo era muito maior e o processador ficava muito mais ocupado... Se o que o colega robinhocne precisa é um "quadro de horários", ainda prefiro gerar tudo no sql (neste caso, criaria uma tabela temporária para "armazenar" o resultado de cada linha que vai ser manipulada no QuickReport)... Ok? Abraços!
Obrigado PauloBergo, mas não é isso que eu quero para o meu projeto e para os olhos do usuarios, pois sendo um usuário que entende bem do assunto de cfc(Centro de Formação de Condutores) 'Auto Escola', no caso pois seria comodo para o usuário preencher os demais campos a não serem marcado aulas a tabela é assim: http://www.4shared.com/file/24235769/f0ef8...l?cau2=403tNull Dê uma olhada e analizada nessa imagem, ela é a tabela de marcação de aulas praticas. O Relátorio tem que aparecer os seguintes dados:
[b]Cabeçalho[/b]

Intrutor : 1  Robinho

           Domingo   Segunda    Terça     Quarta    Quinta     Sexta     Sábado    
Horário   09/09/07   10/09/07  11/09/07  12/09/07  13/09/07   14/09/07  15/09/07
08:00      ******     000001    000001   000001     ******     000001    000001
09:00      ******     000001    000001   000001     ******     000001    000001
10:00      ******                                   ******               000003
11:00      ******                                   ******
12:00      ******                                   ******
13:00      ******     ******    ******   ******     ******    ******     ******
14:00      ******     000002    000002   000002     000002    000002     ******
15:00      ******     000003    000003   000003               000003     ******
16:00      ******                                                        ******
17:00      ******                                                        ******
18:00      ******                                                        ******
18:50      ******                                                        ******
19:40      ******                                                        ******
20:30      ******                                                        ******
21:20      ******     ******    ******   ******     ******    ******     ******

No caso seria desse tipo que eu quero, os campos em branco ficarão assim mesmo do jeito que está na tabela

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

  • 0

Bom, vamos concluir esse tópico que ficou em aberto, pesquisando e aprendendo um pouco eu com ajuda de amigos e da faculdade onde estou aprendendo e melhorando mais os conhecimentos, para mostrar esse relatorio, foi feito seguinte, foi todo montado em tempo de execução e também fiz a consulta para verificar se o aluno esta marcado a cada horario, mas tem um pequeno detalhe que não sei fazer, mas deixe eu mostrar o codigo primeiro:

procedure TfrmLisRelPraSemanais.spbexiClick(Sender: TObject);
var
   data, hora, aluno :TQRLabel;
   i, a, b, c:integer;
   SomaData : Integer;
begin

   // Coluna das Datas
   for i:=1 to 7 do
      begin
        data                   := TQRLabel.Create(nil);
        data.Name              := 'nome'+inttostr(i);
        data.Left              := -40+(i*135);
        data.top               := 50;
        data.Frame.DrawTop     := true;
        data.Frame.DrawBottom  := true;
        data.Frame.DrawLeft    := true;
        data.Frame.DrawRight   := true;
        data.Transparent       := true;
        data.Width             := 130;
        data.Font.Size         := 12;
        data.Height            := 21;
        data.Font.Name         := 'Arial';
        data.Font.Style        := [fsBold];
        data.AutoSize          := false;
        data.Caption           := DateToStr(DataInicial.Date-1 + i);
        data.Alignment         := TaCenter;
        data.Parent            := QrSemanal.QRBand1;
      end;
 // coluna de horarios
   for a:=1 to 15  do
      begin
        hora                   := TQRLabel.Create(nil);
        hora.Name              := 'nome'+inttostr(a);
        hora.Left              := 15;
        Hora.Height            := 23;
        hora.Frame.DrawTop     := true;
        hora.Frame.DrawBottom  := true;
        hora.Frame.DrawLeft    := true;
        hora.Frame.DrawRight   := true;
        hora.Transparent       := true;
        hora.AutoSize          := false;
        hora.Width             := 75;
        hora.Font.Size         := 11;
        hora.Font.Name         := 'Arial';
        hora.Font.Style        := [fsBold];
        hora.Caption           := inttostr(7+a)+':00';
        hora.Alignment         := TaCenter;
        hora.top               := 50+(a*25);
        hora.Parent            := QrSemanal.QRBand1;

      end;

   for b:=1 to 15  do // total de aluno um em baixo do outro
     for c := 1 to 7 do // total de coluna de aluno
        begin
          aluno                   := TQRLabel.Create(nil);
          aluno.Name              := 'nome'+inttostr(b);
          aluno.Left              := -40+(c*135);
          aluno.top               := 50+(b*25);
          aluno.Frame.DrawTop     := true;
          aluno.Frame.DrawBottom  := true;
          aluno.Frame.DrawLeft    := true;
          aluno.Frame.DrawRight   := true;
          aluno.Transparent       := true;
          aluno.AutoSize          := false;
          aluno.Width             := 130;
          aluno.Font.Size         := 12;
          aluno.Font.Name         := 'Courier New';
         // aluno.Font.Style        := [fsBold];
          aluno.Parent            := QrSemanal.QRBand1;

       with DtmIza.qryiza do
          begin
            close;
            sql.clear;
            sql.add ('Select p.aluno, p.horario, p.data, a.nome, a.codigo from praticas p, alunos a');
            Sql.Add ('where p.aluno = a.codigo and p.horario = :PHora and p.data = :PDATA and p.instrutor = :PINSTRUTOR AND');
            ParamByName('PHORA').asstring := inttostr(b+7)+':00';
            ParamByName('PDATA').asdatetime := DataInicial.Date-1 + c;
            ParamByName('PINSTRUTOR').AsInteger := StrToInt (TxtInst.Text);
            open;
          end;
      If  not DtmIza.qryiza.IsEmpty then
          begin
             aluno.Caption:= DtmIza.qryiza.FieldByName('codigo').asstring;
          end
          else
          begin
             aluno.Caption := '';
          end;
  end;

    QrSemanal.Preview;
    close;
 end;

então na consulta ele verifique se tem aluno mostra o codigo no qrlabel e se não tiver mostra em branco....

.....Mas tem um pequena condição, quando eu marco a aulas eu preencho o campo estatus com 1 que são aulas marcadas, e quando é o bloqueado ele preenche com o status 0 e ai eu queria que os campos de aulas que estiver com o status 0 me mostrasse assim no meu relatorio (********), mostrasse os asteristicos indicando que são horarios bloqueados.

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...