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

colocar em ordem alfabética


marvi

Pergunta

Olá pessoal,

Tenho essa:

SELECT * FROM convenios 


 <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber14">
      <tr>
       <% Dim contador 
  contador = 1
  maxcol =4
do while not rsprincipal.eof%> 
<% convenios= replace(rsprincipal("convenios"),chr(10),"<br>")
             %>
  <%  
    if contador <= maxcol then %>
        <td >
        <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber15">
          <tr>
            <td width="100%">
            <font face="Arial Narrow" color="#616161" style="font-size: 11pt">
            <%=convenios%></font></td>
          </tr>
        </table>
        </td>
         <% 
    contador = contador + 1
  rsprincipal.movenext 
    else %> 

      </tr>
      <% 
  contador = 1

    end if 
loop 

do while contador <= maxcol %> 
<%  contador = contador + 1 
loop %>
    </table>

e ele conta em ordem alfabética na horizontal e gostaria que fosse na vertical.

Tipo:

Ele estar assim:

A, B, C

D, E, F

E queria que ficasse assim:

A D G

B E

C F

A tabela acima, em ASP, faz ele contar em horizontal, mas a orderm alfabética não é em vertical, tem como?

Desde já, agradeço

Marcelo

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

O meu ASP acima ele ler de forma horizontal os dados que vem do banco

tipo:

A B C D

E F G H

Assim estar certo, ok...Mas, queria que além de continuar na horizontal, como já estar, quero que ele conte em ordem alfabética mas na vertical e exibindo as informações na horizontal.

Como ele já faz o processo na horizontal, só falta aí colocar em ordem alfabética na vertical, tipo:

A D G

B E H

C F

Percebeu?

Link para o comentário
Compartilhar em outros sites

  • 0

vixi... muito mais facil tu fala que quer ordenar o registros verticalmente....

bom a tabela funciona assim...

linha= <tr></tr>
coluna=<td><td>

bom basicamente você tera de alterar o esquema de prencher as tr e td antes do loop

Link para o comentário
Compartilhar em outros sites

  • 0

Quero ordenar a orderm alfabética verticalmente, mas mostrando os registros horizontalmente. Não quero colocar o registro na vertical, mas quero manter ele na horizontal e só ficando na vertical a ordem alfabética, entendeu?

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

  • 0

Eu não entendi...

pra mim só tem duas formas:

a b c d e f g h i j k l ...

ou

a

b

c

d

e

f

g

h

i

j

k

l

...

é claro que apartir disso podem surgir milhoes de variáveis... mas osprincipios vão ser sempre os mesmos...

Entenda pra que serve uma tag <TR> e pra que serve uma <TD>... pesquise no google... depois conseguirás resolver seu problema!

[]'s Rafael Spilki

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

  • 0

Rafael,

É assim que quero:

a

b

c

d

e

f

g

h

i

j

k

l

Mas aí deveria não só descer e sim em uma determinada quantidade ir para o lado

a i

b j

c k

d l

e

f

g

h

Entendeu? O sistema que tenho vai pro lado, horizontal, mas não conta em ordem alfabética como no exemplo acima e sim como o exemplo que você me falou: a b c d e f g h i j k l ...

Mas quero assim:

a i

b j

c k

d l

e

f

g

h

Veja que acima tem duas linhas verticais, uma do lado da outra...

Veja na pratica: http://www.labanalise.com/convenios.asp

Ele vai contando e gerando de lado, horizontal as informações do banco, mas a ordem alfabética estar na horizontal também, quero que a ordem, só a ordem vá na vertical, mas as distriuição do conteudo continue indo para horizontal e caindo para proxima linha como no exemplo.

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

  • 0
Ninguém sabe como resolver?

Fico grato!

já tentou usar um contadorzinho de registros basico?

Por exemplo :

Coloque um loop em cada coluna, esse loop só mostraria na tela caso o contador da coluna anterior for = a 10 ou 15 registros (whatever)....

Não sei se consegui explicar direito....rs

E acho que esse é um metodo meio workaround... :P

Link para o comentário
Compartilhar em outros sites

  • 0

Mas não quero mudar a ordem da impressão dos produtos que é horizontal, quero mudar a orderm alfabética dos protuos para vertical, tipo:

1)Asa, 2)bandeira,

3)Cadeira, dados

e o certo é:

1)Asa, Cadeira

2)bandeira, dados

Veja que a exibição é horizontal ainda, mas a ordem alfabética dos nomes dos produtos é vertical, você ler de cima para baixo e não da esquerda para direita, entende?

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

  • 0

Eu faria dois loops e dois selects... não vejo como fazer isso de outra forma...

o segundo select teria que ficar dentro do primeiro, onde se faria uma consulta dinâmica ao último id da passada do recordset e apartir desse número eu pegaria o "primeiro maior" no segundo select para jogar dentro do segundo loop...

Nunca tentei algo parecido!

Link para o comentário
Compartilhar em outros sites

  • 0

poisé... não é isso não! vou tentar esboçar alguma coisa... não prometo! mas se tiver um tempinho faço um exemplo do que eu pensei pra você ver... de qualquer forma seria só um teste... nunca tentei nada igual! Se rolar... esse final de semana tento alguma coisa por aqui...

abração

Link para o comentário
Compartilhar em outros sites

  • 0

Rafael, muito obrigado mesmo

Tive tentando uns métodos e dessa forma parece que a orderm funciona, contudo não consigo exibir as informações do banco:

<table border="1" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber14">
            <%
            'Sempre declare todas as variáveis que for usar. Pode parecer que não, mas isso ajuda na performance.
            Dim objConn, rsPrincipal, arrConvenio
            Dim qtdColunas, qtdRegistros, qtdLinhas, registroAtual
            Dim Linha, Coluna

            'Abre conexão com o banco de dados
            Set objConn = Server.CreateObject("ADODB.Connection")
            Set rsPrincipal = Server.CreateObject("ADODB.RecordSet")
            objConn.Open strProvider 'Coloque o seu provider aqui !!

            'Adiciona ao RecordSet Principal os dados retornados e ao Contador, a quantidade de registros da tabela,
            'para saber a quantidade de linhas a serem criadas.
            Set rsPrincipal = objConn.Execute("Select * From Convenios")
            'Transforma o RecordSet em um Array, neste caso com apenas uma coluna arr(0, x), porém se a tabela tiver mais de uma coluna é possível
            'tratar a linha e coluna do array, ex.: arr(x, y)
            arrConvenio = rsPrincipal.GetRows
            
            'Destruindo objetos que não serão mais usados na página, a partir daqui tudo que é usado na página já está em memória e não depende mais
            ' do banco de dados
            rsPrincipal.Close
            objConn.Close
            Set rsPrincipal = Nothing
            Set objConn = Nothing
            
            'Define o máximo de colunas, atribui a quantidade de registros retornados, define a quantidade de linhas "tr's" que serão criadas.
            'Por padrão os arrays começam com índice 0, então, como queremos 4 colunas, o qtdColunas deve ser 3 e assim por diante.
            qtdColunas = 3
            qtdRegistros = UBound(arrConvenio, 2)
            qtdLinhas = CInt(qtdRegistros / (qtdColunas + 1))
            registroAtual = 0

            'Para cada linha até o máximo de linhas descoberto acima
            For Linha = 0 To qtdLinhas
                'Atribui à variável de controle de posição o número da linha atual e escreve o início da linha
                registroAtual = Linha
                Response.Write("<tr>")
                'Para cada coluna, começando do zero até o número de colunas indicados, testa e escreve o valor da célula
                For Coluna = 0 To qtdColunas
                %>
                    <td>
                        <font face="Arial Narrow" color="#616161" style="font-size: 11pt">
                            <%
                                'Se o registro atual for menor ou igual a quantidade de registros, escreve o array na posição do registroAtual
                                If registroAtual <= qtdRegistros Then
                                    Response.Write(arrConvenio(0, registroAtual))
                                'Senão coloca um espaço em branco na célula
                                Else
                                    Response.Write("&nbsp;")
                                End If
                            %>
                        </font>
                    </td>
                <%
                    'Acrescenta ao registro atual seu próprio valor mais a quantidade real de linhas para ser a nova posição do array.
                    'Dessa forma sempre o valor da posição do array será compatível com o numero de linhas. 
                    registroAtual = registroAtual + (qtdLinhas + 1)
                Next
                Response.Write("</tr>")
            Next

            %>
        </table>

Fiz o processo, testei e rodou..

rsPrincipal.Close

objConn.Close

Set rsPrincipal = Nothing

Set objConn = Nothing

Como é que vou exibir em baixo as informações que vem do banco então? Tipo: rsprincipal("convenios") ou arrConvenio("convenios"), para imprimir na página?

Aí que estar... mesmo assim coloque o close no fim da página e não imprimi do banco... acusando:

0x800A0009)

Subscrito fora do intervalo

/labanalise/convenios.asp, line 94

94: Response.Write(arrConvenio("convenios"))

entendeu?

Não sei... Mas, eu tinha que fazer algo tipo arrConvenio1 = rsprincipal("convenios") e antes do arrConvenio = rsPrincipal.GetRow, senão, ele não permite e assim ele só exibie um nome do banco e não todos, fica repetido, tipo: CASSI, CASSI, CASSI... entende? Acho que tinha que ter um eof aí

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...