Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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>"
%>
No caso acima você está tentando armazenar o valor de um único campo.
Pq não deu certo? Posta a mensagem de erro completa.