Hola
El código anterior falla si el último grupo costa de 1 solo registro, a continuación el código corregido:
Local ldFecha As Date, lcNombres As String
Create Cursor curPivot (Fecha D, Nombres V(250))
Select curFecNom
Scan
lcNombres = ""
ldFecha = curFecNom.Fecha
Do While curFecNom.Fecha = ldFecha
lcNombres = lcNombres + Rtrim(curFecNom.nombre) + ", "
Skip 1
Enddo
Insert Into curPivot Values (ldFecha, Left(lcNombres, Len(lcNombres) - 2))
Skip -1
Endscan
El mismo algoritmo usando SCAN anidados:
Local ldFecha As Date, lcNombres As String
Create Cursor curPivot (Fecha D, Nombres V(250))
Select curFecNom
Scan
lcNombres = ""
ldFecha = curFecNom.Fecha
Scan While curFecNom.Fecha = m.ldFecha
lcNombres = m.lcNombres + Rtrim(curFecNom.nombre) + ", "
Endscan
Insert Into curPivot ;
Values (m.ldFecha, Left(m.lcNombres, Len(m.lcNombres) - 2 ))
Skip -1
Loop
Endscan
Y por último, con DO WHILE anidados:
Local ldFecha As Date, lcNombres As String
Create Cursor curPivot (Fecha D, Nombres V(250))
Select curFecNom
Go Top
lcNombres = ""
ldFecha = curFecNom.Fecha
Do While Not Eof()
Do While curFecNom.Fecha = ldFecha
lcNombres = lcNombres + Rtrim(curFecNom.nombre) + ", "
Skip 1
Enddo
Insert Into curPivot Values (ldFecha, Left(lcNombres, Len(lcNombres) - 2))
lcNombres = ""
ldFecha = curFecNom.Fecha
Enddo
Noten que aquí no es necesario el SKIP -1, es probable que éste sea el codigo más rápido.
Saludos,
Víctor.
Lambaré - Paraguay.