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
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
Clique aqui para fazer login e interagir na Comunidade :)