Ir para conteúdo
Fórum Script Brasil
  • 0

ASP+SQL STRING


ANDRE_GUSTAVO

Pergunta

Olá pessoal, tenho 2 tabelas no DB

tbl_agendamentos = onde são gravados informações de agendamentos ( data_agendada | horas | empresa | preposto | empregado)

e outra na outra tabela

tbl_horariosdisponiveis = onde já são predefinidos algumas informações ( horas )

no campo "horas" eu cadastrei como default os horarios entre 09:00 e 17:40 com intervalos de 20 minutos

ex.: 09:00 , 09:20 , 09:40 , 10:00 , 10:20 , 10:40 ..... 17:00 , 17:20 , 17:40

gostaria de saber se antes de serem exibidos os horarios disponiveis que estão na tabela tbl_horariosdisponiveis fosse possivel

fazer uma comparação com os horarios cadastrados na tabela tbl_agendamentos para que fossem exibidos somente os horarios que não estivessem cadastrados na tabela tbl_agendamentos ( data_agendada | horas | empresa | preposto | empregado) ou seja gostaria que fosse exibidos somente os horarios disponiveis para uma determinada data, a data para referencia é passada atraves de um <select></select>.

Estou tentando fazer dessa forma, porem não da certo

<%
DIM strSQLPAGINA , strSQL , rsAGENDADOS, rsHORARIO , dataagendamento

dataagendamento = request.Form("data")

Call AbreConexao

strSQL = "SELECT data_agendada , horas FROM tbl_agendamentos where data_agendada= '"&dataagendamento&"'"
set rsAGENDADOS=conexaoDB.EXECUTE(strSQL)



strSQLPAGINA = " SELECT * FROM tbl_horariosdisponiveis WHERE horas <> '"& rsAGENDADOS("horas")&"' "

SET rsHORARIO = conexaoDB.Execute(strSQLPAGINA)

%>

ex.: o usuario seleciona uma data "10/04/2009" e seria exibido os horarios disponiveis para agendamento no dia 10/04/2009

e se caso a data selecionada estivesse com todos horarios disponiveis, seria exidos todos os horarios de 09:00 as 17:40

Desde já agradeço a todos pela ajuda e atenção

Até mais

valeu!!!

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0
Qual o erro que está dando?

Lembre-se... quando a variável for data, e o campo tb estiver no formato data no bd você deve usar cerquilhas para abraçar a variável, assim:

#"&dataagendamento&"#
[]'s Rafael Spilki
Estou tentando fazer com que seja exibido apenas os horarios vagos para um determinado dia e caso o dia não tenha nenhum horario agendado seja exibido todos horario, porém não estou conseguindo. Vejam como está meu codigo. onde está o erro? me ajudem . codigo
strSQL = "SELECT * FROM tbl_agendamentos INNER JOIN tbl_horariosagendados ON tbl_horariosagendados.horas <> tbl_agendamentos.horas where data_agendada <> '#"&dataagendamento&"#'   "
set rsHORARIO=conexaoDB.EXECUTE(strSQL)
em todas as datas selecionadas, são exibidos os mesmos resultados, e os horarios são duplicados. Untitled-2.png se eu altero a comparação
where data_agendada <> '#"&dataagendamento&"#' 

para

where data_agendada = '#"&dataagendamento&"#'

o resultado é vazio.

como eu poderia solucionar esse problema?

Link para o comentário
Compartilhar em outros sites

  • 0

Mas a questão é: onde estão os horários vazios?

você está comparando com as datas agendadas... o ideal é comparar com as datas vazias... ou seja:

você fará uma query para consultar todas as datas que estão agendadas, exibirá os resultados dentro de um loop... dentro desse loop você fará uma nova query consultando as datas vazias e as comparando com o rs do segundo loop...

imprime os rexultados em tela e pronto!

a lógica é essa!

Terás que trabalhar com um loop dentro de outro loop... nada de mais... tenta ai que você conseguirá!

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0
Mas a questão é: onde estão os horários vazios?

você está comparando com as datas agendadas... o ideal é comparar com as datas vazias... ou seja:

você fará uma query para consultar todas as datas que estão agendadas, exibirá os resultados dentro de um loop... dentro desse loop você fará uma nova query consultando as datas vazias e as comparando com o rs do segundo loop...

imprime os rexultados em tela e pronto!

a lógica é essa!

Terás que trabalhar com um loop dentro de outro loop... nada de mais... tenta ai que você conseguirá!

[]'s

Cara da um olhada

ERRO:

ADODB.Recordset error '800a0bcd'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/site/listahorarios_agenda.asp, line 390

<%


strSQLPAGINA = " SELECT * FROM tbl_horariosagendados WHERE horas <> '"&dataagendamento&"'"
set rsDisponiveis = conexaoDB.EXECUTE(strSQLPAGINA)
strSQL = "SELECT data_agendada , horas FROM tbl_agendamentos where data_agendada= '"& rsDisponiveis("horas")&"' "
set rsAGENDADOS=conexaoDB.EXECUTE(strSQL)
                    
     x = 0 %>
                    <% 
                    
                while not rsDisponiveis.EOF
    while not rsAgendados.EOF 
        if ( rsDisponiveis("horas") = rsAgendados("horas") ) then
            Response.Write(rsAGENDADOS("horas"))
       
                    %>
                    <% x = x + 1 %>
                    <% if (x - int(x/2) * 2) = 0 then %>
                    
                    <tr>
                      <td align="center" valign="middle" bgcolor="#F3F2F5"><span class="style2345"><%= response.Write(rsAGENDADOS("horas"))%> </span></td>
                      <td width="68%" align="center" valign="middle" bgcolor="#F3F2F5"><span class="style2345"><%= response.Write(rsAGENDADOS("status"))%> </span></td>
                      <td width="14%" align="center" valign="middle" bgcolor="#F3F2F5"><table width="88" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                          <td width="20" align="center" valign="middle"><img src="imagens/icon_homologa.png" width="20" height="20" border="0" /></td>
                          <td width="80" align="center" valign="middle"><a href="form_agendamento.asp?data=<%=dataagendamento%>&amp;hora=<%=rsAGENDADOS("horas")%>">Agendar</a></td>
                        </tr>
                      </table></td>
                    </tr>
                    <% end if %>
                    <% if (x - int(x/2) * 2) = 1 then %>
                    <tr>
                      <td align="center" valign="middle" bgcolor="#E5E5E5"><span class="style2345"><%= response.Write(rsAGENDADOS("horas"))%> </span></td>
                      <td align="center" valign="middle" bgcolor="#E5E5E5"><span class="style2345"><%= response.Write(rsAGENDADOS("status"))%> </span></td>
                      <td align="center" valign="middle" bgcolor="#E5E5E5"><table width="88" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                          <td width="20" align="center" valign="middle"><img src="imagens/icon_homologa.png" width="20" height="20" border="0" /></td>
                          <td width="80" align="center" valign="middle"><a href="form_agendamento.asp?data=<%=dataagendamento%>&amp;hora=<%=rsAGENDADOS("horas")%>">Agendar</a></td>
                        </tr>
                      </table></td>
                    </tr>
                    <% end if %>
                    <%
 end if
    wend
   rsAGENDADOS.movefirst
wend

%>

LINHA 390 >>> rsAGENDADOS.movefirst

Editado por ANDRE_GUSTAVO
Link para o comentário
Compartilhar em outros sites

  • 0
Esse erro acontece quando a consulta é vazia...

Eu não usaria movefirst e sim movenext, além disso você só está passando a primeira parte do primeiro loop, ou seja, não tem um comando de repetição dele... como seria o caso do movenext...

[]'s

o está errado? ....não to conseguindo fazer o loop funcionar, os resultados das consultas ainda são iguais para todas as datas.

olha so

<%
   strSQLPAGINA = " SELECT * FROM tbl_agendamentos"' where data_agendada = '"&dataagendamento&"' "
set rsDisponiveis = conexaoDB.EXECUTE(strSQLPAGINA)

       
   strSQL = "SELECT * FROM tbl_horariosagendados where horas <> '"&rsDisponiveis("horas")&"' "
set rsAGENDADOS=conexaoDB.EXECUTE(strSQL)
   DO while not rsDisponiveis.EOF 
  


 DO while not rsAGENDADOS.EOF  
        if ( rsAGENDADOS("horas") <> rsDisponiveis("horas")  ) then
         
     %>
                    <tr>
                      <td align="center" valign="middle" bgcolor="#F3F2F5"><span class="style2345"><%= response.Write(rsAGENDADOS("horas"))%> </span></td>
                      <td width="68%" align="center" valign="middle" bgcolor="#F3F2F5"><span class="style2345"><%= response.Write(rsAGENDADOS("status"))%> </span></td>
                      <td width="14%" align="center" valign="middle" bgcolor="#F3F2F5"><table width="88" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                          <td width="20" align="center" valign="middle"><img src="imagens/icon_homologa.png" width="20" height="20" border="0" /></td>
                          <td width="80" align="center" valign="middle"><a href="form_agendamento.asp?data=<%=dataagendamento%>&hora=<%=rsAGENDADOS("horas")%>">Agendar</a></td>
                        </tr>
                      </table></td>
                    </tr>
             
         
                    <%
    END IF
    rsAGENDADOS.movenext 
  LOOP
  rsDisponiveis.movenext  


LOOP  


%>

Link para o comentário
Compartilhar em outros sites

  • 0
tente executar apenas o selectdentro do primeiro loop, ou seja, sem executar um segundo loop... dessa forma a cada passada de registro do primeiro o segundo será executado...

Cara... não deu certo, to pra pirar com esse negocio iuahiuaiauaiauhaih

teria outra maneira de se fazer esse loop!!?!?

obrigado pela ajuda

T+

Link para o comentário
Compartilhar em outros sites

  • 0
tente executar apenas o selectdentro do primeiro loop, ou seja, sem executar um segundo loop... dessa forma a cada passada de registro do primeiro o segundo será executado...

Cara... não deu certo, to pra pirar com esse negocio iuahiuaiauaiauhaih

teria outra maneira de se fazer esse loop!!?!?

obrigado pela ajuda

T+

HELP!...... o mesmo resultado é para todas as a datas:

<%
varstatus = "Horario Indisponível"
strSQL = "SELECT * FROM tbl_horariosagendados"' where status <> '"&varstatus&"' "
set rsdisponiveis=conexaoDB.EXECUTE(strSQL)
     %>
                    <% 
                    
        public horas_vagas            
            data_vaga = strSQL
    horas_vagas=split(data_vaga)    
    CONT_GERAL = ubound(horas_vagas)
            strSQLPAGINA = " SELECT * FROM tbl_agendamentos where data_agendada <> '"&dataagendamento&"' and data = '"&dataagendamento&"' " & horas_vagas(0) & "'"    
FOR CONT = 1 TO CONT_GERAL
 DISPONIVEIS = horas_vagas(CONT)
 do  while not rsDisponiveis.EOF 
     strSQLPAGINA=strSQLPAGINA & " and SELECT * FROM tbl_horariosagendados  WHERE horas = '"& rsDisponiveis("horas")&"' " & DISPONIVEIS 
set rsAGENDADOS=conexaoDB.EXECUTE(strSQL)
    
                    
                    %>
                   
                    
                    <tr>
                      <td align="center" valign="middle" bgcolor="#F3F2F5"><span class="style2345"><%= response.Write(rsDisponiveis("horas"))%> </span></td>
                      <td width="68%" align="center" valign="middle" bgcolor="#F3F2F5"><span class="style2345"><%= response.Write(rsDisponiveis("status"))%> </span></td>
                      <td width="14%" align="center" valign="middle" bgcolor="#F3F2F5"><table width="88" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                          <td width="20" align="center" valign="middle"><img src="imagens/icon_homologa.png" width="20" height="20" border="0" /></td>
                          <td width="80" align="center" valign="middle"><a href="form_agendamento.asp?data=<%=dataagendamento%>&hora=<%=rsDisponiveis("horas")%>">Agendar</a></td>
                        </tr>
                      </table></td>
                    </tr>
                   
                    <%
                 
  rsDisponiveis.movenext
loop

 next
        

%>

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Andre,

SQL = "SELECT data_agendada, horas FROM tbl_agendamentos INNER JOIN tbl_horariosdisponiveis ON tbl_agendamentos.data_agendada = tbl_horariosdisponiveis.horas;"

Acho que seria muito interessante você usar a string acima, ela é perfeita para seu caso onde pode fazer uma consulta em tabelas diferentes. Você pode usar um loop de várias formas; caixa de seleção, lista de seleção e por ai vai.

Gostaria de dar uma dica para você, já que percebi que o seu forte não é a logística em banco de dados, a principio se percebe que você perdeu o foco da organização da informação bem ai (em tomar a decisão em fazer uma tabela separada ou usar dados em scripts somente) e com isso ficou complicado interligar as coisas, mas acho que ficaria muito mais simples e funcional fazer tudo isto com if ou loop sobre if que seria o correto em seu caso. Não adianta fazer algo complicado onde simples if resolveria seu problema.

É como PHP e ASP, O PHP com umas funções a mais e ASP com umas funções a menos, mas a diferença entre as duas linguagens quem faz é a criatividade e simplicidade com que cada script é feio. Nada muda lá atrás do navegador em termos de programação complicada. Ajax é um exemplo disto, um bom menu de salto com alguns loops podem fazer muito mais que ele se olharmos para lado funcional e não o lado show time da programação.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...