Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/08/2009, 08:19
Avatar de GabrielAizcorbe
GabrielAizcorbe
 
Fecha de Ingreso: mayo-2009
Ubicación: En la luna.
Mensajes: 30
Antigüedad: 15 años
Puntos: 3
Respuesta: While - Recorrer un recordset

Hola Laufwerk, no entiendo bien que quieres hacer, pero si lo que quieres es pintar los registros de modo de "agruparlos por colores" pues aqui te paso un "pseudo-codigo" que lo he probado y de hecho funciona, da lo mismo lo que hagas con los datos de la columna dos (Col2), que los pintes que los guardes que los marques que los sumes tu haras con ellos lo que quieras, pero este ejemplo te da una idea clara de que hacer.



"Código del Bucle"

Código PHP:
LastRecord CurrentRecord

While CurrentRecord <> EOF
    PaintCol 1
    
While CurrentRecord <> EOF And LastRecord CurrentRecord
        PaintCol 2
        MoveNext
    Wend
    LastRecord 
CurrentRecord
Wend 
En todo caso si quieres ver funcionar ese bucle aquí te pego el código completo que es un macro de excel, debes poner los siguientes datos (los números nada más) en las
columnas A y B de una hoja excel.



"Datos para la planilla Excel"

Cita:
A | B
--------
1 1
1 2
1 3
2 1
3 1
3 2
luego te vas a la seccion de macros (Alt - F11) te creas un Modulo y pegas todo este código



"Código completo de los Bucles de Ejemplo para Macros de Excel"

Código PHP:
Const Verde 43
Const Naranjo 44
Const EOF ""
'
Global i As Integer
Global Alternar As Boolean

Sub Bucle()
'
Dim LastRecord As String
SetVariables

LastRecord 
CurrentRecord

While CurrentRecord <> EOF
    
If LastRecord CurrentRecord Then
        PaintCol 1
        PaintCol 2
    
Else
        
Alternar Not Alternar
        LastRecord 
CurrentRecord
        PaintCol 1
        PaintCol 2
    End 
If
    
MoveNext
Wend

End Sub

Sub Bucle2
()

Dim LastRecord As String
SetVariables

LastRecord 
CurrentRecord

While CurrentRecord <> EOF
    PaintCol 1
    
While CurrentRecord <> EOF And LastRecord CurrentRecord
        PaintCol 2
        MoveNext
    Wend
    LastRecord 
CurrentRecord
    Alternar 
Not Alternar
Wend

End Sub

Private Sub MoveNext()
    
1
    Range
("A" i).Select
End Sub

Private Function CurrentRecord() As String
    CurrentRecord 
ActiveCell.FormulaR1C1
End 
Function

Private 
Sub PaintCol(col As Integer)

If 
col 1 Then
    Range
("A" i).Select
ElseIf col 2 Then
    Range
("B" i).Select
Else
    
GoTo Error
End 
If

With Selection.Interior
    
.ColorIndex IIf(AlternarVerdeNaranjo)
    .
Pattern xlSolid
End With

Error
:

End Sub

Private Sub SetVariables()
    
Alternar True
    i 
1
    Range
("A" i).Select
End Sub 

Luego te vuelves a Excel y ejecutas el Macro (Alt-F8), encontraras DOS BUCLES, Bucle y Bucle2 hacen cosas diferentes, yo creo que el que a ti te va a servir es el Bucle2 que es el que de hecho te pegué aquí. El exceso de código que ves en funciones y subs los cree nada mas para usar "nombres de función" como MoveNext, CurrentRecord etc de modo que te resultara mas familiar de entender que la terrible notación que tiene excel.

Espero que te sirva y cualquier duda que tengas me avisas!!

Saludos