Fórum Impressão... Ajudem-me!!!!! #185546
01/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
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
Curtir tópico
+ 0
Responder
Posts
01/10/2003
Marconi
Caro amigo
Já trabalhei com programas de relógio de ponto, onde havia várias equipes com horários de trabalhos completamente diferentes, inclusive turnos de revesamento
Eu acho que o segredo é acrescentar um campo para registrar se é entrada ou saída. E este registro é feito atraves de uma tabela que classifica a equipe ao qual aquele registro do funcionário pertence, verifica o horário e pode então decidir se a leitura deve ser uma entrada ou saída.
Aí a classificação por este campo fica muito mais fácil.
Não vou dar exemplos pois não trabalho com MySQL, nem com QuickReport.
Marconi
Já trabalhei com programas de relógio de ponto, onde havia várias equipes com horários de trabalhos completamente diferentes, inclusive turnos de revesamento
Eu acho que o segredo é acrescentar um campo para registrar se é entrada ou saída. E este registro é feito atraves de uma tabela que classifica a equipe ao qual aquele registro do funcionário pertence, verifica o horário e pode então decidir se a leitura deve ser uma entrada ou saída.
Aí a classificação por este campo fica muito mais fácil.
Não vou dar exemplos pois não trabalho com MySQL, nem com QuickReport.
Marconi
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)