Relatorio com 4 tabelas
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
Posts
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.
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
18/01/2006
Edilcimar
19/01/2006
Tchucky
19/01/2006
Tchucky
tabelas
Urina campo U_data
Fezes campo F_data
Hemograma campo H_data
Sangue campo S_data
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!
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
19/01/2006
Tchucky
select ´urina´, count(*) as total from urina where u_data between :EdData1 and :F_DATA union
ele é referente a q
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!
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:
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
19/01/2006
Tchucky
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.
Clique aqui para fazer login e interagir na Comunidade :)