Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

thicomp

em código ordenação

Recommended Posts

Por favor, alguém poderia meajudar neste código...

 

 

 

<%

FUNCTION SortArray(varArray)

For i = UBound(varArray) - 1 To 1 Step - 1

MaxVal = varArray(i)

MaxIndex = i

For j = 0 To i

If varArray(j) > MaxVal Then

MaxVal = varArray(j)

MaxIndex = j

End If

Next

If MaxIndex < i Then

varArray(MaxIndex) = varArray(i)

varArray(i) = MaxVal

End If

Next

END FUNCTION

response.write "<html><head><style>a{text-decoration:none;font-family:verdana;}</style></head><body>"

response.write "<br><br><center><table cellpadding=1 cellspacing=1 border=0 width=500>"

response.write "<tr bgcolor='#666666'><td align=center height=35 colspan=2><font face=verdana size=2 color='#ffffff'><b>Usuários</b></font>"

 

 

 

Response.Expires = 0

Response.Buffer = True

session ("it")="usu"

'PAGINAÇÃO DE ARQUIVOS USANDO ARRAY x FSO

Dim iLoop, limite, pagina, totalarq, i, x

Dim vlMaximo, vlMinimo, anterior

Dim ObjFso, ObjArq, ObjPasta, ObjSubPasta

Dim usuario, cor

 

 

 

Set ObjFso = Server.CreateObject("Scripting.FileSystemObject")

Set ObjPasta = ObjFso.GetFolder(server.MapPath("/rel_P_D/Usuarios/"))

 

 

 

limite = 10 ' limite de registros por página

totalarq = ObjPasta.files.count ' total de arquivos encontrados

 

 

 

ReDim arrAvatar((totalarq-1))

Dim y

y = 0

 

 

 

' guardamos cada arquivo dentro de um array

For Each ObjArq in ObjPasta.Files

 

 

 

arrAvatar(y) = left(objArq.Name,3)

y = y + 1

Next

 

 

 

Set ObjPasta = Nothing

Set ObjArq = Nothing

Set ObjFso = Nothing

 

 

 

pagina = Request("pag")

IF pagina = "" Then

IF limite < UBound(arrAvatar) Then

vlMinimo = 0

vlMaximo = (limite-1)

Else

vlMinimo = LBound(arrAvatar)

vlMaximo = UBound(arrAvatar)

End IF

pagina = 1

anterior = ""

Else

vlMinimo = (pagina*(limite-1))+(pagina)

vlMaximo = ((limite-1)*(pagina+1))+((pagina)*1)

IF vlMaximo > UBound(arrAvatar) Then vlMaximo = UBound(arrAvatar)

pagina = pagina + 1

anterior = pagina - 2

IF anterior = 0 Then anterior = ""

End IF

For i = vlMinimo to vlMaximo

if cor= "#d2dfee" then: cor= "#eef3f9" else: cor= "#d2dfee": end if

 

 

 

response.write "<tr bgcolor='"& cor &"'><td height=20 colspan=2><a href=http://rel_P_D/cad1.asp?nome="

response.write arrAvatar(i) &"&org=dt>"

select case arrAvatar(i)

%>

<!--#include file="select.asp"-->

<%

end select

 

 

 

ReDim ArrUsuario(46)

SortArray ArrUsuario

for usuario=1 to UBound(ArrUsuario)

if usuarios<>"" then usuarios=usuarios&","

usuarios=usuario

next

ArrUsuario=split(usuario,",")

 

 

 

response.write ArrUsuario(usuario)

 

 

 

Next

response.write "<tr>"

IF vlMinimo = 0 Then

IF Not (vlMaximo >= (y-1)) Then

End IF

Else

response.write "<td align=left valign=top><a href='ord1.asp?pag="& anterior &"'><img src='img/esq.gif' border=0>anterior</a>"

End IF

IF Not (vlMaximo >= (y-1)) Then

response.write "<td valign=top align=right><a href='ord1.asp?pag="& pagina &"'><img src='img/dir.gif' border=0>próxima</a>"

End IF

response.write "<br><br>"

%>

 

 

O erro retornado (refere-se a linha em vermelho)

 

 

Microsoft VBScript runtime error '800a000d'

 

Type mismatch

 

/rel_P_D/paginacaothi1.asp, line 92

Compartilhar este post


Link para o post
Compartilhar em outros sites

a variavel tem algum valor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No código postado na linha em vermelho:

 

ArrUsuario=split(usuario,",")

Porém não vi no código postado onde você recupera o valor de usuario. Esta variavel usuario que você faz o split esta com null por isso o erro.

 

De onde vemo valor dela? QueryString, form ou session?

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

A variável do usuario entra no sistema através do código do usuário, aí no arquivo "select.asp", inserido pelo "include file", ele faz a verificação do código do usuário com o nome do usuário (o arquivo "select.asp" é um select case com o nome e código do usuário). Aí ele retorna o nome do usuário...Outra coisa, o código está funcionando direitinho, mas o problema é que eu preciso que ele ordene os nomes por letra, já que na tela imprime o nome do usuario, mas na ordem do código do usuário...

Compartilhar este post


Link para o post
Compartilhar em outros sites

porque nao seleciona ja ordenado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A variável do usuario entra no sistema através do código do usuário, aí no arquivo "select.asp", inserido pelo "include file", ele faz a verificação do código do usuário com o nome do usuário (o arquivo "select.asp" é um select case com o nome e código do usuário). Aí ele retorna o nome do usuário...Outra coisa, o código está funcionando direitinho, mas o problema é que eu preciso que ele ordene os nomes por letra, já que na tela imprime o nome do usuario, mas na ordem do código do usuário...

Retorno o seu select ordenado como você deseja...Mas existe o erro de Type mismatch /rel_P_D/paginacaothi1.asp, line 92 que provalvelmente é pro causa q a variavel esta comvalor null.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu tentar explicar melhor...Ele lê um certo diretório, no qual se encontram arquivos txt, nomeados com o código do usuário...Aí ele faz a comparação e imprime na tela o nome referente ao código.Sem um método de ordenação, ele imprime na tela os nomes dos usuários, mas na sequencia do código dele...você teria alguma sugestão de como fazer isso???... Não vejo outra alternativa a não ser colocar os nomes dos usuários em um array e ordená-los antes de imprimir...Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu tentar explicar melhor...Ele lê um certo diretório, no qual se encontram arquivos txt, nomeados com o código do usuário...Aí ele faz a comparação e imprime na tela o nome referente ao código.Sem um método de ordenação, ele imprime na tela os nomes dos usuários, mas na sequencia do código dele...você teria alguma sugestão de como fazer isso???... Não vejo outra alternativa a não ser colocar os nomes dos usuários em um array e ordená-los antes de imprimir...Abçs

Com é nomenclatura usada no arquivo TXT?Qual servidor de banco de dados você esta utilizando1t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os arquivos txt estão nomeados com o código do usuário...O programa pega o código do usuário, faz a compração deste código com o arquivo "select.asp", que é inserido pelo "include file" e retorna na tela o nome do usuário...Não estou utilizando BD para realizar isso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

po cara, se o nome dos arkivos estão nomeados por código e no CONTEUDO destes arkivos estão os nomes dos usuários, nao tem jeitose você ker organizar por nome (alfabeticamente) vai ter q salvar os valores em um array mesmo[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara, é o que estou tentando fazer...Colocar os nomes de cada usuário em um array, ordená-los dentro deste array e depois imprimir na tela os nomes...Mas não estou conseguindo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara, é o que estou tentando fazer...Colocar os nomes de cada usuário em um array, ordená-los dentro deste array e depois imprimir na tela os nomes...Mas não estou conseguindo

Cara execute o seguiten código e post aqi:
response.write "usuario = " & usuario & "<br>"
t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aí, beleza?Ele me retorna normal usuario=nome_do_usuarioSó que me retorna desordenadoO problema é que ele não reconhece o array "arrUsuario"

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom cara, primeiramente tu vai ter q desenvolver uma função do tipo "SORT" pra ordenar alfabeticamente- Cria um array- Abre o arkivo- Salva o nome do usuario no array- Usa a função de ordenação alfabética pra rearrumar o arraypronto!!Em relação a essa organização alfabetica, você pode pegar as letras e passar pra numeros (usando o codigo ASCII) e reorganizar numericamente e depois voltar pros nomes (nunca eskecendo de deixar tudo maiusculo ou minusculo pra fazer a comparação)acho q assim eh ateh mais facil, pois você vai encontrar facilmente funções pra ordenar "n" números, do tipo SORT (nem sei se no ASP jah tem!! :P )tenta ae!!!nao tenho tido mto tempo pra programar, si nao eu ateh tentava pra tu...[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, por favor, se puderem dar uma olhada neste código

 

Ele lê td certinho, só que na hora de imprimir, ele não faz a função "BubbleSort"... Se eu mando imprimir a matriz, sem a formatação da "table", ele me retorna os nomes dos usuários um na frente do outro, sem ao menos um espaço separando-os. Tipo assim: nome1nome2nome3...

 

Se eu deixar a linha que está em vermelho, chamando a função BubbleSort, me retorna o seguinte erro:

 

Response object error 'ASP 0106 : 80020005'

 

Type Mismatch

 

/Cristalia/rel_P_D/paginacaothi1_2.asp, line 0

 

An unhandled data type was encountered.

 

 

<!-- #include file = "menu.css" --><%@LANGUAGE="VBSCRIPT"%><% Function BubbleSort( matriz )dim i, j, auxFor i = 0 To UBound(matriz)	For j = 0 To UBound(matriz)		If( matriz(i) < matriz(j) ) Then			aux = matriz(j)			matriz(j) = matriz(i)			matriz(i) = aux		End If	NextNextBubbleSort = matrizEnd Functionresponse.write "<html><head><style>a{text-decoration:none;font-family:verdana;}</style></head><body>"response.write "<br><br><center><table cellpadding=1 cellspacing=1 border=0 width=500>"response.write "<tr bgcolor='#666666'><td align=center height=35 colspan=2><font face=verdana size=2 color='#ffffff'><b>Usuários</b></font>"Response.Expires = 0  Response.Buffer  = True session ("it")="usu"'PAGINAÇÃO DE ARQUIVOS USANDO ARRAY x FSODim iLoop, limite, pagina, totalarq, i, xDim vlMaximo, vlMinimo, anteriorDim ObjFso, ObjArq, ObjPasta, ObjSubPastaDim usuario, corSet ObjFso = Server.CreateObject("Scripting.FileSystemObject")Set ObjPasta = ObjFso.GetFolder(server.MapPath("/Cristalia/rel_P_D/Usuarios/"))limite  = 14	  ' limite de registros por páginatotalarq = ObjPasta.files.count  ' total de arquivos encontradosReDim arrAvatar((totalarq-1))Dim yy = 0' guardamos cada arquivo dentro de um arrayFor Each ObjArq in ObjPasta.Files  arrAvatar(y) = left(objArq.Name,3)y = y + 1 NextSet ObjPasta = NothingSet ObjArq = NothingSet ObjFso = Nothingpagina = Request("pag")IF pagina = "" ThenIF limite < UBound(arrAvatar) Then  vlMinimo = 0  vlMaximo = (limite-1)Else  vlMinimo = LBound(arrAvatar)  vlMaximo = UBound(arrAvatar)End IFpagina = 1anterior = ""ElsevlMinimo = (pagina*(limite-1))+(pagina)vlMaximo = ((limite-1)*(pagina+1))+((pagina)*1)IF vlMaximo > UBound(arrAvatar) Then vlMaximo = UBound(arrAvatar)pagina = pagina + 1anterior = pagina - 2IF anterior = 0 Then anterior = ""End IFFor i = vlMinimo to vlMaximoif cor= "#d2dfee" then: cor= "#eef3f9" else: cor= "#d2dfee": end ifselect case arrAvatar(i)%><!--#include file="select.asp"--><%end selectmatriz = split(usuario,";")for x=0 to UBound(matriz)BubbleSort(matriz)[color="#FF0000"]'response.write BubbleSort ( matriz )[/color]response.write "<tr bgcolor='"& cor &"'><td height=20 colspan=2><a href=http://sintese17/Cristalia/rel_P_D/cad1.asp?nome="&arrAvatar(i)&">"&matriz(x)&"</a>"nextNextresponse.write "<tr>"IF vlMinimo = 0 ThenIF Not (vlMaximo >= (y-1)) Then  End IFElseresponse.write "<td align=left valign=top><a href='paginacaothi1_2.asp?pag="& anterior &"'><img src='img/esq.gif' border=0>anterior</a>"End IFIF Not (vlMaximo >= (y-1)) Then  response.write "<td valign=top align=right><a href='paginacaothi1_2.asp?pag="& pagina &"'><img src='img/dir.gif' border=0>próxima</a>"End IFresponse.write "<br><br>"%>

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.