Elementos en una matríz |
Responder |
Autor | |
emiliove
Administrador Unido: 16/Junio/2009 Localización: Mexico Estado: Sin conexión Puntos: 5694 |
Tema: Elementos en una matríz Enviado: 14/Septiembre/2019 a las 19:35 |
Buenas Tardes a todos Lo que pretendo es meter Elementos a una Matríz, de una dimensión del estilo: Dim n(0 To 7) As Double n(0) = 12.344 n(1) = 12.345 n(2) = 12.346 n(3) = 12.354 n(4) = 12.355 n(5) = 12.356 Pero no se hasta que numero va a llegar, y los tomo de un subformulario mas o menos así:
Y efectivamente me da el resultado, pero como es variable quiero asignar yo el valor aquí: Dim arrIVA(4) As Variant poder poner el valor de contar-1 Lo hice también con Getrows y me da el resultado pero de dos dimensiones y no se como hacer que sea de una sola dimensión, para poder usarlo. Saludos y buen fin de semana.
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14734 |
Enviado: 14/Septiembre/2019 a las 20:05 |
A lo mejor se me escapa algo pero...¿no te vale un ReDim?
Dim arrIVA() As variant ReDim arrIVA(Me.SubDetalle.Form.RecordsetClone.RecordCount) Un saludo
|
|
guarracuco
Moderador Unido: 24/Abril/2004 Localización: EEUU Estado: Sin conexión Puntos: 3239 |
Enviado: 15/Septiembre/2019 a las 05:07 |
Prueba esto. Solo cambia el nombre de tu tabla. Sub rows()
Dim db As Database, rs As DAO.Recordset, rows As Variant, ivaArr(), row As Integer, col As Integer, q As Integer Set db = CurrentDb Set rs = db.OpenRecordset("select * from [table1];") rs.MoveLast: rs.MoveFirst rows = rs.getrows(rs.RecordCount) rs.Close Set rs = Nothing db.Close Set db = Nothing If IsArray(rows) And UBound(rows) > 0 Then q = UBound(rows, 2) ' la columna dos, indica la cantidad de registros ReDim Preserve ivaArr(q + 1) 'si la cantidad de registros es grande, utiliza un objeto dictionary (arreglo indexado) Dim ivaObj As Object Set ivaObj = CreateObject("scripting.dictionary") For row = 0 To UBound(rows, 2) For col = 0 To UBound(rows, 1) 'suponiendo que el campo IVA es el tercer campo Debug.Print rows(col, row) If col = 2 Then ivaArr(row) = rows(col, row) 'agregando al dictionary ivaObj.Add row, rows(col, row) End If Next Next 'comprobando que el arreglo iva tiene valores y su recorrido If IsArray(ivaArr) And UBound(ivaArr) > 0 Then For row = 0 To UBound(ivaArr) - 1 Debug.Print "iva(" & row + 1 & ") :" & ivaArr(row) Next End If 'recorriendo el dictionary If IsObject(ivaObj) And ivaObj.count > 0 Then For Each itm In ivaObj.keys Debug.Print ivaObj(itm) Next End If End If End Sub |
|
guarracuco
Moderador Unido: 24/Abril/2004 Localización: EEUU Estado: Sin conexión Puntos: 3239 |
Enviado: 15/Septiembre/2019 a las 05:08 |
El Preserve se utiliza cuando el arreglo ya tiene informacion y deseas conservarla. En este caso no es necesaria.
|
|
emiliove
Administrador Unido: 16/Junio/2009 Localización: Mexico Estado: Sin conexión Puntos: 5694 |
Enviado: 18/Septiembre/2019 a las 21:14 |
Hola a todos Xavi, no se te escapa nada y con ReDim funciona perfectamente. Carlos sigo con tu función y es muy interesante sigo en estudio. Por lo pronto gracias a ambos y podemos cerrar. Saludos.
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |