Fórum Relatorio com 4 tabelas #309674
18/01/2006
0
as tabelas são essas abaixo: e elas vão m dar o total d exames por periodo
no caso da data tal a data tal foi feito tantos exames
Urtina...: 20 exames total mes
Fezes ...: 25 exames total mes
Hemograma: 10 exames total mes
Sangue..: 4 exames total mes
ela vai m dar esse valor no relatorio...
ja estou a 3 dias rodando foruns e foruns para m ajudar e nada ainda.. :cry:
Tchucky
Curtir tópico
+ 0Posts
18/01/2006
Xtreme
E outra a estruturas dessas tabelas sao iguais ou extremamente diferentes, pois caso os campos a serem listados no teu relatorio forem iguais vc pode atraves do sql fazer um union nas mesmas trazendo somente os campos que precisa.
Gostei + 0
18/01/2006
Xtreme
select ´urina´, count(*) from urina where data between :dtinicial and :dtfinal union select ´fezes´, count(*) from fezes where data between :dtinicial and :dtfinal union select ´hemog´, count(*) from hemograma where data between :dtinicial and :dtfinal union select ´sangu´, count(*) from sangue where data between :dtinicial and :dtfinal
Gostei + 0
18/01/2006
Edilcimar
Gostei + 0
19/01/2006
Tchucky
Gostei + 0
19/01/2006
Xtreme
Gostei + 0
19/01/2006
Tchucky
Gostei + 0
19/01/2006
Tchucky
tabelas
Urina campo U_data
Fezes campo F_data
Hemograma campo H_data
Sangue campo S_data
Gostei + 0
19/01/2006
Xtreme
select ´urina´, count(*) as total from urina where u_data between :dtinicial and :dtfinal union select ´fezes´, count(*) as total from fezes where f_data between :dtinicial and :dtfinal union select ´hemog´, count(*) as total from hemograma where h_data between :dtinicial and :dtfinal union select ´sangu´, count(*) as total from sangue where s_data between :dtinicial and :dtfinal
entao vc pode puxar os campos e montar seu relatorio no qreport!
Gostei + 0
19/01/2006
Tchucky
ai q estou com duvidas qual data colocar
With DM1.ConExames Do
Begin
Close;
SQL.Clear;
SQL.Add( ´select ´urina´, count(*) as total from urina where u_data between :EdData1 and :F_DATA union
SQL.Add( ´ select sum(HEM_CODHEMOGRAMA) as HEMOGRAMA from HEMOGRAMA where (HEM_DATA >= EdData1 and HEM_DATA <= EdData2)´);
SQL.Add( ´ select sum(UR_CODURINA) as URINA from URINA where (UR_DATA >= EdData1 and UR_DATA <= EdData2)´);
SQL.Add( ´ select sum(S_CODIGO) as SANGUE from SANGUE where (S_DATA >= EdData1 and S_DATA <= EdData2)´);
aqui em baixo esta minha duvidas quanto as Params
SQL.Add( ´ And xxx informar a data >= :P00 ´ );
SQL.Add( ´ And xxx informar a data <= :P01 ´ );
Params[00].AsDate := strtodate(EdData1.Text);
Params[01].AsDate := strtodate(EdData2.Text);
Open;
eu estou usando a IBQuery
Gostei + 0
19/01/2006
Tchucky
select ´urina´, count(*) as total from urina where u_data between :EdData1 and :F_DATA union
ele é referente a q
Gostei + 0
19/01/2006
Xtreme
ibquery.close;
ibquery.sql.clear;
ibquery.sql.text:=´select ´+quotedstr(´urina´)+´, count(*) as total from urina where u_data between :d1 and :d2 ´+
´ union ´+
´ select ´+quotedstr(´fezes´)+´, count(*) as total from fezes where f_data between :d1 and :d2 ´+
´ union ´+
´ select ´+quotedstr(´hemog´)+´, count(*) as total from hemograma where h_data between :d1 and :d2 ´+
´ union ´+
´ select ´+quotedstr(´sangu´)+´, count(*) as total from sangue where s_data between :d1 and :d2 ´;
ibquery.parambyname(´d1´).asdatetime:=DATAINICIAL;
ibquery.parambyname(´d2´).asdatetime:=DATAFINAL;
ibquery.open;
Onde DATAINICIAL e DATAFINAL correspondem ao periodo desejado
e a questao do ´as total´ é como se fosse um apelido para a coluna que é formada com a quantidade de registros encontrada.
Obs: Se vc ainda continuar com duvida me manda a estrutura em sql de suas tabelas que eu faço um programinha exemplo pra ti!
Gostei + 0
19/01/2006
Tchucky
ibquery.parambyname(´d1´).asdatetime:=DATAINICIAL;
ibquery.parambyname(´d2´).asdatetime:=DATAFINAL;
o d1 e o d2 é referente ao maskedit q uso e o DATAINICIAL e DATAFINAL é refrente aque
pow o eu estou cada dia mais burro ou uam coisa esta acontecendo comigo :shock:
Gostei + 0
19/01/2006
Tchucky
With IBQuery1 Do
Begin
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Text :=´select ´+quotedstr(´urina´)+´, count(*) as total from urina where UR_DATA between :D1 and :D2 ´+
´ union ´+
´ select ´+quotedstr(´fezes´)+´, count(*) as total from fezes where F_DATA between :D1 and :D2 ´+
´ union ´+
´ select ´+quotedstr(´hemograma´)+´, count(*) as total from hemograma where HEM_DATA between :D1 and :D2 ´+
´ union ´+
´ select ´+quotedstr(´sangue´)+´, count(*) as total from sangue where S_DATA between :D1 and :D2 ´;
IBQuery1.ParamByName(´D1´).asdatetime:= StrTodate(EdData1.Text);
IBQuery1.ParamByName(´D2´).asdatetime:= StrTodate(EdData2.Text);
IBQuery1.Open;
mas eu ainda num entendi como vai somar os campos no relatorio eu tenho q um QRDBText para quais campos :( isso m tirando do serio mexer com sql ta dificil
Gostei + 0
19/01/2006
Tchucky
Gostei + 0
19/01/2006
Aerreira
Não pude deixar de observar o tópico, pois lido com isso no meu dia-a-dia há muitos anos e, infelizmente, há erros estruturais sérios em suas tabelas, pois um laboratório não é feito apenas de exames ´urina´, ´fezes´, ´hemograma´ e ´sangue´. Laboratórios de análises clínicas trabalham com uma infinidade de exames e amostras diversas, o que tornaria o resultado desse seu relatório algo incompleto se comparado à rotina do laboratório. Existem tabelas individuais para cada tipo de exame? Se sim... meu Deus, isso não está correto. Fale mais sobre este sistema, talvez eu possa ajudar.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)