robinhocne Postado Setembro 5, 2007 Denunciar Share Postado Setembro 5, 2007 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/07Como eu faço sobre essa questão. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 8, 2007 Denunciar Share Postado Setembro 8, 2007 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Setembro 8, 2007 Autor Denunciar Share Postado Setembro 8, 2007 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; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 9, 2007 Denunciar Share Postado Setembro 9, 2007 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Setembro 10, 2007 Autor Denunciar Share Postado Setembro 10, 2007 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 10, 2007 Denunciar Share Postado Setembro 10, 2007 (editado) 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.============================================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 Setembro 10, 2007 por Micheus Incluídos os questionamentos ao final. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Setembro 10, 2007 Autor Denunciar Share Postado Setembro 10, 2007 Fiz da seguinte maneira:http://www.4shared.com/file/23969805/8909d...l?cau2=403tNull Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 11, 2007 Denunciar Share Postado Setembro 11, 2007 Fiz da seguinte maneira:http://www.4shared.com/file/23969805/8909d...l?cau2=403tNullrobinhocne, 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. ;) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Setembro 11, 2007 Autor Denunciar Share Postado Setembro 11, 2007 Ok, fico aguardando resposta Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 13, 2007 Denunciar Share Postado Setembro 13, 2007 Isto vai longe... Vamos tentar começar. ;) SELECT * FROM PraticasWHERE Data BETWEEN :dt1 and :dt2sobre 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Setembro 13, 2007 Autor Denunciar Share Postado Setembro 13, 2007 Isto vai longe... Vamos tentar começar. ;) SELECT * FROM PraticasWHERE Data BETWEEN :dt1 and :dt2sobre 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 paulobergo Postado Setembro 13, 2007 Denunciar Share Postado Setembro 13, 2007 Esta queryselect 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Setembro 13, 2007 Autor Denunciar Share Postado Setembro 13, 2007 Cara não entendi. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 13, 2007 Denunciar Share Postado Setembro 13, 2007 Isto vai longe... Vamos tentar começar. ;) SELECT * FROM PraticasWHERE Data BETWEEN :dt1 and :dt2sobre 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 rrrrrpaulobergo, 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) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Setembro 13, 2007 Autor Denunciar Share Postado Setembro 13, 2007 (editado) 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 veiculoData 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 Setembro 13, 2007 por robinhocne Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 paulobergo Postado Setembro 14, 2007 Denunciar Share Postado Setembro 14, 2007 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: programacaodatahoraalunoinstrutorveiculoSe 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: alunoscodigo, nome, status, etc...000001, harry000002, hermione000003, rony000004, dracoinstrutorcodigo, nome000008, dumbledore000009, sprout000010, snapecategoriacodigo, nome000010, vassoura000202, po de flu001938, lareira000849, chave de portalc) 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Setembro 14, 2007 Autor Denunciar Share Postado Setembro 14, 2007 (editado) 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: programacaodatahoraalunoinstrutorveiculoSe 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: alunoscodigo, nome, status, etc...000001, harry000002, hermione000003, rony000004, dracoinstrutorcodigo, nome000008, dumbledore000009, sprout000010, snapecategoriacodigo, nome000010, vassoura000202, po de flu001938, lareira000849, chave de portalc) 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 Setembro 14, 2007 por robinhocne Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Abril 29, 2008 Autor Denunciar Share Postado Abril 29, 2008 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
robinhocne
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:
Ele aparece assim: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
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.