Ir para conteúdo

POWERED BY:

Arquivado

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

rd111072

[Resolvido] Consulta com opção "todos"

Recommended Posts

Então é o seguinte: O relatório, quando é só de um médico, tá normal. Assim:

nome endereço finalizadas canceladas marcadas
João   Rua x	  5		8		 9
Agora, quando quero exibir Todos ao mesmo tempo, não dá erro, mas exibe só um médico e as "finalizadas canceladas marcadas" dele são a soma das "finalizadas canceladas marcadas" de todos os médicos.

 

Era pra exibir todos os médicos e cada um com seu número de "finalizadas canceladas marcadas". Assim:

nome endereço finalizadas canceladas marcadas
João	 Rua x	   5		8		  9
Maria	Rua y	   6		9		  9
Felipe	Rua z	  3		1			   2
Marcos   Rua w	   8		8		 4
Juliana   Rua t	  1		5		10

o código vocês podem ver nos posts acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que fazer um While para ler os registros de RS.

 

Dentro desse While, você manda contar.

medico = "AND nome_agenda='"&rs("agenda")&"'"

sql2 = "select Count(tab_usuario_cod_usuario) as conta from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'SIM' "
set rs2 = conexaoDB.execute(sql2)

sql3 = "select Count(tab_usuario_cod_usuario) as conta2 from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'NÃO' "
set rs3 = conexaoDB.execute(sql3)

sql4 = "select Count(tab_usuario_cod_usuario) as conta3 from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'CANCELADO' "
set rs4 = conexaoDB.execute(sql4)
Se tiver alguma dúvida para inserir isso, poste o código da página atualmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Modifiquei o código pra esse:

 

<%
	cod_usuario = session("cod_usuario")
	medico = Request.Form("nome_medico")
	data1 = Request.Form("data_inicio")
	data2 = Request.Form("data_fim")
	data1 = data1&" 00:00"
	data2 = data2&" 23:59"
	
If (len(medico) > 1) Then
	medico = "AND nome_agenda='"&medico&"'"
Else
	medico = ""
End If


sql = "set dateformat dmy select * from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' order by data_agenda ASC"
'Response.Write SQL
'Response.End
set rs = conexaoDB.execute(sql)


Session("sql") = ""
Session("sql") = sql

medico = "AND nome_agenda='"&rs("nome_agenda")&"'"

sql2 = "select Count(tab_usuario_cod_usuario) as conta from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'SIM' "
set rs2 = conexaoDB.execute(sql2)

sql3 = "select Count(tab_usuario_cod_usuario) as conta2 from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'NÃO' "
set rs3 = conexaoDB.execute(sql3)

sql4 = "select Count(tab_usuario_cod_usuario) as conta3 from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'CANCELADO' "
set rs4 = conexaoDB.execute(sql4)

%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>ADEF-RIO</title>
		
	<style type="text/css">
<!--
body {
	background-image: url(imagens/bg_azul.gif);
	background-repeat: repeat-x;
}
-->
	</style>

	<link href="borda.css" rel="stylesheet" type="text/css" />
	<link href="fonte.css" rel="stylesheet" type="text/css" />
	<style type="text/css">
<!--
.style9 {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; }
-->
	</style>
	</head>
	
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
		<tr>
  <td width="100%"><table width="100%" border="0" cellpadding="0" class="style9">
	<tr>
	  <td width="216">Nome do Médico</td>
	  <td width="221"><div align="center">Local</div></td>
	  <td width="34">Finalizadas</td>
	  <td width="35">Marcadas</td>
	  <td width="71">Canceladas</td>
	</tr>
	<%do while not rs.eof 
		If strColor="#CCCCCC" then
			strColor="White"
		Else
		  strColor="#CCCCCC"
		End if%>
	<tr bgcolor="<%=strColor%>">
	  <td width="216" valign="top"><%if not rs.eof then
	response.write(rs("nome_agenda"))
end if%>
	  </td>
	  <td><div align="center"><font color="#4770BF"><strong>
		  <%if not rs.eof then
	response.write(rs("local_agenda"))
end if%>
	  </strong></font></div></td>
	  <td valign="top"><%if not rs2.eof then
	response.write(rs2("conta"))
end if%>
	  </td>
	  <td valign="top"><%if not rs3.eof then
	response.write(rs3("conta2"))
end if%></td>
	  <td valign="top"><%if not rs4.eof then
	response.write(rs4("conta3"))
end if%></td>
	</tr>
	<%
	rs.MoveNext
	Loop%>
	<tr>
	  <td valign="top"> </td>
	  <td valign="top"> </td>
	  <td valign="top"> </td>
	  <td valign="top"> </td>
	  <td valign="top"> </td>
	</tr>
  </table>
	</center>
	  </div>
	  </td>
		</tr>
	  </table>

<%		 
		conexaoDB.close
		set conexaoDB = nothing
%>
</body>

</html>

O relatório de um só médico tá normal, como antes. O de TODOS exibe agora todos os nomes, só que o resultado das "finalizadas marcadas canceladas" é o mesmo pra todos, ou seja toma como base o count do primeiro médico listado. Vejam:

 

Imagem Postada

 

Além do mais, repete alguns nomes.

 

Se puder me ajudar a terminar isso, fico muito grato e prometo não encher mais o saco. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

É proibido postar mensagens com intuito de envidenciar o tópico.

 

Leia às Regras para evitarmos problemas futuros.

 

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

 

Teste esse código:

 

<%
	cod_usuario = session("cod_usuario")
	medico = Request.Form("nome_medico")
	data1 = Request.Form("data_inicio")
	data2 = Request.Form("data_fim")
	data1 = data1&" 00:00"
	data2 = data2&" 23:59"
	
If (len(medico) > 1) Then
	medico = "AND nome_agenda='"&medico&"'"
Else
	medico = ""
End If


sql = "set dateformat dmy select * from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' order by data_agenda ASC"
'Response.Write SQL
'Response.End
set rs = conexaoDB.execute(sql)


Session("sql") = ""
Session("sql") = sql
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>ADEF-RIO</title>
		
	<style type="text/css">
<!--
body {
	background-image: url(imagens/bg_azul.gif);
	background-repeat: repeat-x;
}
-->
	</style>

	<link href="borda.css" rel="stylesheet" type="text/css" />
	<link href="fonte.css" rel="stylesheet" type="text/css" />
	<style type="text/css">
<!--
.style9 {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; }
-->
	</style>
	</head>
	
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
		<tr>
  <td width="100%"><table width="100%" border="0" cellpadding="0" class="style9">
	<tr>
	  <td width="216">Nome do Médico</td>
	  <td width="221"><div align="center">Local</div></td>
	  <td width="34">Finalizadas</td>
	  <td width="35">Marcadas</td>
	  <td width="71">Canceladas</td>
	</tr>
	<%do while not rs.eof
	
		medico = "AND nome_agenda='"&rs("nome_agenda")&"'"
		
		sql2 = "select Count(tab_usuario_cod_usuario) as conta from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'SIM' "
		set rs2 = conexaoDB.execute(sql2)
		
		sql3 = "select Count(tab_usuario_cod_usuario) as conta2 from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'NÃO' "
		set rs3 = conexaoDB.execute(sql3)
		
		sql4 = "select Count(tab_usuario_cod_usuario) as conta3 from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'CANCELADO' "
		set rs4 = conexaoDB.execute(sql4)

		If strColor="#CCCCCC" then
			strColor="White"
		Else
		  strColor="#CCCCCC"
		End if%>
	<tr bgcolor="<%=strColor%>">
	  <td width="216" valign="top"><%if not rs.eof then
	response.write(rs("nome_agenda"))
end if%>
	  </td>
	  <td><div align="center"><font color="#4770BF"><strong>
		  <%if not rs.eof then
	response.write(rs("local_agenda"))
end if%>
	  </strong></font></div></td>
	  <td valign="top"><%if not rs2.eof then
	response.write(rs2("conta"))
end if%>
	  </td>
	  <td valign="top"><%if not rs3.eof then
	response.write(rs3("conta2"))
end if%></td>
	  <td valign="top"><%if not rs4.eof then
	response.write(rs4("conta3"))
end if%></td>
	</tr>
	<%
	rs.MoveNext
	Loop%>
	<tr>
	  <td valign="top"> </td>
	  <td valign="top"> </td>
	  <td valign="top"> </td>
	  <td valign="top"> </td>
	  <td valign="top"> </td>
	</tr>
  </table>
	</center>
	  </div>
	  </td>
		</tr>
	  </table>

<%		
		conexaoDB.close
		set conexaoDB = nothing
%>
</body>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Hargon! Você é o cara!

Existem muitas formas de ajudar o próximo e essa foi uma.

 

Ficou assim:

<%
	cod_usuario = session("cod_usuario")
	medico = Request.Form("nome_medico")
	data1 = Request.Form("data_inicio")
	data2 = Request.Form("data_fim")
	data1 = data1&" 00:00"
	data2 = data2&" 23:59"
	
If (len(medico) > 1) Then
	medico = "AND tab_cad_medico_cod_medico='"&medico&"'"
Else
	medico = ""
End If


sql = "set dateformat dmy select DISTINCT nome_agenda, local_agenda, tab_cad_medico_cod_medico from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' ORDER by nome_agenda ASC"
'Response.Write SQL
'Response.End
set rs = conexaoDB.execute(sql)


Session("sql") = ""
Session("sql") = sql
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>ADEF-RIO</title>
		
	<style type="text/css">
<!--
body {
	background-image: url(imagens/bg_azul.gif);
	background-repeat: repeat-x;
}
-->
	</style>

	<link href="borda.css" rel="stylesheet" type="text/css" />
	<link href="fonte.css" rel="stylesheet" type="text/css" />
	<style type="text/css">
<!--
.style9 {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; }
-->
	</style>
	</head>
	
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<table width="100%" border="0" cellpadding="2" cellspacing="2">
  <tr>
	<td><span class="canto-top-meio"><img src="imagens/adef.gif" width="135" height="72" /></span></td>
	<td colspan="2" valign="bottom"><div align="right"><strong><font color="#4770BF" size="4" face="Arial, Helvetica, sans-serif"> <%=session("nome_usuario")%> </font> </strong></div></td>
  </tr>
  <tr>
	<td width="412" class="borda"> </td>
	<td colspan="2" valign="bottom" class="borda"> </td>
  </tr>
  <tr>
	<td><b class="fonte-titulo"><font color="#4770BF">Visitas</font></b></td>
	<td width="288" valign="bottom">	  <input name="imprimir" type="image" onClick="print();return false" value="imprimir" src="imagens/print.png" alt="Imprimir" align="right" width="19" height="20" border="0" />	</td>
	<td width="26" valign="bottom"><input type="image" src="imagens/voltar.jpg" alt="Voltar a tela anterior" width="60" height="40" border="0" name="voltar" value="OK" onclick="java script:history.go(-1);" /></td>
  </tr>
  <tr>
	<td colspan="3"> </td>
  </tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
		<tr>
  <td width="100%"><table width="100%" border="1" cellpadding="2" cellspacing="2" class="style9">
	<tr>
	  <td width="216">Nome do Médico</td>
	  <td width="221"><div align="center">Local da Visita </div></td>
	  <td width="34">Finalizadas</td>
	  <td width="35">Marcadas</td>
	  <td width="71">Canceladas</td>
	</tr>
	<%do while not rs.eof
	
		medico = "AND tab_cad_medico_cod_medico='"&rs("tab_cad_medico_cod_medico")&"'"
		
		sql2 = "select Count(tab_usuario_cod_usuario) as conta from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'SIM' "
		set rs2 = conexaoDB.execute(sql2)
		
		sql3 = "select Count(tab_usuario_cod_usuario) as conta2 from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'NÃO' "
		set rs3 = conexaoDB.execute(sql3)
		
		sql4 = "select Count(tab_usuario_cod_usuario) as conta3 from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'CANCELADO' "
		set rs4 = conexaoDB.execute(sql4)

		If strColor="#CCCCCC" then
			strColor="White"
		Else
		  strColor="#CCCCCC"
		End if%>
	<tr bgcolor="<%=strColor%>">
	  <td width="216" valign="top">
		<%if not rs.eof then
	response.write(rs("nome_agenda"))
end if%>
	  </td><td><div align="center"><font color="#4770BF"><strong>
		  <%if not rs.eof then
	response.write(rs("local_agenda"))
end if%>
	  </strong></font></div></td>
	  <td valign="top"><%if not rs2.eof then
	response.write(rs2("conta"))
end if%>
	  </td>
	  <td valign="top"><%if not rs3.eof then
	response.write(rs3("conta2"))
end if%></td>
	  <td valign="top"><%if not rs4.eof then
	response.write(rs4("conta3"))
end if%></td>
	</tr>
	<%
	rs.MoveNext
	Loop%>
	
  </table>
	</center>
	  </div>
	  </td>
		</tr>
</table>

<%		
		conexaoDB.close
		set conexaoDB = nothing
%>
</body>

</html>

O resultado:

Imagem Postada

 

Tá ótimo, mas se tivesse como ordenar pelo maior número (count) de finalizadas (status_agenda="SIM"), ficaria perfeito. Mas se não der tá bom demais também.

 

Um grande abraço! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Sobre essa ordenação, vou te mostrar uma forma, mas não tenho certeza se funciona no SQL Server, não tive como testar.

 

Apenas altere a primeira SQL para a SQL abaixo:

sql = "SET dateformat dmy "&_
	  "SELECT DISTINCT nome_agenda, local_agenda, tab_cad_medico_cod_medico, (select Count(tab_usuario_cod_usuario) from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' And tab_cad_medico_cod_medico='tab_agenda.tab_cad_medico_cod_medico' AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'SIM') As Total "&_
	  "FROM tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' "&_
	  "ORDER by total ASC, nome_agenda ASC"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia!

 

Amigo Hargon, deu um erro:

 

Microsoft OLE DB Provider for ODBC Drivers erro '80040e07'

 

[Microsoft][ODBC SQL Server Driver]

Syntax error converting the varchar value 'tab_agenda.tab_cad_medico_cod_medico' to a column of data type int. 

 

/sis-vendedor/teste/AG_selectVisitas_MedicoPeriodo3.asp, line 42

 

Tentei colocar um cint no Request, mas continuou dando esse erro.

 

No Response, o SQL deu isso:

 

SET dateformat dmy SELECT DISTINCT nome_agenda, local_agenda, tab_cad_medico_cod_medico, (select Count(tab_usuario_cod_usuario) from tab_agenda WHERE tab_usuario_cod_usuario='11' And tab_cad_medico_cod_medico='tab_agenda.tab_cad_medico_cod_medico' AND data_agenda >='01/01/2009 00:00' AND data_agenda <= '12/12/2009 23:59' AND status_agenda = 'SIM') As Total FROM tab_agenda WHERE tab_usuario_cod_usuario='11' AND data_agenda >='01/01/2009 00:00' AND data_agenda <= '12/12/2009 23:59' ORDER by total ASC, nome_agenda ASC

 

O trecho modificado está assim:

 

<%
	cod_usuario = session("cod_usuario")
	medico = cint(Request.Form("nome_medico"))
	data1 = Request.Form("data_inicio")
	data2 = Request.Form("data_fim")
	data1 = data1&" 00:00"
	data2 = data2&" 23:59"
	
If (len(medico) > 1) Then
	medico = "AND tab_cad_medico_cod_medico='"&medico&"'"
Else
	medico = ""
End If


sql = "SET dateformat dmy "&_
	  "SELECT DISTINCT nome_agenda, local_agenda, tab_cad_medico_cod_medico, (select Count(tab_usuario_cod_usuario) from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' And tab_cad_medico_cod_medico='tab_agenda.tab_cad_medico_cod_medico' AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'SIM') As Total "&_
	  "FROM tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' "&_
	  "ORDER by total ASC, nome_agenda ASC"
Response.Write SQL
Response.End
set rs = conexaoDB.execute(sql)


Session("sql") = ""
Session("sql") = sql
%>

Seria que eu não teria que chamar o count "Total" lá embaixo, no recordset?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que ele não identificou a coluna para a comparação. Não estou com o MSSQL instalado nessa máquina, por isso não tive como testar. Mas no Access funcionou essa parte da comparação.

 

Tenta assim:

 

sql = "SET dateformat dmy "&_
	  "SELECT DISTINCT nome_agenda, local_agenda, tab_cad_medico_cod_medico, (select Count(tab_usuario_cod_usuario) from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' And tab_cad_medico_cod_medico='TA1.tab_cad_medico_cod_medico' AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'SIM') As Total "&_
	  "FROM tab_agenda AS TA1 WHERE tab_usuario_cod_usuario='"&cod_usuario&"' "&medico&" AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' "&_
	  "ORDER by total ASC, nome_agenda ASC"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hargon,

 

apenas inseri esse novo sql e deu erro:

 

Microsoft OLE DB Provider for ODBC Drivers erro '80040e07'

 

[Microsoft][ODBC SQL Server Driver]

Syntax error converting the varchar value 'TA1.tab_cad_medico_cod_medico' to a column of data type int. 

 

/sis-vendedor/teste/AG_selectVisitas_MedicoPeriodo3.asp, line 43

 

o form está assim:

 

<select name="nome_medico" id="nome_medico">
						  <option value="0">------------ Todos os médicos ------------</option>
						  <%Do while not rs.eof%>
						  <option value="<%=rs("tab_cad_medico_cod_medico")%>"><%=rs("nome_agenda")%>
						  <%
						rs.movenext
						Loop
						
						end if
						%>
						  </option>
						</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retira as aspas simples

'TA1.tab_cad_medico_cod_medico'

 

Deixa

TA1.tab_cad_medico_cod_medico

 

Poste o resultado.

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.