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

Between entre horas...


Notax

Pergunta

Pessoal, boa tarde.

Começo dizendo que tentei resolver essa dúvida tb em outro fórum... mas não rolou... o mistério continua... e a dúvida parece de tão simples solução... mas não há jeito de eu conseguir fazer funcionar...

O caso é que preciso fazer uma consulta no bd entre Horas... ou seja, no bd tem os campos:

cliente | horai | horaf | valor

e em outra tabela eu ainda tenho o campo chamado

close_date e é este o campo que eu quero usar como índice para verificar o valor na minha consulta...

Todos os campos data/hora em meu BD Access estão formatados para HORA ABREVIADA e como vocês vão ver no código abaixo no app tb estou usando o formatdate para não haver problemas, mantendo os campos quando impressos em tela ou no select tb no formato shortdate...

Acontece que não estou conseguindo fazer meu select funcionar...

no código abaixo a query que não está funionando é a ComandoSQL5 que coloquei ainda mais abaixo do código junto com o debug da mesma...

<%
Option Explicit
Response.Expires = 0
Dim objConn, objRs, strQuery, ComandoSQL, Conexao, ddi, mmi, aai, datai, ddf, mmf, aaf, dataf, txtNome, chcNome
Dim strConnection, stringSQL, array_id, i, sql_id, id, nomecliente, ComandoSQL1, objConn1, ObjRs1, ComandoSQL2, objConn2, ObjRs2, ComandoSQL3, objConn3, ObjRs3, logincliente, tipoatendimento, ComandoSQL4, objConn4, ObjRs4, n , ComandoSQL5, objConn5, ObjRs5, hi, hf, ni, nf, hni, hnf, horai, horaf
n = 1
id = Request.QueryString("checkbox")
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
        if err = 0 and id <> "" then
            array_id = split(id,",")
            For i=0 to ubound(array_id)
                sql_id = sql_id & "tblUsers.sid = " & Trim(array_id(i)) & " OR "
            Next
            sql_id = left(sql_id,(len(sql_id)-4))
            stringSQL = "select * from tblUsers WHERE "&sql_id&""
            Set ObjRs = objConn.Execute(stringSQL)
end if
nomecliente = objRS("fname")
logincliente = objRS("uid")

ComandoSQL1 = "select * from regrashora where cliente = '"&nomecliente&"'"
Set objConn1 =  Server.CreateObject("ADODB.Connection")
objConn1.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
Set ObjRs1 = objConn1.Execute(ComandoSQL1)

ComandoSQL2 = "select * from regrashoraadic where cliente = '"&nomecliente&"'"
Set objConn2 =  Server.CreateObject("ADODB.Connection")
objConn2.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
Set ObjRs2 = objConn2.Execute(ComandoSQL2)

ComandoSQL3 = "select * from problems where uid = '"&logincliente&"'"
Set objConn3 =  Server.CreateObject("ADODB.Connection")
objConn3.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
Set ObjRs3 = objConn3.Execute(ComandoSQL3)

tipoatendimento = objRS3("department")
ComandoSQL4 = "select * from departments where department_id = "&tipoatendimento&""
Set objConn4 =  Server.CreateObject("ADODB.Connection")
objConn4.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
Set ObjRs4 = objConn4.Execute(ComandoSQL4)

hni = FormatDateTime(objRS3("start_date"), 4) 
hnf = FormatDateTime(objRS3("close_date"), 4) 

%>



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>
<title></title>
</head>
<body> 

Cadastro Clientes (consulta)
<table width="650" border="1" cellspacing="0" cellpadding="0" height="1">
<tr>
<td width="650" valign="top" height="136"> 
<table border="0" cellpadding="0" cellspacing="0" width="650">
<tr bgcolor="ffffff"> 
<td width="650" colspan="3">
<table width="100%" border="0" cellspacing="2" cellpadding="2">
</table>
              
</td>
</tr>
<tr> 
<td colspan="3"> 
<form method="GET" action="action_excluir_clientes.asp">
<%While Not objRS.EOF %>
            
<table width="650" border="1" cellspacing="0" cellpadding="0" height="1">
<tr> 
<td height="1" align="center" width="650"> 
<table border="1" width="650" height="29" cellpadding="2">
<tr bgcolor="#0099FF"> 
<td width="266" align="center" bgcolor="#0099FF"> NOME/ RAZ&Atilde;O SOCIAL</td>
<td width="211" align="center">RG / IE</td>
<td width="222" align="center">CPF/ CNPJ</td>
<td width="158" align="center">DATA NASCIMENTO / ABERTURA EMPRESA</td>
</tr>
<tr bgcolor="#FFFFFF"> 
<td width="266" align="center" ><%Response.write objRS("fname")%></td>
<td align="center" ><%Response.write objRS("rg")%></td>
<td width="222" align="center" ><%Response.write objRS("cpf")%></td>
<td width="158" align="center" ><%Response.write objRS("dtcreated")%></td>
</tr>
<tr bgcolor="#0099FF"> 
<td align="center"> ENDERE&Ccedil;O</td>
<td align="center">BAIRRO</td>
<td align="center">CIDADE</td>
<td align="center">CEP</td>
</tr>
<tr bgcolor="#FFFFFF"> 
<td align="center" ><%Response.write objRS("endereco")%></td>
<td align="center"><%Response.write objRS("bairro")%></td>
<td align="center" ><%Response.write objRS("cidade")%></td>
<td align="center"><%Response.write objRS("cep")%></td>
</tr>
<tr bgcolor="#0099FF"> 
<td align="center">TELEFONE</td>
<td align="center">CELULAR</td>
<td align="center" bgcolor="#0099FF">VALOR CONTRATO</td>
<td align="center" bgcolor="#0099FF">QTDE. HORAS CONTRATADAS</td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="center" ><%Response.write objRS("phone")%></td>
<td align="center" ><%Response.write objRS("phone_mobile")%></td>
<td align="center" ><%Response.write formatnumber (objRS.fields("valor"),2)%></td>
<td align="center" ><%Response.write objRS("qtdhoras")%></td>
</tr>
<tr bgcolor="#0099FF">
<td colspan="3" align="center" >E-MAIL</td>
<td align="center" >LOGIN</td>
</tr>
<tr bgcolor="#FFFFFF"> 
<td colspan="3" align="center" ><%Response.write objRS("email1")%></td>
<td align="center" ><%Response.write objRS("uid")%></td>
</tr>
<tr bgcolor="#FFFFFF"> 
<td colspan="4" align="center" >
<table width="650" border="1" cellspacing="0" cellpadding="0">
<tr bgcolor="#0033FF">
<td colspan="6">Regras Horas &quot;Pacote Contratado&quot;</td>
</tr>
<tr bgcolor="#0099FF">
<td width="118">Entre a Hora Inicial:</td>
<td width="119">e a Hora Final:</td>
<td colspan="2">Levando-se em considera&ccedil;&atilde;o o atendimento por:</td>
<td colspan="2">O cliente pagar&aacute;:</td>
</tr>
<%While Not objRS1.EOF %>
<tr>
<td><%Response.write FormatDateTime(objRS1("horai"), 4)%></td>
<td><%Response.write FormatDateTime(objRS1("horaf"), 4)%></td>
<td colspan="2"><%Response.write objRS1("tipo")%></td>
<td colspan="2"><%Response.write formatnumber (objRS1.fields("valor"),2)%></td>
</tr>
<%
horai = FormatDateTime(objRS1("horai"), 4)                              
horaf = FormatDateTime(objRS1("horaf"), 4)%>
<%objRS1.MoveNext
Wend%> 
    
                              
</table>
<table border="1">
<tr bgcolor="#0033FF">
<td colspan="7">Horas Utilizadas</td>
</tr>
<tr bgcolor="#0099FF">
<td width="108">Hora Abertura Chamadol:</td>
<td width="120">Hora Fechamento Chamado:</td>
<td width="78">T&iacute;tulo do Chamado</td>
<td width="97">Tipo de Atendimento</td>
<td>Tempo Gasto (min.)</td>
<td width="66">Valor Hora</td>
<td>Saldo</td>
</tr>
<%While Not objRS3.EOF %>
<%ComandoSQL5 = "select valor from regrashora where cliente = '"&nomecliente&"' and #"&hnf&"# BETWEEN #"&horai&"# and #"&horaf&"# "
Set objConn5 =  Server.CreateObject("ADODB.Connection")
objConn5.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
response.write "ComandoSQL5 =" &ComandoSQL5& "<br>"
Set ObjRs5 = objConn5.Execute(ComandoSQL5)%>
<%While Not objRS5.EOF %>
<tr>
<td><%Response.write FormatDateTime(objRS3("start_date"),4)%></td>
<td><%Response.write FormatDateTime(objRS3("close_date"),4)%></td>
<td><%Response.write objRS3("title")%></td>
<td><%response.write objRS4("dname")%></td>
<td width="84"><%Response.write objRS3("time_spent")%></td>
<td><%response.write objRS5("valor")%></td>
<td width="51">
<%
Dim qtdhoras, qtdminutos, saldo, tempogasto
qtdhoras = objRS("qtdhoras")
qtdminutos = qtdhoras * 60
tempogasto = objRS3("time_spent")
if n = 1 then
saldo = qtdminutos - tempogasto
else
saldo = saldo - qtdminutos - tempogasto + qtdminutos 
end if
response.write formatnumber (saldo,2)
n = n + 1                                
%></td>
</tr>
 <%objRS5.MoveNext
Wend%>
 <%objRS3.MoveNext
Wend%>    
<tr>
<td colspan="7" bgcolor="#FF6600">&nbsp;</td>
</tr>
</table>
<%
objRS.MoveNext
Wend
    %>
</table>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</td>
</tr>
</table>
  <%  
  objRs.close
  objConn.close
  Set objRs = Nothing
  Set objConn = Nothing
  objRs1.close
  objConn1.close
  Set objRs1 = Nothing
  Set objConn1 = Nothing

  objRs2.close
  objConn2.close
  Set objRs2 = Nothing
  Set objConn2 = Nothing
  objRs3.close
  objConn3.close
  Set objRs3 = Nothing
  Set objConn3 = Nothing
  objRs4.close
  objConn4.close
  Set objRs4 = Nothing
  Set objConn4 = Nothing

  %>
</body>
</html>
a query é esta aqui:
ComandoSQL5 = "select valor from regrashora where cliente = '"&nomecliente&"' and #"&hnf&"# BETWEEN #"&horai&"# and #"&horaf&"# "

o debug imprime isso aqui:

ComandoSQL5 =select valor from regrashora where cliente = 'teste' and #12:58# BETWEEN #18:30# and #08:29#

e não funciona porque ela não imprime somente os campos valor cujo qual deve estar onde a hora hnf esteja entre a horai e a horaf... imprime uns resultados sem sentido algum, como por exemplo, quando consultada como o debug acima vieram os seguintes resultados:

teste 09:06 12:58 50,00

teste 09:06 12:58 100,00

teste 09:06 10:08 50,00

teste 09:06 10:08 100,00

teste 09:06 10:04 50,00

teste 09:06 10:04 100,00

teste 09:06 11:06 50,00

teste 09:06 11:06 100,00

será que alguém consegue dar uma força???

[]'s Notax

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

Posts Recomendados

  • 0

FutaqueFariu! Consegui aqui pessoal!

Fica algumas dicas pra que for trabalhar com a horas...

Primeiro... nunca, nunca, nunca, a hora final pode ser menor do que a hora incial... parece bobagem falar isso, mas o que eu quero dizer é que das 22:00 de um dia até as 08:00 do outro dia significa dizer que a hora final 8:00 é menor do que a hora incial, sacaram???

Dois... formate as suas horas de forma a ficarem exatamente igual ao bd... tem que ficar EXATAMENTE IGUAL... tipo, shortdate, longdate ou o que seja!

Ao Bareta e ao Kuroi, seguem novamente um agradecimento especial... valeu toda a força e atenção...

quanto aos while... aprenda com o meu erro e não confunda funda com b***, no meu caso era necessário apenas um While e referente ao RS3, depois... era só colocar o select em questão DENTRO DESTE WHILE... sem abrir novos whiles ou novas funções...

Funcionou legal aqui...

[]'s a todos...

Notax

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
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...