Ir para conteúdo

POWERED BY:

Arquivado

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

brunofreixo

ASP duplica registros com chaves primárias diferentes...

Recommended Posts

O problema é o seguinte: eu tenho no access um "tabelão" contendo entre outras colunas, as colunas NOME, PRONTUARIO e PROCEDIMENTO.

 

Os dados NOME e PRONTUÁRIO são validados do FORM (se os dados existirem, abre-se a tela desejada para consulta do usuário).

 

Porém quando existe, por exemplo, um usuário com o nome "João" e o prontuário "123456" mas com procedimentos diferentes, tipo:

 

NOME PRONTUÁRIO PROCEDIMENTO

João 123456 Traqueostomia

João 123456 Tireoidectomia Parcial

João 123456 Laringectomia Parcial

 

Ao invés de exibir da forma anterior (conforme está no banco), a aplicação exibe assim:

 

NOME PRONTUÁRIO PROCEDIMENTO

João 123456 Traqueostomia

João 123456 Traqueostomia

João 123456 Traqueostomia

 

------------------------------------------------------------------------------------------------------------

 

Isto é, a aplicação ASP está duplicando o 1º registro com a quantidade de registros existentes.

Não sei o que há de errado com o código...

 

Alguém pode ajudar?

 

------------------------------------------------------------------------------------------------------------

 

O código:

 

<%
' RESGATANDO PARÂMETROS DO FORMULÁRIO
prontuario = Request.Form("prontuario")
nome = Request.Form("nome")


' VALIDAÇÃO DOS DADOS DO FORM
if (prontuario = "") then
response.write("<script>alert('O campo PRONTUÁRIO deve ser preenchido!'); history.go(-1)</script>")
response.end
end if

if (nome = "") then
response.write("<script>alert('Digite o seu PRIMEIRO NOME!'); history.go(-1)</script>")
response.end
end if


' CONEXÃO AO BANCO DE DADOS - UM RECORDSET PARA CADA TABELA
Set objConn = Server.CreateObject("ADODB.Connection")
Set objRs = Server.CreateObject("ADODB.Recordset")
Set objRsSaida = Server.CreateObject("ADODB.Recordset")
objConn.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("..\Clinicas_Filas.mdb")


' EXECUTANDO A QUERY NAS TABELAS DE ENTRADA E SAÍDA
strSQL = "SELECT * FROM tmdb WHERE Nome LIKE '%" & nome & "%' AND Prontuario = " & prontuario & " "
Set objRs = objConn.Execute(strSQL)
' EXECUTANDO A QUERY NA TABELA DE SAÍDA
strSQLSaida = "SELECT * FROM mdbsaida WHERE Nome LIKE '%" & nome & "%' AND prontuario = " & prontuario & " "
Set objRsSaida = objConn.Execute(strSQLSaida)


' PEGA SOMENTE O PRIMEIRO NOME NA TABELA DE ENTRADA
nomeBusca = objRs("Nome")
teste = InStr(nomeBusca," ")
contador = teste - 1
caracter = len(nome)
' PEGA SOMENTE O PRIMEIRO NOME NA TABELA DE SAÍDA
nomeBuscaSaida = objRsSaida("Nome")
testeSaida = InStr(nomeBuscaSaida," ")
contadorSaida = testeSaida - 1


' VALIDAÇÃO DOS DADOS DO BANCO
if (objRs.EOF) or (caracter <> contador) then
if (not objRsSaida.EOF) and (caracter = contadorSaida) then
%><!--#include file="conteudoSaida.asp"--><%
else
response.Write("<script>alert('Paciente/Prontuário inexistente!'); history.go(-1)</script>")
end if
else
%><!--#include file="conteudoEntrada.asp"--><%
end if


' GARBAGE COLLECTION
Set objRs = Nothing
Set objRsSaida = Nothing
objConn.Close
Set objConn = Nothing
%>

 

------------------------------------------------------------------------------------------------------------

 

Código do arquivo "conteudoSaida.asp":

 

<%
' CRIAÇÃO DOS OBJETOS
codigo = objRsSaida("Codigo")
prontuario = objRsSaida("prontuario")
nomeBusca = objRsSaida("Nome")
motivoSaida = objRsSaida("MotivoSaida")
dataSaidaFila = objRsSaida("DtsaidaFila")
procedimento = objRsSaida("Procedimento")
descClinica = objRsSaida("Desc_clinica")
ramal = objRsSaida("ramal")
telPaciente = objRsSaida("telpaciente")


' FUNÇÃO PARA FORMATAR DATA NO PADRÃO BRASILEIRO
Function FormataData(dataSaidaFila)
If dataSaidaFila <> "" Then
FormataData = Right("0" & DatePart("d", dataSaidaFila),2) & "/" & Right("0" & DatePart("m", dataSaidaFila),2) & "/" & DatePart("yyyy", dataSaidaFila)
End If
End Function
%>

<div class="apresentacao">
<label>PACIENTE: </label>
<strong><% response.Write(nomeBusca) %></strong><br />

<label>PRONTUÁRIO: </label>
<strong><% response.Write(prontuario) %></strong><br />

<label>TELEFONE: </label>
<strong><% response.Write(telPaciente) %></strong><br />

<center>
<label>DATA DA ÚLTIMA ATUALIZAÇÃO: </label>
<strong><% response.Write("11/10/2013") %></strong><br />

<label>TELEFONE GERAL DO H.F.S.E.: </label>
<strong><% response.Write("(21) 2291-3131") %></strong><br />
</center>
</div>

<div class="tabela">
<table>
<tr class="titulo-tabela">
<td>PROCEDIMENTO REALIZADO</td>
<td>CLÍNICA / RAMAL</td>
<td>DATA DE SAÍDA DA FILA</td>
<td>MOTIVO DE SAÍDA DA FILA</td>
</tr>

<%
while not objRsSaida.EOF
Response.Write("<tr>")
Response.write "<td>" & Procedimento & "</td>"
Response.write "<td>" & descClinica & " / " & ramal & "</td>"
Response.write "<td>" & FormataData(dataSaidaFila) & "</td>"
Response.write "<td>" & motivoSaida & "</td>"
Response.Write("</tr>")

objRsSaida.moveNext
wend
%>
</table>
</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não encontrei no seu código o trecho que escreve o que postou no inicio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Mário Monteiro,

desculpe colocar o código inteiro...

 

Esta é a parte do código que apresenta os dados do banco:

 

<%
while not objRsSaida.EOF
Response.Write("<tr>")
Response.write "<td>" & Procedimento & "</td>"
Response.write "<td>" & descClinica & " / " & ramal & "</td>"
Response.write "<td>" & FormataData(dataSaidaFila) & "</td>"
Response.write "<td>" & motivoSaida & "</td>"
Response.Write("</tr>")

objRsSaida.moveNext
wend
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce está imprimindo dentro laço valores que foram definidos fora

 

por isso está repetindo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado Mário Monteiro.

Problema resolvido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parabéns e bom trabalho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, igualmente.

Abcs!

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.