Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/03/2009, 06:03
Avellaneda
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 17 años, 4 meses
Puntos: 37
Respuesta: Comparacion de Columnas

Bueno, estando los campos a comparar en el mismo registro, no creo que sea tan sencillo ni que se pueda hacer con una consulta (¿?).

Se me ocurre que puedes hacer una selección del producto y cargar los campos en un array para después ordenarlos. Sería algo así:

Código vb:
Ver original
  1. ' hacemos una selección con el producto indicado (esta devolverá un único registro)
  2. ' se supone que anteriormentes has declarado dbs (Database) y rst (Recordset)
  3. Set rst = dbs.OpenRecordset("SELECT Distribuidor1, Distribuidor2, Distribuidor3, Distribuidor4 FROM Tabla1 Where Producto = 'Sillas'")
  4. ' creamos una matriz de dos dimensiones
  5. Dim a(3, 1) As Variant, i As Integer
  6. ' la cargamos con el nombre del campo y el precio
  7. For i = 0 To rst.Fields.Count - 1
  8.     a(i, 0) = rst.Fields(i).Name
  9.     a(i, 1) = rst.Fields(i)
  10. Next i
  11.  
  12. Dim b As Boolean, aux As Integer, s As String
  13. ' ordenamos la matriz de menor a mayor
  14. b = True
  15. While b
  16.     b = False
  17.     For i = 1 To UBound(a)
  18.         If a(i - 1, 1) > a(i, 1) Then
  19.             s = a(i - 1, 0)
  20.             aux = a(i - 1, 1)
  21.             a(i - 1, 0) = a(i, 0)
  22.             a(i - 1, 1) = a(i, 1)
  23.             a(i, 0) = s
  24.             a(i, 1) = aux
  25.             b = True
  26.         End If
  27.     Next i
  28. Wend
  29. ' el primer elemento de la matriz es el mas barato
  30. MsgBox "El distribuidor mas barato es " & a(0, 0) & vbCrLf & _
  31.     "con un precio de " & a(0, 1)

Un saludo