Jump to content
marcelocardoso

Agrupar DATAS em noticias

Recommended Posts

Pessoal!

Pesquisei bastante no forum e na internet, porém não consegui realizar o que preciso.
Vejam se conseguem me dar uma luz para resolver.

1) preciso ao exibir no RECORDSET as noticias, mas não repetindo as DATAS;
2) preciso ao exibir agrupar as noticias sem repetição, mas mostrando todas as que pertecem a DATA acima;
2a) tipo: 14:08:1980 - exibir noticia 1, exibir noticia 2, exibir noticia 3 (que no caso, aí teria dentro do banco 3 datas para o dia 14:08:1980, mas somente mostrar 1 vez a data e as 3 noticias.
3) depois sucessivamente as demais, que daí faço com o WHILE.

Tentei usar distinct, mas também não achei o modo certo.
Alguma luz com exemplo, agradeço.

Obrigado.

Share this post


Link to post
Share on other sites

Mas como quer ver tal consulta na coluna da data seria 1 registro para 3 registros de noticias? não vai rolar...

 

o que pode fazer é tratar na aplicação para mostrar somente datas diferentes

 

ou eu não entendi o que quis dizer...

Share this post


Link to post
Share on other sites

Não vou fazer o código todo, mas vou dar uma luz:

1º - Retorna o recodset ordenado pela data;

2º - Cria uma variável com uma data "estourada", ou seja, uma data que você sabe que nunca irá se repetir, por exemplo 01/01/1900

3º - Faz um loop +/- assim (desculpa se tiver muitos erros de sintaxe, faz tempo que não mexo com ASP classico, mas dá para entender)

<%
dim dataAtual = '1900-01-01'
while not dtRecord.EOF()
begin
	reader = dtRecords.Read();
	if(reader["dataDaNoticia"] <> dataAtual)
	begin
		if(dataAtual <> '1900-01-01')
		begin
			%>
			<!--Fecha alguma estrutura que você possa ter aberto, por exemplo uma div, seilá, vai do que você precisa-->
			%>
		end
		%>
		<!--Cria alguma estrutura que você queira, por exemplo uma div, seilá, vai do que você precisa-->
		<%= dataAtual %>
		%>
	end
	%>
	<!--Coloca os dados da noticia-->
	%>
end
if(dataAtual <> '1900-01-01')
begin
	%>
	<!--Fecha alguma estrutura que você possa ter aberto, por exemplo uma div, seilá, vai do que você precisa-->
	%>
end

 

 

 

 

Share this post


Link to post
Share on other sites

Tipo preciso assim:

14:08:217
13:00hs - noticia 1

13:00hs - noticia 2

13:00hs - noticia 3

 


12:08:217
13:00hs - noticia 1

 

Digamos que em 14 08 ele tem 3 noticias, ele me mostra dentro da data 3 noticia,  e no dia 13 08, ele mostra apenas uma, pois só foi postada uma neste dia....

 

Share this post


Link to post
Share on other sites

estou tentando, primeiro com SELECT distinct PEGAR todas as DATAS, não deixando passar as DATAS repetidas, depois dentro de um while, fazer mais um SELECT com WHERE da data do DISTINCT e assim buscar todos os registros que preciso, na respectiva DATA...

vou ver...
em breve retorno.

Share this post


Link to post
Share on other sites
1 hora atrás, marcelocardoso disse:

Tipo preciso assim:

14:08:217
13:00hs - noticia 1

13:00hs - noticia 2

13:00hs - noticia 3

 


12:08:217
13:00hs - noticia 1

 

Digamos que em 14 08 ele tem 3 noticias, ele me mostra dentro da data 3 noticia,  e no dia 13 08, ele mostra apenas uma, pois só foi postada uma neste dia....

 

 

 

Então, se você não conseguiu fazer pelo DISTINCT, faz ela fazer uma consulta depois que você vê as datas...

 

Ex


 

SET RS = Server.CreateObject("ADODB.Recordset") 
        RS.open "SELECT * FROM NOTICIA WHERE ... seu codigo da data" 'Nessa consulta tu pega data


Do
If Not Rs.EOF Then

    SET GGS = Server.CreateObject("ADODB.Recordset")
    GGS.open "SELECT * FROM NOTICIA WHERE .... seu codigo da data" ' Nessa você manda ela imprimir as datas puxando a data da consulta anterior

	GGS.Close()
  	SET GGS = Nothing

RS.movenext
END IF
Loop While not RS.eof


RS.Close()
SET RS = Nothing

Fiz isso em uma consulta que preciso imprimir os pedidos da data tal e listar todos eles (já que eu uso banco de dados access e infelizmente não consegui usar select distinct nele :sweat_smile:), a desvantagem que se você não fechar as consultas depois sobrecarrega o banco pra caramba.

 

 

 

Share this post


Link to post
Share on other sites

Não, no exemplo que eu fiz ele está esperando que venha tudo da notícia, os dados e a data.

Dentro do while existe o if que verifica se a data mudou, com isso ele imprime a data somente quando mudar a data, a data só precisa estar ordenada para que o mesmo dia esteja tudo "juntinho" hahaha

Share this post


Link to post
Share on other sites
4 minutos atrás, Pita disse:

Não, no exemplo que eu fiz ele está esperando que venha tudo da notícia, os dados e a data.

Dentro do while existe o if que verifica se a data mudou, com isso ele imprime a data somente quando mudar a data, a data só precisa estar ordenada para que o mesmo dia esteja tudo "juntinho" hahaha

 

Acho que entendi, seria um tipo ORDER BY pela data?

Share this post


Link to post
Share on other sites

Isso, aí o código deve ir comparando a data, quando mudar a data [if(reader["dataDaNoticia"] <> dataAtual)] ele entra no if e deve imprimir a data, caso não, ele não faz nada e só vai imprimindo os dados da notícia mesmo

Share this post


Link to post
Share on other sites

tentei fazer assim, sem sucesso também...
 

            <%
               SET strRS = Server.CreateObject("ADODB.Recordset") 
                   strRS.Open "SELECT DISTINCT vmares_data FROM vm_noticias", conexao, 3, 3
                   
                IF strRS.EOF THEN
                      response.write "Não existe registro para exibir"
                ELSE
               
               
                   DO WHILE NOT strRS.EOF

                      response.write "<b>" & strRS("vmares_data") & "</b><br>"

                        SET strFinal = Server.CreateObject("ADODB.Recordset")
                            strFinal.Open "SELECT * FROM vm_noticias WHERE vmares_data = '"& strRS("vmares_data") &"'", conexao, 3, 3

                            DO WHILE NOT strFinal.EOF

                                     response.write strFinal("vmares_hora") & " - | - " & strFinal("vmares_titulo")

                                strFinal.MoveNext
                                         Loop

                   strRS.MoveNext
                         Loop
               
                END IF
            %>

nem assim, monta os dados no segundo DO WHILE, que no caso, eu PEGARIA com DISTINCT as datas num primeiro momento, em segundo, pelo WHERE do segundo SELECT buscava todas as noticias da data específica, do primeiro laço, mas não exibe...

oq posso estar errando..?

Share this post


Link to post
Share on other sites

Cara, faz +/- assim e desculpa pelos erros de sintaxe

 

            <%
               SET strRS = Server.CreateObject("ADODB.Recordset") 
                   strRS.Open "SELECT DISTINCT * FROM vm_noticias", conexao, 3, 3
                   
                IF strRS.EOF THEN
                      response.write "Não existe registro para exibir"
                ELSE
                
                	dim dataAtual = '1900-01-01'
                    
                    DO WHILE NOT strRS.EOF
                    
                    	IF dataAtual <> strRS("vmares_data")
	                      response.write "<b>" & strRS("vmares_data") & "</b><br>"
                          dataAtual = strRS("vmares_data")
                        ENDIF
                        
                        response.write strRS("vmares_hora") & " - | - " & strRS("vmares_titulo") & "<br>"

                   		strRS.MoveNext
                    LOOP
               
                END IF
            %>

 

Share this post


Link to post
Share on other sites

colegas, que me ajudaram...
consegui realizar assim:

CODE:

    <!-- CODE | noticias -->
    <section id="noticias" class="secao_altura100">
        <div class="secao_conteudo">
            <%
            IF Request.QueryString("noticia") = "" THEN
            %>
                <div class="row slideanim">
                    <div class="col-md-12 text-center" style="padding-bottom: 40px;">
                        <h1 class="extragrande"><b>Notícias Verdes Mares</b></h1>
                        <h1>Atualizações e informativos do meio contábil!</h1>
                    </div>
                </div>
                <%

                SET strRS = Server.CreateObject("ADODB.Recordset") 
                    strRS.Open "SELECT DISTINCT * FROM vm_noticias", conexao, 3, 3
                 IF strRS.EOF THEN
                %>
                <div class="row">
                    <div class="col-md-12" style="font-size: 25px;">AVISO!</div>
                    <div class="col-md-12">
                        <div class="col-md-12" style="padding-bottom: 5px;">
                            <h6>Não existem noticias cadastradas no momento.</h6>
                        </div>
                    </div>
                </div>
            <%
            ELSE
               
                dataAtual = "1900-01-01"
                
                    DO WHILE NOT strRS.EOF

                        IF NOT dataAtual = strRS("vmares_data") THEN
                        %>
                        <div class="row" style="padding-bottom: 5px;">
                            <div id="noticia_data" class="text-center"><%= strRS("vmares_data") %></div>
                        </div>  
                        <%
                               dataAtual = strRS("vmares_data")
                        END IF
                        %>   
                        <div class="row">
                            <div class="col-md-12 text-muted" style="font-size: 11px; border-bottom: 2px solid rgba(193, 193, 193, 0.3);">Adicionada às: <%=FormataHora(strRS("vmares_hora"))%></div>
                                <div class="col-md-12" style="padding-top: 20px;">
                                    <p style="font-size: 20px;"><%=strRS("vmares_titulo")%></p>
                                </div>
                                <div class="col-md-12 text-muted" style="text-align: justify; padding-bottom: 12px;">
                                    <%= LEFT(strRS("vmares_descricao"),400)%><% IF LEN(strRS("vmares_descricao")) > 400 THEN Response.Write " ..." END IF %>
                                </div>
                            <a href="index.asp?noticia=exibe&idnot=<%=strRS("id")%>" id="noticia_link" class="col-md-12 pull-right">+ detalhes</a>
                        </div>
                    <%   
                    strRS.MoveNext
                          loop
                 END IF
            END IF
            %>
            <!-- CODE | noticias -->            
                        
                        
                        
                        
                        
                        
                        
                        
                        
            <!-- CODE | noticias paginação de dados -->
            <nav aria-label="Page navigation">
                <ul class="pagination" id="pagination"></ul>
            </nav>
                        
            <div id="pagination_pag">Page 1</div>
                        
            <script type="text/javascript">
                $('#pagination').twbsPagination({
                    totalPages: 35,
                    visiblePages: 2,
                    onPageClick: function (event, page) {
                        $("#pagination_pag").text('Page ' + page);
                    }
                });
            </script>        
            <!-- CODE | noticias paginação de dados -->

Só a paginação de dados abaixo agora, sabem como posso incrementar o TWBS com ASP e BANCO DE DADOS?
procurei na net, não encontrei nada em asp, alguém te dicas?
agradeço.

Obrigado até aqui.
 

Share this post


Link to post
Share on other sites

Complementando, para outro caso....
consegui utililzar assim:

 

<%
'cria uma data ficticia, a qual nunca poderá repetir
data = "1900-01-01"
 
'faz um loop
DO WHILE NOT bootPAG.EOF
   
   Response.Write "<div class=""col-xl-12 col-lg-12 col-md-12 col-md-12 col-xs-12"">"
		
   		'se não for igual, imprime... e vai fazendo o laço até o fim...
        IF NOT data = bootPAG("data") THEN
           Response.Write "<div class=""box-noticias-data-min mb-2"">"& FormataDataBrasileiro(bootPAG("data")) &"</div>"
           data = bootPAG("data")
        END IF

   Response.Write "<div class=""box-noticias-titulo-min""><a href=""?idnot="& bootPAG("id") &"#topo"">"& TrataAcentos(bootPAG("titulo")) &"</a></div>"
   Response.Write "</div>"

bootPAG.MoveNext
        Loop
%>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By thiagocola
      Eu peguei esse JSON no site do iFood e estou com dúvida de como converter esses 8 números em Time (HH:mm).
      Já tentei timestamp mas 8 dígitos é muito pequeno e já tentei ticks.
      Estou usando C#.
       
      "openingHours": [
                        {
                          "dayOfWeek": "MONDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "TUESDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "WEDNESDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "THURSDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "FRIDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "SATURDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "SUNDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        }
                      ]
       
      Estou achando que tenho que fazer algum tipo de multiplicação ou em última hipótese, esse valor é algum identificador interno do sistema deles.
       
      Tentei converter assim:
       
      DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
       
      var openingTime = dtDateTime.AddSeconds(13500000).ToLocalTime();
      // {06/06/1970 03:00:00}
       
      var closingTime = dtDateTime.AddSeconds(97140000).ToLocalTime();
      // {29/01/1973 05:20:00}
       
      Mas os valores que retornam não fazem sentido pra mim.
       
    • By mamotinho
      Olá, estou com problemas, minha data está atualizando porém eu clico em um produto ele exibe o tempo sem atualizar . quando eu mudo de produto ele mostra os dois valores exemplo
      Produto 1: tem duraçao de: 1 dia e 13:023 PM
      Produto 2: tem duraçao de: 0 dia e 23:023 PM

      Quando eu clico no produto 1 ele exibe normalmente, porém quando mudo para o produto 2 ele fica atualizando o valor do dia do produto 1 e do produto 2 sempre mudando.
      segue abaixo como está o codigo

      JavaSCRIPT
       
      function anooo(mes,dia,h,m){ var mess = mes; var dias = dia; var hss = h; var mss = m; // Set the date we're counting down to var countDownDate = new Date(""+mess+" "+dias+", 2020 "+hss+":"+mss+":00").getTime(); // Update the count down every 1 second var x = setInterval(function() { // Get today's date and time var now = new Date().getTime(); // Find the distance between now and the count down date var distance = countDownDate - now; // Time calculations for days, hours, minutes and seconds var dayss = Math.floor(distance / (1000 * 60 * 60 * 24)); var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); var seconds = Math.floor((distance % (1000 * 60)) / 1000); document.getElementById("days").innerHTML = dayss; document.getElementById("hrs").innerHTML = hours; document.getElementById("minus").innerHTML = minutes; document.getElementById("secs").innerHTML = seconds; this.remove(countDownDate); // If the count down is over, write some text if (distance < 0) { clearInterval(x); } }, 1000); } AQUI É O CHAMADO:
       
      <? if($result->Discount>=1){ $Month = date('M', strtotime($result->DateDiscount)); $Days = date('d', strtotime($result->DateDiscount)); $Hours = date('H', strtotime($result->DateDiscount)); $Minutes = date('i', strtotime($result->DateDiscount)); echo "<script>anooo('".$Month."','".$Days."','".$Hours."','".$Minutes."')</script>"; //echo "<script>alert('".$Month."')</script>"; ?> <ul class="time_sell remain_time"> <li> <dl> <dt class="blind">남은시간</dt> <dd> <span class='n_date day' id='days'></span> <span class='date'>일</span> <span class='n_time hour' id='hrs'></span> <span class='n_time minute' id='minus'></span> <span class='n_time second' id='secs'></span> <div id="countdown"></div> </dd> </dl> </li> </ul> <? } ?> eu já tentei de tudo mais sempre que mudo de produto ele exibe a data dos produtos anteriores em loop. a cada atualização do setInterval
    • By lucianfpaula
      Olá bom dia, estou com um problema, eu estou tentando fazer um select que me retorne dados de uma tabela com data igual a data do dia ou maior mas não estou conseguindo, só consigo trazer datas maiores que a do dia, mas datas igual ao dia não consigo, estou usando o seguinte select
      SELECT * FROM tabela WHERE id = 1 AND dataTermino >= NOW()
       
      Não sei se tem a ver com a data do servidor 
    • By lucianfpaula
      Olá, saudações a todos, eu tenho a seguinte duvida: preciso identificar se a data do dia esta dentro de um intervalo de datas, nos temos o seguinte sql
      "SELECT * FROM tb_cadastro WHERE datCadastro BETWEEN '2010/09/10' AND '2011/10/10'".
      O que preciso é saber se a data do dia este nesse intervalo. Tipo
      Data 01 = 01/02/2020
      Data 02 = 10/02/2020
      Data 03 = 05/02/2020
      se Data 03 estiver no intervalo de Data 01 e Data 02 faça algo se não faça nada
    • By RAFAEL HENRIQUE DE SOUZA
      Boa noite pessoal. 

      Estou com um problema e não consegui sair do lugar, tenho uma tabela de documentos (id, doc, path, ext, id_cli) e outra tabela de controle contendo o Id_documento, tipo_doc, data_criacao.
      Preciso informar se o documento listado ja foi substituído.
      A regra é a seguinte: Para o documento de mesmo cliente e mesmo tipo ele compara as datas alimentando a coluna de status para o mais recente e substituído par os demais.
      Segue o código para ajuda.

      create table `tb_documento` (
          `ID_DOCUMENTO` int (11),
          `DOCUMENTO` varchar (60),
          `PATH` varchar (60),
          `EXTENCAO` varchar (15),
          `ID_CLIENTE` int (11)
      ); 
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('1','TESTE1','C:\\DOCUMENTOS','PDF','1');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('2','TESTE DOC','C:\\DOCUMENTOS','XLS','1');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('3','ASLJDBASIHD','C:\\DOCUMENTOS','XLS','1');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('4','EXTREME','C:\\DOCUMENTOS','PDF','1');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('5','TESTE NOVO','C:\\DOCUMENTOS','DOC','2');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('6','WIN','C:\\DOCUMENTOS','DOC','2');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('7','XTREME','C:\\DOCUMENTOS','PDF','2');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('8','SAMSUNG','C:\\DOCUMENTOS','XLS','2');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('9','CPD','C:\\DOCUMENTOS','DOC','3');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('10','QQWAS','C:\\DOCUMENTOS','PDF','4');
      -------------------------------------------------------------------------------------
      create table `tb_tipo_documento` (
          `ID_TIPO` int (11),
          `ID_DOCUMENTO` int (11),
          `DATA_CRIACAO` datetime 
      ); 
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('1','1','2019-06-23 18:18:15');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('3','2','2019-06-24 18:19:52');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('2','3','2019-06-19 18:20:22');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('4','9','2019-06-11 18:31:21');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('4','10','2019-06-07 18:31:44');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('5','5','2019-06-26 18:32:15');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('1','4','2019-06-03 18:32:21');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('1','6','2019-06-01 18:36:17');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('3','7','2019-06-14 18:36:35');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('1','8','2019-06-20 18:36:59');
      ------------------------------------------------------------------------

      Modelo de resultado esperado:
      SELECT 
          TD.*,
          TTP.ID_TIPO,
          TTP.DATA_CRIACAO,
          '' AS 'STATUS'
      FROM 
          TB_DOCUMENTO TD
      LEFT JOIN 
          TB_TIPO_DOCUMENTO TTP ON TTP.ID_DOCUMENTO = TD.ID_DOCUMENTO;
      ----------------------------------------------------------------------
      Pessoal muito obrigado, qualquer ajuda é bem vinda!
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.