Query baseada no conceito de REFERÊNCIA CRUZADA...
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.
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
Curtidas 0
Respostas
Afarias
25/02/2005
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+
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+
GOSTEI 0
Jhb213
25/02/2005
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!
Você poderia mostra um exemplo de como seria este código e como eu poderia imprimi-lo via Crystal Reports 8.5?
Abraço!
GOSTEI 0
Gandalf.nho
25/02/2005
Veja esse tópico: [url]http://forum.clubedelphi.net/viewtopic.php?t=57867[/url]
GOSTEI 0
Jhb213
25/02/2005
Já tinha visualizado este tópico, mas não consigo criar a query neste layout menciosado. Aguardo dicas e exemplos...Obrigado!
GOSTEI 0
Afarias
25/02/2005
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^
GOSTEI 0
Jhb213
25/02/2005
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!
GOSTEI 0
Afarias
25/02/2005
:? o exemplo q postei não serviu? Algum erro?
T+
T+
GOSTEI 0
Jhb213
25/02/2005
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.
GOSTEI 0
Afarias
25/02/2005
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+
Qual a dificuldade?
T+
GOSTEI 0
Jhb213
25/02/2005
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.
Agradeço! Um abraço.
GOSTEI 0
Afarias
25/02/2005
:? :?: :?:
apenas faça uma query:
select * from matriz_vacinas(´codigo_pessoa´);
e ... ai está o q vc deseja!! :roll:
T+
apenas faça uma query:
select * from matriz_vacinas(´codigo_pessoa´);
e ... ai está o q vc deseja!! :roll:
T+
GOSTEI 0