Sobre una respuesta para Héctor

23/06/2005 - 16:25 por dargento | Informe spam
Hola!
Me contestaste a una pregunta acerca de validación de usuarios e
excel, con base de datos access.
Me pusiste un codigo que me funcionaba perfectamente, entonces yo h
querido reutilizar ese codigo para otra cosa y no lo consigo.
Tu codigo:
-
Public Autorizados, Reg As Byte, Tabla As String
Public Const ArchivoMDB As String = "C:\Documents an
Settings\dear00\Mis documentos\Manuales\Practicas\prueba.mdb"
Sub ImportaUsuarios()
Dim Conexion As ADODB.Connection, Registros As ADODB.Recordset, Fila A
Long
Tabla = "usuarios"
Set Conexion = New ADODB.Connection
Conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="
ArchivoMDB & ";"
Set Registros = New ADODB.Recordset
With Registros
.Open Tabla, Conexion, adOpenStatic, adLockOptimistic, adCmdTable
On Error Resume Next: .MoveFirst: On Error GoTo 0
ReDim Autorizados(.RecordCount, .RecordCount): Reg = 0
Do While Not .EOF: On Error Resume Next
Autorizados(Reg, 0) = .Fields("Login")
Autorizados(Reg, 1) = .Fields("Clave")
Reg = Reg + 1: On Error GoTo 0: .MoveNext
Loop
End With
Registros.Close: Set Registros = Nothing
Conexion.Close: Set Conexion = Nothing
End Sub

Vale?Pues yo lo que quiero,mas bien lo que necesito,es, poder recoge
en un array como haces tu en Autorizados, el resultado de una consult
a la base de datos.
Yo tengo una tabla con varios campos,pero hago una consulta de
campos.
No consigo pasar esos datos, es d ecir x filas de 7 campos cada una,
un array, y lo hago como tu:
Mi codigo-
Private Sub cmdContinuar1_2_Click()
Dim eolica1 As String
Dim fotovoltaica1 As String

fotovoltaica1 = cboFotovoltaica1.Value
eolica1 = cboEolica1.Value
If eolica1 = "SI" And fotovoltaica1 = "SI" Then

conexionBD
With rs
.Ope
"Selectnombre,rendimiento,potencia,area,coeficiente_t,coeficiente_p,tensio
from paneles where potencia >= " & demanda1, cn, , , adCmdText

On Error Resume Next
.MoveFirst
On Error GoTo 0
ReDim paneles(rs.RecordCount, rs.RecordCount)
Reg = 0
Do While Not .EOF
On Error Resume Next
paneles(Reg, 0) = .Fields("Login")
paneles(Reg, 1) = .Fields("Clave")
'paneles(Reg, 2) = .Fields("potencia")
'paneles(Reg, 3) = .Fields("area")
'paneles(Reg, 4) = .Fields("coeficiente_t")
'paneles(Reg, 5) = .Fields("coeficiente_p")
'paneles(Reg, 6) = .Fields("tension")
Reg = Reg + 1
On Error GoTo 0
.MoveNext
Loop
End With
desconexionBD
frmDim1_3.cboPaneles1.AddItem (paneles(Reg, 0))
frmDim1_3.txtRendimiento1 = paneles(0, 1)
Else
MsgBox "nada"
End If
End Sub--
La variable paneles esta como public paneles as byte en un modulo.
Me estoy volviendo loca, porque hasta ahora estoy pasando lo
resultados a una hoja excel y ocultandola, pero a efectos de ususari
no queda bien, yo necesitaria hacerlo como mas oculto sin necesidad d
poner los datos en una hoja excel.
Gracias y perdon por todo el rollo que he metid

dargent
dargento's Profile: http://www.msusenet.com/member.php?userid4
View this thread: http://www.msusenet.com/t-187055939
 

Leer las respuestas

#1 Héctor Miguel
23/06/2005 - 18:12 | Informe spam
hola, Desiree !

... acerca de validacion de usuarios... con base de datos access.
... pusiste un codigo que me funcionaba... he querido reutilizar ese codigo para otra cosa y no lo consigo [...]
... necesit... recoger en un array como haces tu en Autorizados, el resultado de una consulta a la base de datos.
... tabla con varios campos, pero hago una consulta de 7 campos.
... pasar esos datos, es decir x filas de 7 campos cada una, a un array [...]
... [mas lineas del codigo 'evaluado'] ...
ReDim paneles(rs.RecordCount, rs.RecordCount)

... [mas lineas del codigo 'evaluado'] ...
paneles(Reg, 0) = .Fields("Login")
paneles(Reg, 1) = .Fields("Clave")
'paneles(Reg, 2) = .Fields("potencia")
'paneles(Reg, 3) = .Fields("area")
... [mas lineas del codigo 'evaluado'] ...
La variable paneles esta como public paneles as byte en un modulo.
... ahora estoy pasando los resultados a una hoja excel y ocultandola
... necesitaria hacerlo como mas oculto sin necesidad de poner los datos en una hoja excel.



-> [asi... 'a simple vista']... lo que alcanzo a 'detectar' son dos puntos que pudieran ser 'causantes' de algun 'fallo'...
1) el hecho de que estas declarando la variable con un 'tipo de datos' byte [public paneles as byte]
lo que 'significa' [para el codigo] que la variable 'espera recibir' elementos numericos entre 0 y 255 <= OJO
[y que] le debe estar ocasionando 'conflictos' ya que los datos 'que entran' ->incluyen textos<- [entre otros] :(
-> te sugiero que al declararla NO le asignes un tipo de datos [por omision asumira que seran de tipo 'Variant'] ;)
2) al usar una estructura de 'bloques With' [With rs] se asume que existe un objeto 'padre' [rs] y por lo tanto...
en las lineas siguientes [dentro del bloque] toda propiedad [o sub-objeto] 'se emparenta' iniciando con un punto
[no los veo en las sentencias 'MoveFirst' y 'MoveNext'] -?-
3) tienes sub-procedimientos para la des/conexion a la BD [conexionBD y desconexionBD], por lo tanto...
el codigo supone/espera/... que el objeto RecordSet [rs] sea tambien declarado como 'Public'...
Y ->se establezca una referencia a el<- [p.e.] con una instruccion del tipo Set rs = ... -?-
-> [dicho sea 'de paso'...] al ReDim[ensionar] la variable 'diamica' puedes 'recortar' el numero de filas_registros/columnas_campos
[p.e.] si vas a utilizar n_filas_registros POR 7_columnas_campos usa la siguiente instruccion...
ReDim paneles(rs.RecordCount, 7)

[creo que] ajustando los puntos anteriores... debiera funcionar como esperas :) :)
en caso contrario... comentas?
saludos,
hector.

Preguntas similares