Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: magomi en 23 Octubre 2009, 19:29 pm



Título: Menor valor en una columna de un Msflexgrid
Publicado por: magomi en 23 Octubre 2009, 19:29 pm
Hola necesito una pequeña ayudita----
Resulta q tengo un msflexgrid y necesito saber o mejor dicho calcular el menor valor en una de las columnas para poder asociarlo a otros valores de la misma fila... (Tramo A-B   por ejemplo)....  tengo la idea con un for pero no me sirve a lo mejor lo estoy planteando mal

Código:
For i = 1 To msflexgrid1.rows -1
Dim s As Integer
s = i + 1
If Val(MSFlexGrid1.TextMatrix(i, 5)) < Val(MSFlexGrid1.TextMatrix(s, 5)) Then
Text2.Text = MSFlexGrid1.TextMatrix(i, 0) & " - " & MSFlexGrid1.TextMatrix(i, 1)
Else
Text2.Text = MSFlexGrid1.TextMatrix(s, 0) & " - " & MSFlexGrid1.TextMatrix(s, 1)
End If
'Next i

Espero me ayuden.. gracias de antemano


Título: Re: Menor valor en una columna de un Msflexgrid
Publicado por: MCKSys Argentina en 23 Octubre 2009, 23:02 pm
Podrias probar con esto...

Código:
Dim menor As Integer
dim iAux as Integer
menor = 65537 'este deberia ser el mayor valor posible
For i = 0 To msflexgrid1.rows - 1
    iAux = Val(MSFlexGrid1.TextMatrix(i, 5))
    If iAux < Val(MSFlexGrid1.TextMatrix(i+1, 5)) Then
        menor = iAux
    end if
Next i

Al finalizar el for, "menor" es el menor valor hallado en la flex.

Saludos!




Título: Re: Menor valor en una columna de un Msflexgrid
Publicado por: magomi en 24 Octubre 2009, 02:17 am
Gracias por responder... MCKSys trate con lo que me dijiste y me dio un error de desbordamiento... entonces cambien la variable menor a Long
y ahora me tira Error 381 en tiempo de ejecucion el subindice esta fuera del intervalo..y me sale esta linea resaltada:

(http://img407.imageshack.us/img407/9167/asd1.th.png) (http://img407.imageshack.us/i/asd1.png/)


Título: Re: Menor valor en una columna de un Msflexgrid
Publicado por: BlackZeroX en 24 Octubre 2009, 04:30 am
Usa un metodo de ordenamiento por ejemplo el de burbuja...

P.D.: todo esos if que se ven en ti imagen seguro pueden reducirse con   And


Título: Re: Menor valor en una columna de un Msflexgrid
Publicado por: magomi en 24 Octubre 2009, 04:47 am
MM no estoy familiarizado con el ordenamiento de burbuja... lei algo pero no lo entiendo muy bien.. podrias darme algun ejemplo¿


Título: Re: Menor valor en una columna de un Msflexgrid
Publicado por: BlackZeroX en 24 Octubre 2009, 04:56 am
unos post mas abajito esta el metodo se lo postee a wsh o wsk a no recuerdo su nombre ya te lo pongo ok.

Edito:

Código
  1. Public Enum EnuListOrder
  2.    AcendetOrder = 0
  3.    DecendentOrder = 1
  4. End Enum
  5.  
  6. Public Sub Sorted(ByRef Item() As String, Optional Order As EnuListOrder = DecendentOrder)
  7.    Dim Itm As String
  8.    Dim J As Double
  9.    Dim i As Double
  10.    Dim mcount As Long
  11.    mcount = UBound(Item)
  12.  
  13.    If Order = AcendetOrder Then
  14.        For J = 0 To mcount
  15.            For i = 0 To mcount
  16.                If Item(i) > Item(i + 1) Then
  17.                    Itm = Item(i + 1)
  18.                    Item(i + 1) = Item(i)
  19.                    Item(i) = Itm
  20.                End If
  21.            Next i
  22.        Next J
  23.    Else
  24.        For J = 0 To mcount - 2
  25.            For i = 0 To mcount - 2
  26.                If Item(i) < Item(i + 1) Then
  27.                    Itm = Item(i + 1)
  28.                    Item(i + 1) = Item(i)
  29.                    Item(i) = Itm
  30.                End If
  31.            Next i
  32.        Next J
  33.    End If
  34. End Sub
  35.  

Dulces Lunas!¡.


Título: Re: Menor valor en una columna de un Msflexgrid
Publicado por: seba123neo en 24 Octubre 2009, 06:06 am
Hola, con recorrer el flexgrid te alcanza, pero debes recorrerlo bien, el ejempo anterior esta mal porque al recorrer la grilla le suma 1 a la fila actual y cuando llega a la ultima y le suma 1 ...pues esa fila no existe y tira error, lo correcto es ir guardando en una variable temporal los valores y asi compararlos, pero tambien podes guardarlos en un array y despues ordenarlo con el metodo que quieras y listo.

saludos.