mmm no me funciona bien :S... el codigo me quedo asi:
Código:
' hacemos una selección con el producto indicado (esta devolverá un único registro)
' se supone que anteriormentes has declarado dbs (Database) y rst (Recordset)
Set DATOS = DB.OpenRecordset("SELECT Avangard, ATT FROM DATOS Where DESTINO = '" & Txt1.Text & "'")
' creamos una matriz de dos dimensiones
Dim x As Integer, i As Integer
For x = 0 To DATOS.Fields.Count - 1
' si el valor del campo es mayor que , incrementamos la variable
If DATOS.Fields(x) > 0 Then i = i + 1
Next x
Dim a() As Variant
' redimensionamos la matriz bidimensional al número de campos no nulos
ReDim a(i - 1, 1)
' el primer índice de la matriz es 0
x = -1
For i = 0 To DATOS.Fields.Count - 1
If DATOS.Fields(i) > 0 Then
' el valor del campo es mayor que cero, lo cargamos en la matriz
x = x + 1
a(x, 0) = DATOS.Fields(i).Name
a(x, 1) = DATOS.Fields(i)
End If
Next i
Dim b As Boolean, aux As Integer, s As String
' ordenamos la matriz de menor a mayor
b = True
While b
b = False
For i = 1 To UBound(a)
If a(i - 1, 1) > a(i, 1) Then
s = a(i - 1, 0)
aux = a(i - 1, 1)
a(i - 1, 0) = a(i, 0)
a(i - 1, 1) = a(i, 1)
a(i, 0) = s
a(i, 1) = aux
b = True
End If
Next i
Wend
' el primer elemento de la matriz es el mas barato
MsgBox "El distribuidor mas barato es " & a(0, 0) & vbCrLf & _
"con un precio de " & a(0, 1)
no se si lo puse mal o que pero cuando uno de los 2 proveedores tiene un valor en 0 funciona bien.. pero si los 2 tienen algun precio me devuelve el nombre del que esta primero (avangard) y el precio q me da es 0 :S..
posiblemente hize algo mal yo pero no se :S..
EDIT:
Bueno ya se me ocurrio otra forma para hacerlo y no es tan complicada como la q pense primero xD. lo que hago es lo siguiente:
Código:
Private Sub Grilla_Click()
'Declaro variables para cada proveedor
Precio1 = Grilla.TextMatrix(Grilla.RowSel, 3)
Precio2 = Grilla.TextMatrix(Grilla.RowSel, 4)
Txt1.Text = Grilla.TextMatrix(Grilla.RowSel, 1)
'Si la variable es mayor a 0 las agrego a un listbox q esta oculto en el formulario (por cuestiones esteticas :P)
'El formulario tiene la opcion Sorted = True para que me ordene de menor a mayor los valores
If Precio1 > 0 Then
List1.AddItem Precio1
End If
If Precio2 > 0 Then
List1.AddItem Precio2
End If
'Selecciono el primer registro del list y comparo el valor con la primer variable
If List1.List(0) = Precio1 Then
'si los valores son iguales me va a mostrar en un textbox el nombre de proveedor al que corresponde la variable
'en este caso Precio1 = Avangard
Txt2.Text = "Avangard"
Txt3.Text = List1.List(0)
'dsp de imprimir los valores le hago un .clear al listbox para poder fijarme
'en otros regristros sin tener q cerrar y volver a abrir el form
List1.Clear
Else
'Si la primer comparacion es falsa paso a comparar la siguiente variable:
'en este caso la variable Precio2 = AT&T
If List1.List(0) = Precio2 Then
Txt2.Text = "AT&T"
Txt3.Text = List1.List(0)
List1.Clear
'Para cuando quiera agregar mas proveedores lo unico q voy a tener q hacer es asignar mas variables
'y anidar otro if dsp de un else y listo
End If
End If
Bueno.. esa es la forma que se me ocurrio. capaz que haga esto nomas porque no entiendo nada de matrices y si se me presenta algun problema con el codigo voy a tener que estar pendiente del foro siempre :S..
pero seguramente voy a volver con otra duda :D....
Y como siempre Gracias a todos!
P.D: Fijense si les gusta mi idea y me lo dicen :P