Ir para conteúdo

POWERED BY:

Arquivado

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

Edson L. Zimmermann

[Resolvido] Array Dinâmico com Banco de Dados

Recommended Posts

Bom dia a Todos.

 

Preciso puxar os dados de uma tabela e utiliar array para listá-los na tela então pensei preciso fazer um loop não só de registros mais no nome da variável que receberá o loop por ex:

nome1="João"
nome2="maria"
nome3="teste"
e por ai vai...

 

tentei fazer da seguinte forma mais confesso que embaralhou um pouco a cabeça:

 

set listar = Server.CreateObject("adodb.recordset")
sql = "select * from produtos order by prod_id desc"
listar.open sql,conex, 3,3

dim total
total = listar.recordcount

dim nome()
for x = 0 to total
   O Problema está aqui não entendo o que preciso fazer nessa parte.
next

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pesquisa por getRows

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se é isso :::

 

NumNome = 0

Do until rs.eof

response.write "nome "&NumNome&"= "&rs("nome")

rs.MoveNext : loop : NumNome + 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara você consegue resolver seu problema utilizando Redim e Preserve. Pode-se declarar um array cujo tamanho é alterado durante a interpretação do script. Para tal, basta declarar o array com Dim sem informar a quantidade de elementos. Depois deve-se utilizar a declaração ReDim para determinar o número de elementos. Caso seja necessário redimensionar o array, utiliza-se novamente a declaração ReDim. Se houver a necessidade de preservar o conteúdo do array a ser redimensionado, utiliza-se a declaração ReDim Preserve.

 

Dim MeuArray()
MeuArray(0)= "Lineu Antonio de Lima Santos"
MeuArray(1)=12.95 
ReDim Preserve MeuArray(2)
MeuArray(2)=0909 
No seu caso você vai utilizar em conjunto com o for

 

Dim MeuArray()
for x = 0 to total
   ReDim Preserve MeuArray(total)
   MeuArray(total) = 1 + total
next

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se é isso :::

 

NumNome = 0

Do until rs.eof

response.write "nome "&NumNome&"= "&rs("nome")

rs.MoveNext : loop : NumNome + 1

 

Olá, seguinte, alterei a sua sugestão para o meu código ficou assim:

 

Nome = 0
Do until listar.eof
response.write "nome "&Nome&"= "&listar("prod_nome") 
listar.MoveNext : loop : Nome + 1 

Infelizmente aparece um erro na tela:

 

Tipo de erro:
Erro de tempo de execução do Microsoft VBScript (0x800A000D)
Tipos incompatíveis: 'Nome'
/happy/testeload2.asp, line 15

Obrigado pela ajuda até aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta esse código:

 

set listar = Server.CreateObject("adodb.recordset")
sql = "select * from produtos order by prod_id desc"
listar.open sql,conex, 3,3

dim nomes

while not listar.eof
   'jogando os valores para dentro de uma variável e escolhendo um separador, que no caso foi !@# por segurança (será difícil uma frase ou qualquer que seja sua pesquisa conter esse caracteres em sequência
   'não esqueça de colocar o nome do teu campo aqui no lugar de "campo".
   nomes = nomes & listar("campo") & "!@#"
   listar.movenext
wend

'retirando o último !@# para não existir um último registro em branco
nomes = left(nomes, (len(nomes)-3))

'tranformando em Array
nomes = split(nomes, "!@#", -1, 1)

pode usar agora o array nomes normalmente

ex:

response.write nomes(0)

Compartilhar este post


Link para o post
Compartilhar em outros sites

GetRows

 

p=rs.GetRows(2,0)
Armazena os registros em uma variável (no caso P) em forma de Array. Onde está 2 é quantidade de registros que é para armazenar. Onde está 0 indica em qual registro é para iniciar.

 

Para ver os valores armazenados basta utilizar o FOR. p(coluna, linha)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara você consegue resolver seu problema utilizando Redim e Preserve. Pode-se declarar um array cujo tamanho é alterado durante a interpretação do script. Para tal, basta declarar o array com Dim sem informar a quantidade de elementos. Depois deve-se utilizar a declaração ReDim para determinar o número de elementos. Caso seja necessário redimensionar o array, utiliza-se novamente a declaração ReDim. Se houver a necessidade de preservar o conteúdo do array a ser redimensionado, utiliza-se a declaração ReDim Preserve.

 

Dim MeuArray()
MeuArray(0)= "Lineu Antonio de Lima Santos"
MeuArray(1)=12.95 
ReDim Preserve MeuArray(2)
MeuArray(2)=0909 
No seu caso você vai utilizar em conjunto com o for

 

Dim MeuArray()
for x = 0 to total
   ReDim Preserve MeuArray(total)
   MeuArray(total) = 1 + total
next

Valeu pela ajuda amigo, quase deu certo: a resposta na tela foi a seguinte:

&nome0= &nome1= &nome2=

Só falta jogar o valor dos campos junto agora...eu imagino que seja no meio do loop mais sinceramente não sei como fazer. imagino que seja algo do tipo:

 

Dim MeuArray()
for x = 0 to total
   ReDim Preserve MeuArray(total)
   MeuArray(total) = 1 + total + listar("nome")
next

Repito acho que seja algo desse tipo, muito obrigado pela ajuda até aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

NumNome = 1
Do until rs.eof
	response.write "nome "&NumNome&"= "&rs("nome")&"<br>"
NumNome = NumNome + 1 : rs.MoveNext : loop

Este script retornará o seguinte resultado ::

 

nome1="João"

nome2="maria"

nome3="teste"

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta esse código:

 

set listar = Server.CreateObject("adodb.recordset")
sql = "select * from produtos order by prod_id desc"
listar.open sql,conex, 3,3

dim nomes

while not listar.eof
   'jogando os valores para dentro de uma variável e escolhendo um separador, que no caso foi !@# por segurança (será difícil uma frase ou qualquer que seja sua pesquisa conter esse caracteres em sequência
   'não esqueça de colocar o nome do teu campo aqui no lugar de "campo".
   nomes = nomes & listar("campo") & "!@#"
   listar.movenext
wend

'retirando o último !@# para não existir um último registro em branco
nomes = left(nomes, (len(nomes)-3))

'tranformando em Array
nomes = split(nomes, "!@#", -1, 1)

pode usar agora o array nomes normalmente

ex:

response.write nomes(0)

Perfeito, funcionou redondo!!!

 

Muito obrigado pela ajuda.

 

 

tenta esse código:

 

set listar = Server.CreateObject("adodb.recordset")
sql = "select * from produtos order by prod_id desc"
listar.open sql,conex, 3,3

dim nomes

while not listar.eof
   'jogando os valores para dentro de uma variável e escolhendo um separador, que no caso foi !@# por segurança (será difícil uma frase ou qualquer que seja sua pesquisa conter esse caracteres em sequência
   'não esqueça de colocar o nome do teu campo aqui no lugar de "campo".
   nomes = nomes & listar("campo") & "!@#"
   listar.movenext
wend

'retirando o último !@# para não existir um último registro em branco
nomes = left(nomes, (len(nomes)-3))

'tranformando em Array
nomes = split(nomes, "!@#", -1, 1)

pode usar agora o array nomes normalmente

ex:

response.write nomes(0)

Perfeito, funcionou redondo!!!

 

Muito obrigado pela ajuda.

 

Ou melhor,faltou um detalhe que passou despercebido, tenho mais do que três resgistros na tabela e olha como apareceu o resultado:

 

&nome0=Cadeira &nome1=dedo &nome2=casa

Ou seja falta o restante...

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

tenta esse código:

 

set listar = Server.CreateObject("adodb.recordset")
sql = "select * from produtos order by prod_id desc"
listar.open sql,conex, 3,3

dim nomes

while not listar.eof
   'jogando os valores para dentro de uma variável e escolhendo um separador, que no caso foi !@# por segurança (será difícil uma frase ou qualquer que seja sua pesquisa conter esse caracteres em sequência
   'não esqueça de colocar o nome do teu campo aqui no lugar de "campo".
   nomes = nomes & listar("campo") & "!@#"
   listar.movenext
wend

'retirando o último !@# para não existir um último registro em branco
nomes = left(nomes, (len(nomes)-3))

'tranformando em Array
nomes = split(nomes, "!@#", -1, 1)

pode usar agora o array nomes normalmente

ex:

response.write nomes(0)

Perfeito, funcionou redondo!!!

 

Muito obrigado pela ajuda.

 

 

tenta esse código:

 

set listar = Server.CreateObject("adodb.recordset")
sql = "select * from produtos order by prod_id desc"
listar.open sql,conex, 3,3

dim nomes

while not listar.eof
   'jogando os valores para dentro de uma variável e escolhendo um separador, que no caso foi !@# por segurança (será difícil uma frase ou qualquer que seja sua pesquisa conter esse caracteres em sequência
   'não esqueça de colocar o nome do teu campo aqui no lugar de "campo".
   nomes = nomes & listar("campo") & "!@#"
   listar.movenext
wend

'retirando o último !@# para não existir um último registro em branco
nomes = left(nomes, (len(nomes)-3))

'tranformando em Array
nomes = split(nomes, "!@#", -1, 1)

pode usar agora o array nomes normalmente

ex:

response.write nomes(0)

Perfeito, funcionou redondo!!!

 

Muito obrigado pela ajuda.

 

Ou melhor,faltou um detalhe que passou despercebido, tenho mais do que três resgistros na tabela e olha como apareceu o resultado:

 

&nome0=Cadeira &nome1=dedo &nome2=casa

Ou seja falta o restante...

 

Vou postar o código todo pra ficar mais fácil:

 

<%@ LANGUAGE="VBSCRIPT"%>
<!--#include file="conex.asp"-->
<%
set listar = Server.CreateObject("adodb.recordset")
sql = "select * from produtos order by prod_id desc"
listar.open sql,conex, 3,3
%>
<%
dim total
total = listar.recordcount

dim nomes
while not listar.eof   

nomes = nomes & listar("prod_nome") & "!@#"   
listar.movenext
wend
nomes = left(nomes, (len(nomes)-3))
nomes = split(nomes, "!@#", -1, 1)

%>
<% for i = 0 to total %>
&nome<% response.Write(i)%>=<%response.Write(nomes(i))%>
<% next %>

Apareceu o seguinte erro:

 

Tipo de erro:
Erro de tempo de execução do Microsoft VBScript (0x800A0009)
Subscrito fora do intervalo: '5'
/happy/testeload2.asp, line 26

Tá quase lá parece.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver da seguinte maneira claro com a ajuda dos amigos:

 

<%@ LANGUAGE="VBSCRIPT"%>
<!--#include file="conex.asp"-->
<%
set listar = Server.CreateObject("adodb.recordset")
sql = "select * from produtos order by prod_id desc"
listar.open sql,conex, 3,3
%>
<%
dim total
total = listar.recordcount -1 'Aqui está o detalhe...

dim nomes
while not listar.eof   
'jogando os valores para dentro de uma variável e escolhendo um separador, que no caso foi !@# por segurança (será difícil uma frase ou qualquer que seja sua pesquisa conter esse caracteres em sequência   
'não esqueça de colocar o nome do teu campo aqui no lugar de "campo".   
nomes = nomes & listar("prod_nome") & "!@#"   
listar.movenext
wend
'retirando o último !@# para não existir um último registro em branco
nomes = left(nomes, (len(nomes)-3))
'tranformando em Array
nomes = split(nomes, "!@#", -1, 1)

%>
<% for i = 0 to total %>
&nome<% response.Write(i)%>=<%response.Write(nomes(i))%>
<% next %>



Obrigado a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza, parabens, kker coisa posta ae...

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.