Matriz a cursor

Hola Tengo una matriz que necesito pasar a un cursor me podrías ayudar, ya que el problema radica en las dimensiones de la matriz ya que estas varían dependiendo de los datos que maneje en otra tabla; por ejemplo si la tablan de donde voy a seleccionar los datos que van a definir las columnas obtengo 20 registros por lo cual seria el mismo numero de columnas de repente más de repente menos dependiendo de la búsqueda, con las filas es igual, por eso el cursor no lo puedo crear por que no encuentro como definirlo y pasarle los datos, en pocas palabras tengo la matriz y quiero pasarla a un cursor para que me permita manejar los datos con mayor fluidez.

3 respuestas

Respuesta
1
Puedes utilizar el CREATE CURSOR ... FROM ARRAY, donde en el array de referencia especificas los campos que tendrá el cursor
Mira con esto yo lleno la matriz
dimension matriz(X, Y)

for contlinea=1 to X
    for contcolum=1 to Y  
        matriz(contlinea,contcolum)=VALOR
    endform
endform

Después de tener la matriz llena según creo que te entendí yo tendría que hacer esto
CREATE CURSOR micursor FROM ARRAY matriz
si asi es como tu me comentas entonces si te entendi el problema es que me esta marcando error de sintaxis, sabes a que se deba esto o que es lo que estoy haciendo o poniendo mal por que realmente asi como te lo puesi arriba asi es como lo estoy haciendo, incluso el create cursor lo estoy colocando tal cual esta ahi
Así es como debería ser, la primera columna es el nombre del campo, la segunda el tipo, la tercera la dimension y la cuarta las posiciones decimales
Cada fila es un campo distinto
Aunque sea no numérico, poner igual cero (0) en la columna 4
dim valores(3,4)
dimension valores(3,4)
valores (1,1)='codigo'
valores (1,2)='c'
valores (1,3)=10
valores (2,1)='nombre'
valores (2,2)='c'
valores (2,3)=40
valores (3,1)='direccion'
valores (3,2)='c'
valores (3,3)=40
valores (1,4)=0
valores (2,4)=0
valores (3,4)=0
Create cursor prueba from array valores
Brow
Gracias a esos datos que me diste pude entender como funciona el echo de crear un cursor a través de una matriz aun que al principio se me complico por que estaba utilizando la misma matriz con todos mis datos, lo que hice fue creal otra matriz pero que solo tuviera los datos que me dijiste pero con tantas filas como necesitaba tomando como ancho el de la matriz anterior, después de poder crear el cursor solo utilice el appen from array para exportar los datos de mi primera matriz, la verdad antes de que me dieras esa información no tenia ni idea de como trabajar, la verdad te agradezco bastante tu ayuda y tu tiempo, gracias y hasta luego.
Respuesta
1
¿Necesitas manejar una matriz multidimensional?, o no entiendo muy bien lo que deseas hacer, si me explicas con un ejemplo te puedo ayudar
Tengo la matriz de 2 dimensiones la cual atra vez de unos ciclos for la lleno
dimension matriz(X, Y)
for contlinea=1 to X
    for contcolum=1 to Y  
        matriz(contlinea,contcolum)=VALOR
    endform  
endform
con esto lleno la matriz sin problema, ahora necesito pasar dicha matriz a un cursor del cual no tengo el numero exacto de campos por que siempre va a variar dependiendo del valor de "X" y "Y" ya que estos valores se saca de 2 diferentes tablas, y como el numero de columnas siempre va a cambiar no puedo definir un cursor ni  una tabla, ese es mi problema como pasar una matriz que ya esta fijada a un cursor sin la necesidad de definir cada columna que necesita ya que deacuerdo a los datos del mismo programa esta puede seralgo grande en cuestion de filas y columnas.
A ver prueba con este código
STORE 0 TO contlinea, contcolum
valor="ABCDEFGHYJKLMNOPQRSTUVWXYZ"
x=5&& Numero de registros
y=9 && Numero de campos
dimension matriz(X,Y) 
***********************
***Llenamos matriz ***
for contlinea=1 to X 
    for contcolum=1 to Y   
        matriz(contlinea,contcolum)=SUBSTR(valor,contcolum,1) 
    endfor
ENDFOR
***********************
***Creamos archivo ***
CREATE CURSOR cCursor (campo1 C(10)) && Solo para generar el archivo 
FOR n=2 TO y
WAIT WINDOW STR(n)
InField="Campo"+LTRIM(STR(n))
ALTER TABLE cCursor ADD COLUMN &InField C(10)
ENDFOR
************************
***llenamos archivo ***
APPEND FROM ARRAY matriz
Browse
Te agradezco mucho tu ayuda lo resolví de otro modo, pero también cale la forma que tu me diste y también me funciono, gracioso primero sin forma de hacerlo y de un momento a otro 2 formas diferente :P, ironías de la vida, de todos modos te agradezco mucho tu esfuerzo y te doy las gracias por tus respuestas y tu tiempo, y te digo que te mereces una buena puntuación, gracias hasta luego.
Respuesta
-1
¿Me podrías dar un ejemplo de lo que quieres que haga?
Perdo iba a cerrar la pregunta hace más de una semana solo queno encontré como, pero bueno te agradezco tu intención pero ya resolví mi duda solo quería una forma de crear un cursor con POR columnas las cuales se sacarían a partir del numero POR de registros que se designaran al seleccionarlos en una tabla, en otras palabras quería convertir ese numero POR de registros seleccionados en columnas para el cursor, gracias por tu tiempo hasta la próxima.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas