Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lella

função para verificar condições

Recommended Posts

Olá a todos, olha eu aqui de novo com problemas de lógica ...rs

Tenho um banco de dados com 3 tabelas:

 

PACIENTES - com dados do paciente

SITUACOES - com os campos tipo e estado entre outros

EXAMES - com os campos tipo e exame entre outros

 

na pagina 01.asp faço uma busca de todos os pacientes internados e após a escolha do paciente direciono para a pagina 02.asp

 

onde volto a buscar todos os dados do paciente na tabela PACIENTES e onde devo verificar algumas condições, como:

 

a condição do paciente na tabela SITUACOES, se seu estado de saúde é estável ou instável e se o seu estado emocional é estável ou instável.

ex>:

tipo(saude) - estado(estável)

tipo(psicologico) - estado(estável)

 

verifico tambem as condições na tabela de EXAMES e verificar se os campos tipo e exame estão ok.

ex>:

tipo(sangue) - exame(ok)

tipo(raio-x) - exame(ok)

tipo(ultrasom) - exame(ok)

 

Se tudo estiver positivo nas duas tabelas o paciente recebe alta, senão continua internado.

 

será que vocês poderiam me ajudar?

obrigada!

 

segue as duas paginas abaixo:

 

pagina 01.asp

<%@LANGUAGE="VBSCRIPT" codepage="65001"%>

<!--#include file="conn/conectdbpostgre.asp"-->

<%

SQL = "SELECT * FROM pacientes;"

set seleciona = db.execute(SQL)

 

 

if not seleciona.eof then

on error resume next

seleciona.movefirst %>

 

 

<html>

<body>

<form name="Pacientes" action="02.asp" method="post">

<select name="SelPac" class="cxcampo">

<option value="---">Selecione um paciente</option>

<% do while not seleciona.eof %>

<option value="<%=seleciona("id_pac")%>"><%=seleciona("id_pac") %> - <%=seleciona("nome") %></option>

<%seleciona.movenext

loop%>

</select>

<input type="Submit" name="Enviar" value="Verificar paciente" class="tipobutton">

</form>

</body>

</html>

 

<%else

seleciona.close

Response.redirect "nopaciente.asp"

end if

Response.end%>

<!--#include file="conn/closedbpostgre.asp"-->

 

 

 

 

pagina 02.asp

<%@LANGUAGE="VBSCRIPT" codepage="65001"%>

<!--#include file="conn/conectdbpostgre.asp"-->

<%

paciente=request.form("SelPac")

 

SQLPAC="SELECT * FROM pacientes WHERE id_pac='"& paciente &"';"

set buscapaciente = db.execute(SQLFUNC)

 

'//aqui tenho duas gravações por paciente uma para tipo emocional e outra tipo saude

'//e preciso verificar se as duas são estavel

SQLSIT="SELECT * FROM situacoes WHERE cod_pac='"& paciente &"' AND estado ='estavél';"

set buscasituacao = db.execute(SQLTREIN)

 

'//aqui tenho 3 ou mais gravações para cada paciente dependendo dos exames que necessita

'//e preciso verificar todas se estão ok, caso um único exame não esteja o paciente não recebe alta

SQLEXAM="SELECT * FROM exames WHERE cod_pac='"& paciente &"'AND exame ='ok';"

set buscaexame = db.execute(SQLEXAM)

 

'//aqui eu havia feito algo do tipo (abaixo), mas não funcionou

 

if not buscasituacao.eof and not buscaexame.eof then

on error resume next

buscasituacao.movefirst

buscaexame.movefirst

'//monta a guia de alta

else

'//não emite a guia de alta e mostra os dados do paciente e como estão seus estados e seus exames

end if

%>

<!--#include file="conn/closedbpostgre.asp"-->

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi direito sua duvida, mas na primeira query sql, você poderia criar um while, e construir a segunda query sql dentro desse while.

Note que na segunda query sql, ao colocar AND exame ='ok' , se não tiver resultados com essa condição, ele não retornará resultados.

Como deseja em caso negativo, exibir o que falta, o ideal seria comparar os campos com os valores, por exemplo:

if buscaexame("exame1") = "ok" and buscaexame("exame2")= "ok" and ....  then
response.write "paciente com alta"
else
response.write buscaexame("exame1")
response.write buscaexame("exame2")
...
end if

 

Acho que é mais ou menos isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

não esqueça ,você precisa ter uma relacionamento entre as tabelas, na verdade, a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi direito sua duvida, mas na primeira query sql, você poderia criar um while, e construir a segunda query sql dentro desse while.

Note que na segunda query sql, ao colocar AND exame ='ok' , se não tiver resultados com essa condição, ele não retornará resultados.

Como deseja em caso negativo, exibir o que falta, o ideal seria comparar os campos com os valores, por exemplo:

if buscaexame("exame1") = "ok" and buscaexame("exame2")= "ok" and ....  then
response.write "paciente com alta"
else
response.write buscaexame("exame1")
response.write buscaexame("exame2")
...
end if

 

Acho que é mais ou menos isso

 

o que quero é:

 

looping para verificar os dois estados do paciente

se o estado de saude = estavel

e psicologico = estavel

 

 

looping para verificar os exames

se exame1 = ok

e exame2 = ok

e exame3 = ok

gerar guia de alta

senão

exibir os dados e condiçoes do paciente

 

não esqueça ,você precisa ter uma relacionamento entre as tabelas, na verdade, a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo

 

Oi xanb

os relacionamentos estão ok

 

PACIENTES 1---8 SITUACOES

 

PACIENTES 1---8 EXAMES

 

ps. 8 = infinito(muitos)

Compartilhar este post


Link para o post
Compartilhar em outros sites

e você colocando direto na string SQL com o operador AND

Compartilhar este post


Link para o post
Compartilhar em outros sites

e você colocando direto na string SQL com o operador AND

 

ok tenho a tabela de SITUACOES:

 

SITUACOES

cod_pac ---||---- estado ----||---- tipo

104020 -----||---- estavel ----||---- saude

104020 -----||---- estavel ----||---- psico

151523 -----||---- estavel ----||---- saude

151523 -----||---- instavel ---||---- psico

 

.......

 

Se fizer assim ele pega as duas linhas???

 

paciente=request.form("SelPac")

SQLSIT="SELECT * FROM situacoes WHERE cod_pac='"& paciente &"' AND tipo='saude' AND estado ='estavél' AND tipo='psico' AND estado ='estavél';"

 

Inicialmente eu havia pensado em fazer um select normal e usar um looping para verificar todas as linhas que correspondesse ao mesmo paciente e fazer algum tipo de verificação do valor retornado, mas não consegui..

ooo xanburzum dá uma luz para uma velha amiga, esqueceu que sou loira? rs... :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

ela vai retornar todos os registros que satisfazem os critérios do operador AND

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando montamos uma query sql, dizemos algo do tipo:

selecione todos os campos da tabela, onde campo1 seja igual a pães e campo2 seja igual a doces

assim temos:

select * from table where campo1="pães" AND campo2="doces"

o resultado será aqueles que satisfazem as 2 condições somente, pães e doces, tem que ter os dois no mesmo registro.

Se colocassemos um ou (OR) so resultado seriam os registros que satisfazem uma das duas condições, podendo apresentar no resultado registros que tem as 2 condições em seus campos.

 

No seu caso, acho que o melhor seria:

 

SQLPAC="SELECT * FROM pacientes WHERE id_pac='"& paciente &"';"
set buscapaciente = db.execute(SQLFUNC)

while not buscapaciente.eof then

SQLSIT="SELECT * FROM situacoes WHERE cod_pac='"& paciente &"' AND estado ='estavél';"
set buscasituacao = db.execute(SQLTREIN)

while not buscasituacao.eof then

SQLEXAM="SELECT * FROM exames WHERE cod_pac='"& paciente &"'AND exame ='ok';"
set buscaexame = db.execute(SQLEXAM)

response.write guia de alta

...
...

 

Fiz esse exemplo rapidinho, só para dar uma ideia do que pode ser feito, baseado no seu primeiro post, mas não acho bom.

 

Eu faria o primeiro select para pegar o paciente, o segundo sql, pegava tudo referente ao paciente (exame e estado) abria um loop e ia comparando, se estado=estavel, vai pra proxima, se exame=ok, e assim vai, por exemplo:

if estado="estavel" then
  if exame1="ok" then
  if exame2="ok" then
...
end if
end if
response.write "paciente com alta"
else
response.write exame1
....

 

Mais ou menos assim

Compartilhar este post


Link para o post
Compartilhar em outros sites

na tabela pacientes tem algum id que está tendo referência à tabela exames?

 

Sim as referencias são:
PACIENTES      EXAMES        SITUACOES    --tabelas--
id_pac         cod_pac       cod_pac      --campos--
151523         151523        151523       --registros--

Compartilhar este post


Link para o post
Compartilhar em outros sites

como esta atualmente sua string SQL ?

dá um response.write na SQL para ver o que esta sendo passado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um loop com o recordset 1, dentro dele faz um segundo loop passando poor todos os exames onde id = rs1("id"), e verifica se todos estão ok.

 

Era +- o que eu havia pensado inicialmente, só que eu não consegui na pratica

 

tem algum exemplo que eu possa adaptar para meu código?

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz primeiro o loop dos exames:

 

SQLEXAM="SELECT * FROM exames WHERE cod_pac='"& paciente &"';"
set buscaexame = db.execute(SQLEXAM)
if not buscaexame.eof then
on error resume next
	buscaexame.movefirst

	do while not buscaexame.eof 
	   resultado = buscaexame.fields("exame").value & "<BR>"
	   resultado = resultado + resultado		
	   response.Write(resultado)		
	  buscaexame.movenext	
               loop

 

consegui ver todos os exames, os que estão Ok e os que não estão

e agora?

como faço para verificar cada resultado que retorna e caso todos sejam ok monto a guia

caso algum nao esteja ok eu nao monto. :angry:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.