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

Boa tarde moçada!

 

Estou fazendo uma consulta que tem a opção "Todos os médicos" mas não está funcionando. Quando escolho um dos médicos vai, mas do contrário não... Não dá erro, mas exibe um nome só e com dados incorretos.

 

Código do form:

 

<td width="100%"><form action="AG_selectVisitas_MedicoPeriodo2.asp" method="post" name="form" id="form">
			<div align="center">
			  <center>
				<table width="293" border="0" cellpadding="0" class="style9">
				  <tr>
					<td height="14" colspan="4"><div align="left">Médico
					  <input type="hidden" name="cod_vendedor" value="<%=cod_vendedor%>" />
					</div></td>
					</tr>
				  <tr>
					<td height="27" colspan="4" valign="bottom"><div align="left">
						<select name="nome_medico" id="nome_medico">
						  <option value="0">------------ Todos os médicos ------------</option>
						  <%Do while not rs.eof%>
						  <option value="<%=rs("nome_agenda")%>"><%=rs("nome_agenda")%>
						  <%
						rs.movenext
						Loop
						
						end if
						%>
						  </option>
						</select>
					</div></td>

Código da listagem:

<%
	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 medico = "0" then

	sql = "set dateformat dmy select * from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' order by data_agenda ASC"
	set rs = conexaoDB.execute(sql) 
	
	else
	
	sql = "set dateformat dmy select * from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' AND nome_agenda='"&medico&"' AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' order by data_agenda ASC"
	set rs = conexaoDB.execute(sql) 
	
end if

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

E exibe assim:

<td width="216" valign="top"><font color="#4770BF"><strong>
					   <%if not rs.eof then
	response.write(rs("nome_agenda"))
end if%>
					  <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>

Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Altere essa linha:

sql = "set dateformat dmy select * from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' AND nome_agenda='"&medico&"' AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' order by data_agenda ASC"
Para

If (len(medico) > 0) Then
	medico = "AND nome_agenda='"&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"

Poste o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu um erro estranho:

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

 

[Microsoft][ODBC SQL Server Driver]

Line 1: Incorrect syntax near '0'. 

 

/sis-vendedor/teste/AG_selectVisitas_MedicoPeriodo2.asp, line 40

 

Fiz 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) > 0) Then
	medico = "AND nome_agenda='"&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"
set rs = conexaoDB.execute(sql)

'Session("sql") = ""
'Session("sql") = sql
	
	sql2 = "select Count(tab_usuario_cod_usuario) as conta from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' AND nome_agenda='"&medico&"' AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'SIM' "
set rs2 = conexaoDB.execute(sql2) 'essa é a linha 40

Compartilhar este post


Link para o post
Compartilhar em outros sites

Releia o que postei.

 

Você não fez da forma que citei. Eu disse para a substituir a linha pela linha que postei, pois já havia feito as alterações que considerei necessárias.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Modifiquei agora como você falou:

 

<%
	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 medico = "0" then

	sql = "set dateformat dmy select * from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' order by data_agenda ASC"
	set rs = conexaoDB.execute(sql) 
	
	else
	
	If (len(medico) > 0) Then
	medico = "AND nome_agenda='"&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"

	set rs = conexaoDB.execute(sql) 
	
end if

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

Mas quando seleciono um médico dá:

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

 

[Microsoft][ODBC SQL Server Driver]

Line 1: Incorrect syntax near 'GISELE'. 

 

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

 

E quando seleciono todos só exibe um nome e com dados incorretos.

 

Devo ter modificado errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que tem na linha 50?

 

Pq dessa condição? if medico = "0" then

 

Quando você escolhe todos, informa 0 como parâmetro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, tô vendo que não vai dar certo. Porque quando listo todos também tenho que somar as vistas finalizadas, canceladas e agendadas de cada médico e está somando todas as visitas de todos os médicos. Atualmente os nomes dos medicos estão num rs a soma das visitas finalizadas em outro rs e as outras visitas em outros rs, assim por diante.

 

O negócio é como junto todas as quatro SQL numa só e depois boto pra rodar um loop com o nomes, e as somas de cada medico para cada tipo de visita?

 

Acho que só assim vai funcionar...

 

os SQLs são esses:

 

if medico = "0" then

	sql = "set dateformat dmy select * from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' order by data_agenda ASC"
	set rs = conexaoDB.execute(sql) 
	
	else
	
	sql = "set dateformat dmy select * from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' AND nome_agenda='"&medico&"' AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' order by data_agenda ASC"
	set rs = conexaoDB.execute(sql) 
	
end if

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

sql2 = "select Count(tab_usuario_cod_usuario) as conta from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' AND nome_agenda='"&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&"' AND nome_agenda='"&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&"' AND nome_agenda='"&medico&"' AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' AND status_agenda = 'CANCELADO' "
set rs4 = conexaoDB.execute(sql4)

 

Se puderem me ajudar fico muito agradecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que me passar as informações de acordo com o código que você postou.

 

No primeiro código não havia a condição que perguntei sobre ela.

 

No último código não há rs2 e sql2.

 

Remova essa parte do código:

if medico = "0" then

	sql = "set dateformat dmy select * from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' AND data_agenda >='" & data1 & "' AND data_agenda <= '" & data2 & "' order by data_agenda ASC"
	set rs = conexaoDB.execute(sql)
	
	else
	
	If (len(medico) > 0) Then
	medico = "AND nome_agenda='"&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"

	set rs = conexaoDB.execute(sql)
	
end if

E deixe somente:

If (len(medico) > 0) Then
	medico = "AND nome_agenda='"&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"

set rs = conexaoDB.execute(sql)

Não faça nada diferente do que estou passando, pois poderá ocorrer algum erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, Hargon. Desculpe.

 

 

Deu esse erro agora (selecionando todos):

 

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

 

[Microsoft][ODBC SQL Server Driver]

Line 1: Incorrect syntax near '0'. 

 

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

 

E esse (selecionando um dos médicos - Helen):

 

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

 

[Microsoft][ODBC SQL Server Driver][sql Server]Line 1: Incorrect syntax near 'HELEN'.

 

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

Linha 42: set rs2 = conexaoDB.execute(sql2)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste como seu código está agora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%

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) > 0) Then

medico = "AND nome_agenda='"&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"

 

set rs = conexaoDB.execute(sql)

 

 

Session("sql") = ""

Session("sql") = sql

 

sql2 = "select Count(tab_usuario_cod_usuario) as conta from tab_agenda WHERE tab_usuario_cod_usuario='"&cod_usuario&"' AND nome_agenda='"&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&"' AND nome_agenda='"&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&"' AND nome_agenda='"&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">Visita</div></td>

<td width="34">Finalizadas</td>

<td width="35">Marcadas</td>

<td width="71">Canceladas</td>

</tr>

 

<tr>

 

<td width="216" valign="top">

<%if not rs.eof then

response.write(rs("nome_agenda"))

end if%>

<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>

 

<tr>

<td colspan="5" valign="top"> </td>

</tr>

</table>

</center>

</div>

<img src="imagens/borda.gif" width="544" height="5" /></td>

</tr>

</table>

 

<%

conexaoDB.close

set conexaoDB = nothing

%>

</body>

 

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok... a adaptação que havia feito, funcionava apenas para o primeiro SELECT. Mas pelo visto deverá ser feito para todas as consultas. Seu código deverá ficar 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 nome_agenda='"&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"

set rs = conexaoDB.execute(sql)


Session("sql") = ""
Session("sql") = sql
	
	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">Visita</div></td>
					  <td width="34">Finalizadas</td>
					  <td width="35">Marcadas</td>
					  <td width="71">Canceladas</td>
					</tr>
					
					<tr>
					  
					  <td width="216" valign="top">
					   <%if not rs.eof then
	response.write(rs("nome_agenda"))
end if%>
					  <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>
				  
					<tr>
					  <td colspan="5" valign="top"> </td>
					</tr>
				  </table>
				  </center>
	  </div>
	  <img src="imagens/borda.gif" width="544" height="5" /></td>
		</tr>
	  </table>

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

</html>

Poste o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia!

Copiei e colei e deu esse erro (quando seleciono "todos"):

 

"Microsoft OLE DB Provider for ODBC Drivers erro '80040e14'

 

[Microsoft][ODBC SQL Server Driver]

Line 1: Incorrect syntax near '0'. 

 

/sis-vendedor/teste/AG_selectVisitas_MedicoPeriodo3.asp, line 35"

 

Linha 35: set rs = conexaoDB.execute(sql)

 

P.S: Obrigado pela persistência!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse erro acontece quando você mandar listar apenas TODOS ou apenas um determinado registro?

 

Acima da linha 35 coloque:

Response.Write SQL
Response.End

Poste o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acontece quando seleciono todos. Quando seleciono um só, tá normal.

 

O response deu isso:

 

set dateformat dmy select * from tab_agenda WHERE tab_usuario_cod_usuario='17' 0 AND data_agenda >='01/01/2009 00:00' AND data_agenda <= '12/12/2009 23:59' order by data_agenda ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi.

 

Altera essa parte

If (len(medico) > 1) Then
	medico = "AND nome_agenda='"&medico&"'"
End If

Para

If (len(medico) > 1) Then
	medico = "AND nome_agenda='"&medico&"'"
Else
	medico = ""
End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não.

 

Aparece um medico só. E o resultados dos tipos de visitas dele acabou sendo a soma de todos. Era pra ser só a soma (Count) das dele.

 

O response deu isso:

 

set dateformat dmy select * from tab_agenda WHERE tab_usuario_cod_usuario='17' AND data_agenda >='01/01/2009 00:00' AND data_agenda <= '12/12/2009 23:59' order by data_agenda ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom. Então o erro já mudou.

 

Agora você tem que verificar quantos registros você possui nas condições informadas aqui "WHERE tab_usuario_cod_usuario='17' AND data_agenda >='01/01/2009 00:00' AND data_agenda <= '12/12/2009 23:59'"

 

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.