tengo 2 tablas
- articulos (nombre, codigo)
- precios (codigo, precio) cada articulo puede tener de 0 a n
precios
con un select SQL yo logro este resultado:
articulo precio
MOUSE OPTICO 12
MOUSE OPTICO 15
MOUSE OPTICO 17
TECLADO 21
TECLADO 25
TECLADO 29
PERO, como logro armar un cursor para que muestre los datos así:
MOUSE OPTICO 12 15 17
TECLADO 21 25 29
desde ya gracias, saludos,
Gerardo.
VFP tiene el asistente para este tipo de consultas, debes indicar la
tabla, los campos que formaran las columnas, los campos que formaran
las filas, etc.
Saludos
Fabricio
Te dejo una solución muy poco elegante. En el siguiente código "cur1"
hace referencia al cursor en el formato que ya lo conseguiste con el
SELECT:
***** Creación de la estructura del cursor de visualización. *****
SELECT TOP 1 COUNT(cur1.precio) as columnas FROM cur1 GROUP BY nombre
ORDER BY columnas DESC INTO CURSOR c_aux
LOCAL nColumnas as Integer
nColumnas = c_aux.columnas
USE IN c_aux
LOCAL cCursor as String, i as Integer
cCursor = "CREATE CURSOR cursor_visualizacion (nombre c(20)"
FOR i = 1 TO nColumnas
cCursor = cCursor + ", precio" + ALLTRIM(STR(i)) + " n(5,2) default
0"
ENDFOR
cCursor = cCursor + ")"
&cCursor
***** Pasaje de datos del cursor original al cursor de visualización.
*****
SELECT cursor_visualizacion
APPEND BLANK
SELECT cur1
GO TOP
replace nombre WITH cur1.nombre IN cursor_visualizacion
LOCAL campoPrecio as String
i = 1
SCAN
IF (ALLTRIM(UPPER(cur1.nombre)) <>
ALLTRIM(UPPER(cursor_visualizacion.nombre)))
SELECT cursor_visualizacion
APPEND BLANK
replace nombre WITH cur1.nombre IN cursor_visualizacion
SELECT cur1
i = 1
ENDIF
campoPrecio = "precio" + ALLTRIM(STR(i))
replace (campoPrecio) WITH cur1.precio IN cursor_visualizacion
i = i+1
ENDSCAN
SELECT cursor_visualizacion
BROWSE
Espero que te sirva, aunque probablemente la solución que ya te dio
Fabricio sea más eficiente.
Éxitos.
---------------------------------------------------------------------------------------------------