Quiero hacer una consulta en SQL para una aplicación cliente-servidor en Visual FoxPro 7

Trabajo con visual fox pro 7.0, estoy creando una aplicación cliente-servidor y deseo hacer una consulta en SQL, luego de que se ejecuta la consulta me la devuelve en un cursor que tiene 3 columnas(producto, cantidad, ciudad), me gustaría saber como puedo hacer para crear una tabla que contenga la siguiente estructura: cada ciudad sea una columna, en la columna de productos debe discriminar el producto y mostrar la cantidad correspondiente al producto por ciudad, se debe tener en cuenta que la cantidad de columnas depende de la cantidad de ciudades que devuelva la consulta, o sea que no siempre sera igual. Creo que se debe construir una matriz, pero no se como hacerla, ni como introducir los datos de la consulta SQL
Agradezco la ayuda que me pueda prestar

2 Respuestas

Respuesta
1
Recorre tu tabla con scan
Y después usa la macrosustitución y después exporta a excel mira:
cCreaTabla = "CREATE TABLE salida ("
select resultado
scan
cCreaTabla = cCreaTabla + alltrim(resultado.ciudad) + ( c(50), cant"+ alltrim(resultado.ciudad)+" n(3)"
endscan
cCreaTabla = cCreaTabla + ")"
Con esto ya recorrimos la tabla y creamos un estrin que seria algo así
CREATE TABLE salida(cali c(50), cantcali n(3), cartagena c(50), cantcartagena n(3))
En este caso la tabla resultado tenia dos registros las ciudades eran cali y cartagena, con este string ya puedes crea la tabla así:
&cCreaTabla
Esta es la macrosustitución, después llenas la tabla con el contenido deseado...
Y la exportas a Excel(porque esta información es variable no te sirve el reporte de VFP)
select salida
copy to c:\missalidas\salida1 type ("XLS")
Espero darte una pista si tiens alguna duda me comentas
Respuesta
1
Esta es una forma sencilla de pasar los datos de tu cursor a una tabla:
Select tucursor
gnFieldcount = AFIELDS(Matriz)
if gnFieldcount>0 then
Create table TuTabla from array Matriz
endif
Los datos dependen de la forma en que hagas la consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas