Impressão!!!

02/10/2003

0

Caros colegas,

O meu problema é complexo. Os registro q quero que apareçam na QRBand pertencem a uma tabela, e ao mesmo campo. Tanto entrada como saída são registrados no mesmo campo da tabela. O problema é que preciso mostrar nuam QRBand, 2 QRDBText, e em cada um deles o mesmo campo, só que um é entrada e o outro é saída. Se eu colocar num único SELECT eles aparecem iguais, por isso precisei colocar duas Query, para que cada uma me mostre resultados distintos do mesmo campo. ( Entrada e Saída). Quando eu coloco na propriedade ´DataSet´ da QRBand (SubDatail) uma Query, ela me mostra tuco ok, conforme meu select,mas a outra mostra o primeiro registro e o repete. Enfim, meu problema não é SQL e sim conseguir que numa mesma QRBand (SubDetail) apareça os registro dessa tabela e que em cada QRDBText linkado num mesmo campo me mostre dados distintos.

exemplo das consultas:

with Q2 do
begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM a2003, funcionario, horarios´);
SQL.Add(´WHERE funcionario.id =:Pid´);
SQL.Add(´and funcionario.horario = horarios.id´);
SQL.Add(´and a2003.cracha = funcionario.cracha´);
SQL.Add(´and extract(month from data) =:pdata´);
SQL.Add(´and a2003.horario <= horarios.h_entrada´);
SQL.Add(´group by a2003.data, a2003.horario´);
SQL.Add(´order by a2003.data,a2003.horario´);
ParamByName(´Pid´).Value := StrToInt(txtCampo.Text);
ParamByName(´Pdata´).AsInteger := StrToInt(txtMes.KeyValue);
Open;
end;

with Q3 do
begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM a2003, funcionario, horarios´);
SQL.Add(´WHERE funcionario.id =:Pid´);
SQL.Add(´and funcionario.horario = horarios.id´);
SQL.Add(´and a2003.cracha = funcionario.cracha´);
SQL.Add(´and extract(month from data) =:pdata´);
SQL.Add(´and a2003.horario >= horarios.h_saida´);
SQL.Add(´group by a2003.data, a2003.horario´);
SQL.Add(´order by a2003.data,a2003.horario´);
ParamByName(´Pid´).Value := StrToInt(txtCampo.Text);
ParamByName(´Pdata´).AsInteger := StrToInt(txtMes.KeyValue);
Open;
end;

Voltar ao Topo


Aroldo Zanela



Registrado em: Quinta-Feira, 20 de Fevereiro de 2003
Mensagens: 1667
Localização: Brasília - DF
Enviada: Ter Set 30, 2003 10:14 am Assunto:

--------------------------------------------------------------------------------

Colega,

Coloca a estrutura da tabela para que possamos entender melhor o problema. A princípio, me parece que poderemos resolver utilizando o Union All para ter as duas consultas na mesma query, pois o QR só pode rolar o cursor de banco em uma delas. Por meio dos manipuladores de evento ´OnPrint´ faremos os ajustes de impressão.

Aguardamos a estrutura.
_________________
Atenciosamente,

[]´s
Aroldo Zanela (Moderador)

´Parece que é difícil, mas não é fácil não...´


Voltar ao Topo


Joey



Registrado em: Quinta-Feira, 10 de Abril de 2003
Mensagens: 11

Enviada: Ter Set 30, 2003 12:49 pm Assunto:

--------------------------------------------------------------------------------

Caro Aroldo,

Obrigado por se interessar no meu problema, vou tentar descrever a estrutura das tabelas o melhor possível...
Essas são as algumas tabelas desse banco, são as necessarias p/ esse relatório. Vale ressaltar que, não fui eu quem criou esse banco, apenas estou continuando o projeto. Não posso refazer o banco, pois, somando todos os registros das tabelas ultrapassam os 30.000 registros.


Na tabela ´funcionario´ o campo horario faz referencia ao campo id da tabela horarios.

A tabela ´horarios´ contem registros dos horarios dos turnos.
ex: 7:30 às 13:30
8:00 às 12:00

Na tabela ´a2003´ são salvos os regsitros de ponto, quero dizer que, quando o funcionario passa o cartão na máquina ela grava o dia e a hora.
são gravados no mesmo registro, depois quando ele vai sair passa novamente e daí dependendo do horario q ele passar e do seu horario de turno (horario de trabalho) é que preciso q ele separe p/ mim no relatório.

Ahhhh!!!! O banco que uso é MySQL...


Desde já gradeço!!!!!!!


FUNCIONARIO

ID INT PRIMARY KEY
NOME VARCHAR(60)
CRACHA VARCHAR(20)
HORARIO INT
...


HORARIOS

ID INT PRIMARY KEY
H_ENTRADA TIME
H_SAIDA TIME


A2003

ID INT PRYMARY KEY
CRACHA VARCHAR(20)
DATA DATE
HORARIO TIME


Joey

Joey

Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar