Menor valor en una columna de un Msflexgrid

Iniciado por magomi, 23 Octubre 2009, 19:29 PM

0 Miembros y 1 Visitante están viendo este tema.

magomi

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


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

MCKSys Argentina

Podrias probar con esto...


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!


MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


magomi

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:



BlackZeroX

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
The Dark Shadow is my passion.

magomi

MM no estoy familiarizado con el ordenamiento de burbuja... lei algo pero no lo entiendo muy bien.. podrias darme algun ejemplo¿

BlackZeroX

#5
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 (vb) [Seleccionar]

Public Enum EnuListOrder
    AcendetOrder = 0
    DecendentOrder = 1
End Enum

Public Sub Sorted(ByRef Item() As String, Optional Order As EnuListOrder = DecendentOrder)
    Dim Itm As String
    Dim J As Double
    Dim i As Double
    Dim mcount As Long
    mcount = UBound(Item)

    If Order = AcendetOrder Then
        For J = 0 To mcount
            For i = 0 To mcount
                If Item(i) > Item(i + 1) Then
                    Itm = Item(i + 1)
                    Item(i + 1) = Item(i)
                    Item(i) = Itm
                End If
            Next i
        Next J
    Else
        For J = 0 To mcount - 2
            For i = 0 To mcount - 2
                If Item(i) < Item(i + 1) Then
                    Itm = Item(i + 1)
                    Item(i + 1) = Item(i)
                    Item(i) = Itm
                End If
            Next i
        Next J
    End If
End Sub


Dulces Lunas!¡.
The Dark Shadow is my passion.

seba123neo

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.


La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson