GARANTIR DESCONTO

Fórum Query baseada no conceito de REFERÊNCIA CRUZADA... #49574

25/02/2005

0

Amigos, bom dia. Estou a dias tentando construir uma query seguindo os seguintes parâmetros:

Estou trabalhando com FB 1.5.

Tenho uma tabela de DADOS DO FUNC. com a seguinte estrutura: FUN_COD, FUN_NOM, FUN_DTN com registros:
FUN_COD FUN_NOM FUN_DTN
1) 213 Nome_1 01/01/1976
2) 213 Nome_1 01/01/1976
3) 205 Nome_2 10/11/1966
etc...
99) 365 Nome_5 10/11/1966
100) 366 Nome_6 10/11/1966
etc...

Tenho uma outra tabela de DADOS DA VACINA POR FUNC. com a seguinte estrutura: FUN_COD, VAC_COD, DOS_REF_COD, FUN_VAC_DAP com registros:
FUN_COD VAC_COD DOS_REF_COD FUN_VAC_DAP
213 1 1 10/10/2000
213 1 2 10/11/2000
213 1 3 20/11/2000
213 3 2 05/08/2001
206 1 1 10/11/1966
etc...

Observem:
O campo VAC_COD corresponde o código da(s) vacina(s), o campo DOS_REF_COD corresponde as DOSEs e/ou Reforços aplicados e o campo FUN_VAC_DAP a data de aplicação daquela vacina.

Tenho que montar uma query que me mostre exatamente as vacinas de cada funcionário dispostos da seguinte forma:
Nome: Nome_1 - 213 Data de Nascimento: 01/01/1976

VACINAS 1ª_DOSE 2ª_DOSE 3ª_DOSE 1º_REFORÇO...
1 10/10/2000 10/11/2000 20/11/2000
2 10/10/2000 10/10/2000

E ASSIM POR DIANTE...

Obrigado a todos.


Jhb213

Jhb213

Responder

Posts

25/02/2005

Afarias

Eu daria preferência a montar isso no cliente (visto q o FB não tem suporte a referência cruzada). Fazer um pequeno código é tranquilo para montar um grid assim.

Entretanto, se as colunas são fixas (VACINA, 1ª, 2ª e 3ª DOSE, 1º, 2º e 3º REFORÇO apenas --- por exemplo) vc pode sim construir um stored procedure para obter este resultado.


T+


Responder

Gostei + 0

25/02/2005

Jhb213

Caro amigo afarias,

Você poderia mostra um exemplo de como seria este código e como eu poderia imprimi-lo via Crystal Reports 8.5?

Abraço!


Responder

Gostei + 0

25/02/2005

Gandalf.nho

Veja esse tópico: [url]http://forum.clubedelphi.net/viewtopic.php?t=57867[/url]


Responder

Gostei + 0

25/02/2005

Jhb213

Já tinha visualizado este tópico, mas não consigo criar a query neste layout menciosado. Aguardo dicas e exemplos...Obrigado!


Responder

Gostei + 0

25/02/2005

Afarias

mais um exemplo:

create procedure matriz_vacinas(fcod varchar(5))
  returns (vacina integer, dose1 date, dose2 date, dose3 date,
               ref1 date, ref2 date, ref3 date) 
as
  declare variable temp integer;
  declare variable dose integer;
  declare variable data date;
begin

  vacina = null;
  for select vac_cod, dos_ref_cod, fun_vac_dap from vacinas
       where fun_cod = :fcod
       order by vac_cod, dos_ref_cod
       into :temp, :dose, :data do
  begin

    if (vacina is not null and vacina <> temp) then
      suspend;
    vacina = temp;

    if (dose = 1) then
      dose1=data;
    if (dose = 2) then
      dose2=data;
    if (dose = 3) then
      dose3=data;
    /* etc */

  end
  
  if (vacina is not null) then
    suspend;

end^



Responder

Gostei + 0

28/02/2005

Jhb213

Tentei e ainda não consegui gerar a query baseada no layout mencionado, com o objetivo maior de criar o relatório de cartão de vacinação por funcionário. Peço que envie dicas e/ou exemplos. Obrigado a todos!


Responder

Gostei + 0

28/02/2005

Afarias

:? o exemplo q postei não serviu? Algum erro?


T+


Responder

Gostei + 0

01/03/2005

Jhb213

Caro amigo afarias na verdade não testei o seu exemplo que com certeza funcionará, mas o meu problema maior é como farei para imprimir o CARTÃO DE VACINAÇÃO seguindo o layout passado. Estou usando Crystal Reports 8.5. Agradeço e aguardo dicas e/ou exemplos.


Responder

Gostei + 0

01/03/2005

Afarias

Bom, se vc quer um exemplo sobre como usar o Crystal Reports está no fórum errado. Se vc notar o exemplo q passei, ele lista exatamente o ´cartão de vacinação´ de uma pessoa q vc deseja.

Qual a dificuldade?


T+


Responder

Gostei + 0

01/03/2005

Jhb213

Como vc pode notar no layout fornecido as colunas não são fixas (VACINA, 1ª, 2ª e 3ª DOSE, 1º, 2º e 3º REFORÇO etc) e sim registros acumulados na tabela: FUN_VAC, campo(s): VAC_COD, DOS_REF_COD. Como seria para montar este layout utilizando código ou mesmo um outro procedimento.

Agradeço! Um abraço.


Responder

Gostei + 0

01/03/2005

Afarias

:? :?: :?:

apenas faça uma query:

select * from matriz_vacinas(´codigo_pessoa´);


e ... ai está o q vc deseja!! :roll:

T+


Responder

Gostei + 0

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

Aceitar