Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => 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


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...


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 (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!¡.
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.