Ir para conteúdo

POWERED BY:

Arquivado

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

Edwilson Curti

Armazenar RecordSet num Array

Recommended Posts

Boa tarde pessoal.

 

Estou trabalhando em ASP Classico e surgiu uma duvida q quero tirar com vcs.

 

Eu tenho a seguinte Query de consulta:

 

'Buscas os Controles na Conta Bancaria da Empresa Logada
strBControl = "SELECT ConBanControle FROM ContaBancaria WHERE EmpCodigo="&Session("Empresa")
Set rsBControl = Server.CreateObject("Adodb.Recordset")
rsBControl.open strBControl, conexao, 1, 3

A query acima retorna varios resultados, 13 para ser mais exato, e todos sao armazenados no recordSet rsBControl.

 

O que eu desejo e armazenar o resultado do RecordSet rsBControl no array controles.

 

Eu tentei assim:

 

a=0
while not(rsBControl.EOF)
								
	 controles(a) =  rsBControl("ConBanControle")

	 a= a+1

	 rsBControl.MoveNext

wend

Mas infelizmente nao deu certo.

 

Alguem ai sabe me dizer como fazer?

 

Aguardo a ajuda de voces. Desde ja, obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso acima você está tentando armazenar o valor de um único campo.

 

Pq não deu certo? Posta a mensagem de erro completa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo, talvez clareie algumas coisas

 

Nos códigos asp, você deve começar a ter o hábito de usar arrays para armazenar dados retornados de SQL, Access, ou qualquer outra query de banco de dados,estaremos colocando recordset (RS) em um array denominado RSArray, isto irá melhorar bem o desempenho.

 

Ao tratar os resultados do banco de dados do ASP no formulário de um recordset (RS), você deve imediatamente colocar o RS em um array e setar RS = Nothing. Isso porque trabalhar com recordsets ocasiona sobrecarga no servidor, especialmente em casos como MoveNext, rs("campo") e rs.RecordCount. É bem mais eficiente definir Array = RS e logo depois destruir o recordset. Agora você tem uma carga bem menor no servidor, e ainda, um desempenho melhor! Abaixo demonstramos um código de acesso seguindo esta teoria:

 

RSArray = RS.getrows
"RSArray é bidimensional agora RSArray(Field, Record)
Numero_de_Campos = Cdbl(UBound(RSArray, 1))
Numero_de_Registros = Cdbl(UBound(RSArray, 2))
For R = 0 to Numero_de_Registros 
	For F = 0 to Numero_de_Campos
		  Response.Write "  " & RSArray(F, R) & "  "
	Next
   Response.Write "<p>"
Next

Aqui está o retorno de nosso exemplo, o layout para retorno de dados que nós usamos:

 

F1, R1 F2, R1 F3, R1 F4, R1

F1, R2 F2, R2 F3, R2 F4, R2

 

Exemplo ASP:

<%
"A conexão é feita normalmente
Set DBConnection = Server.CreateObject("adodb.connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.Mappath("pasta/database.mdb")
DSN = DSN & ";PWD=senha"
DBConnection.Open DSN

Response.Write "Base de Dados aberta <br>"

"Criara uma Query
	SQL = "Select * From Customers Where Country = "Mexico""
"Pega o Record Set
	Set RS = DBConnection.Execute(SQL)

Select Case RS.eof
	Case False
		RSArray = RS.getrows
		"RSArray(Field, Record)
		Numero_de_Campos = Cdbl(UBound(RSArray, 1))
		Numero_de_Registros = Cdbl(UBound(RSArray, 2))%>
			<table border="1" width="300">  
			<%For R = 0 to Numero_de_Registros 
			Response.Write "<tr>" 
			For F = 0 to Numero_de_Campos
				  Response.Write "<td> " & RSArray(F, R) & "</td> "
			Next
		   Response.Write "</tr>"
		Next
		Response.Write "</table>"
	Case True
		Response.Write "Não há registros!"
End Select 

"Agora destruiremos o recordset (RS)
	Set RS = Nothing
Response.Write "<br>Base de dados fechada <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.