• Domingo 22 de Diciembre de 2024, 18:15

Autor Tema:  Matriz 2 Dimensiones  (Leído 2414 veces)

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Matriz 2 Dimensiones
« en: Jueves 19 de Julio de 2007, 20:40 »
0
Buenas, tengo el siguiente problema, espero me puedan ayudar.

tengo un codigo similar a la siguiente:
(el codigo este es solo para el ejemplo!)
Código: Text
  1.  
  2.      Dim Matriz() As String
  3.      Dim x As Integer
  4.     
  5.      For x = 0 To 10
  6.         ReDim Preserve Matriz(x, 1)
  7.         
  8.         Matriz(x, 0) = "col1 " & x
  9.         Matriz(x, 1) = "col2 " & x        
  10.  
  11.      Next
  12.  
  13.  

cuando redimensiona la primera vez no hay problema pero cuando hace la segunda vuelta me tira un error "subscript out of range".

alguien sabe por que???

yo necesitaria una matriz que contenga (suponiendo que se vean como filas y columnas) dos columnas y se vaya agregando una fila cada vez que pasa por el redim.

saludos!

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Matriz 2 Dimensiones
« Respuesta #1 en: Jueves 19 de Julio de 2007, 21:31 »
0
Si le saco el "preserve" funciona perfecto, pero obviamente no me guarda los valores que tenia antes.

firme

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Matriz 2 Dimensiones
« Respuesta #2 en: Jueves 19 de Julio de 2007, 22:01 »
0
cuando hice algo parecuido al tuyo tambien me salia error por q
ReDim Preserve Matriz(x, 1) estaba dentro del for pero cuando lo sacaba afuera del for si corria bien pero claro q yo ya sabia cuales eran las dimensiones al poner dentro del for se borran los datos ya corridos ala primera vuelta y es por eso q me salia un error bueno espero q te sirva de algo


Dim Matriz() As String

    Dim x As Integer
   
    For x = 0 To 10
       ReDim Preserve Matriz(x, 1)
       
       Matriz(x, 0) = "col1 " & x
       Matriz(x, 1) = "col2 " & x        

    Next

firme

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Matriz 2 Dimensiones
« Respuesta #3 en: Jueves 19 de Julio de 2007, 22:18 »
0
mira con tu codigo se borra los datos  supuestamente guardados en la matriz pero al poner asi como esta sale error pero al quitarle el "Preserve" si funciona pero tu problema seria q los datos se borran ya q al hacer un msgbox  ala matriz
MsgBox Matriz(6, 0) no sale por q se borraron los datos al redimensionar dentro del for
Dim Matriz() As String

Dim x As Integer

For x = 0 To 10
ReDim Preserve Matriz(x, 1)

Matriz(x, 0) = "col1 " & x
Matriz(x, 1) = "col2 " & x

----------------------------------------------------------------
provando pues creo q mejor seria q lo hicieras asi ya q los datos no se borrarian
Option Explicit
Dim Matriz() As String
Dim x As Integer

Private Sub Command1_Click()
ReDim Preserve Matriz(11, 1)
    For x = 0 To 10
       'ReDim Matriz(x, 1)
       Matriz(x, 0) = "col1 " & x
       Matriz(x, 1) = "col2 " & x
MsgBox Matriz(0, 0)
    Next
End Sub

espero q te sirva

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Matriz 2 Dimensiones
« Respuesta #4 en: Jueves 19 de Julio de 2007, 22:57 »
0
Creo que ReDim Preserve solo permite cambiar el sub índice derecho.
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

fap1603

  • Miembro MUY activo
  • ***
  • Mensajes: 135
    • Ver Perfil
Re: Matriz 2 Dimensiones
« Respuesta #5 en: Viernes 20 de Julio de 2007, 02:45 »
0
a ver, en ves de cero a 10, usa Ubound(matriz) y Lbound(matriz)

Asi:

For x = Lbound(matriz) To Ubound(matriz)

recuerda tambien que el cero de la matriz existe y que en el incremento que tu haces no debe sumar una mas, en el for si lo hace, asi que redimensiona asi:

Redim Preserve Matriz(Ubound(Matriz)+1)

asi incrementas siempre solo sobre el final.

Espero eso te ayude. es un poco complejo, pero funciona bien una ves pillado.
Saludos,

Francisco Ayala Pinazo
Lima - Perú

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Matriz 2 Dimensiones
« Respuesta #6 en: Viernes 20 de Julio de 2007, 14:21 »
0
Yo puse un for de 0 a 10 pero por poner un ejemplo.
La realidad es que yo necesito sacar de una tabla de una base de datos ciertos campos (un nombre y una cantidad)
La cosa es que yo se que siempre van a ser esos dos datos, pero no se si en la tabla va a haber 10 registros o 100.

En mi aplicacion yo estoy usando un while que recorre un recordset con los datos que necesito.

Igual ahora que lo pienso (lamento decirles que no se me habia ocurrido) puedo usar directamente el recordset para lo que necesito.

gracias igual!
saludos.