Discussion:
modificar un cursor
(demasiado antiguo para responder)
Julian Cañon - Zue Ltda
2006-06-21 18:14:56 UTC
Permalink
Hola foro, mi problema es el siguiente:
de forma dinámica requiero agregar campos a un cursor que he creado mediante
la sentencia create cursor de la siguiente forma
AFIELDS( laCampos, THIS.tabla )

lcCur = "cur_" + THIS.tabla

CREATE CURSOR ( lcCur ) FROM ARRAY laCampos

al querer hacer un
Alter table ( lcCur ) add column prueba C (12)
me dice que no es valida la operación sobre el objeto cursor, si después de
esto yo al cursor por línea de comando le hago un modify structure y le
agrego un campo si lo hace.

Lo que he notado es que antes de intentar modificar la estructura del cursor
voy a la ventana de sesion de datos me desabilita el botón de propiedades
para en cursor y después de hacer el modify structure si lo habilita, que
puedo hacer??

gracias por todo
Julian Cañon - Zue Ltda
2006-06-21 18:20:56 UTC
Permalink
Post by Julian Cañon - Zue Ltda
de forma dinámica requiero agregar campos a un cursor que he creado
mediante la sentencia create cursor de la siguiente forma
AFIELDS( laCampos, THIS.tabla )
lcCur = "cur_" + THIS.tabla
CREATE CURSOR ( lcCur ) FROM ARRAY laCampos
al querer hacer un
Alter table ( lcCur ) add column prueba C (12)
me dice que no es valida la operación sobre el objeto cursor, si después
de esto yo al cursor por línea de comando le hago un modify structure y le
agrego un campo si lo hace.
Lo que he notado es que antes de intentar modificar la estructura del
cursor voy a la ventana de sesion de datos me desabilita el botón de
propiedades para en cursor y después de hacer el modify structure si lo
habilita, que puedo hacer?? uso vfp 9.0 sp1
gracias por todo
Alberto
2006-06-21 20:55:08 UTC
Permalink
Los cursores son de lectura, no se pueden modificar.

Lo que tienes que hacer es un CREATE TABLE en vez de CREATE CURSOR.

Recuerda que cuando cierras el cursor el fichero desaparece, pero cuando
cierras una tabla el fichero se queda en el disco hay que borrarlo.
Post by Julian Cañon - Zue Ltda
de forma dinámica requiero agregar campos a un cursor que he creado
mediante la sentencia create cursor de la siguiente forma
AFIELDS( laCampos, THIS.tabla )
lcCur = "cur_" + THIS.tabla
CREATE CURSOR ( lcCur ) FROM ARRAY laCampos
al querer hacer un
Alter table ( lcCur ) add column prueba C (12)
me dice que no es valida la operación sobre el objeto cursor, si después
de esto yo al cursor por línea de comando le hago un modify structure y
le agrego un campo si lo hace.
Lo que he notado es que antes de intentar modificar la estructura del
cursor voy a la ventana de sesion de datos me desabilita el botón de
propiedades para en cursor y después de hacer el modify structure si lo
habilita, que puedo hacer?? uso vfp 9.0 sp1
gracias por todo
Alberto
2006-06-22 20:01:11 UTC
Permalink
Los cursores son de lectura, no se pueden modificar.

Lo que tienes que hacer es un CREATE TABLE en vez de CREATE CURSOR.

Recuerda que cuando cierras el cursor el fichero desaparece, pero cuando
cierras una tabla el fichero se queda en el disco hay que borrarlo.
Post by Julian Cañon - Zue Ltda
de forma dinámica requiero agregar campos a un cursor que he creado
mediante la sentencia create cursor de la siguiente forma
AFIELDS( laCampos, THIS.tabla )
lcCur = "cur_" + THIS.tabla
CREATE CURSOR ( lcCur ) FROM ARRAY laCampos
al querer hacer un
Alter table ( lcCur ) add column prueba C (12)
me dice que no es valida la operación sobre el objeto cursor, si después
de esto yo al cursor por línea de comando le hago un modify structure y
le agrego un campo si lo hace.
Lo que he notado es que antes de intentar modificar la estructura del
cursor voy a la ventana de sesion de datos me desabilita el botón de
propiedades para en cursor y después de hacer el modify structure si lo
habilita, que puedo hacer?? uso vfp 9.0 sp1
gracias por todo
Luis María Guayán
2006-06-22 20:31:30 UTC
Permalink
Post by Alberto
Los cursores son de lectura, no se pueden modificar.
Los cursores pueden ser de lectura/escritura
--
Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos
Esparta Palma
2006-06-22 22:59:27 UTC
Permalink
Post by Alberto
Los cursores son de lectura, no se pueden modificar.
Los cursores creados con CREATE CURSOR si se pueden modificar, no sé
porqué aseguras esto (y los de SELECT-SQL también, agregándo la cláusula
READWRITE). De hecho CREATE TABLE debería utilizárse únicamente si
deseas que ese cursor (que para VFP le encantan los cursores) sea
persistente, no veo ningún otro motivo para el cuál volver al antiguo
esquema de creo-tabla-después-la-borro si para eso está CREATE CURSOR.

Julian, he hecho una prueba completa y no presenta ningún error:

CREATE CURSOR Test (iid int)
IF AFIELD(laFields,"Test") > 0
CLOSE TABLES ALL
lcCursor = "Test2"
CREATE CURSOR (lcCursor) FROM ARRAY laFields
DISPL STRUCT
ELSE
Messagebox("Error al leer estructura")
ENDIF

Podrías enviarnos un código de reproducción y el error exacto que te
está marcando?
--
¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º

Espartaco Palma Martínez
SysOp http://www.PortalFox.com
México D.F.
MoBlogs!
http://weblogs.golemproject.com/esparta/
http://www.espartha.com/blog/
Post by Alberto
Los cursores son de lectura, no se pueden modificar.
Lo que tienes que hacer es un CREATE TABLE en vez de CREATE CURSOR.
Recuerda que cuando cierras el cursor el fichero desaparece, pero cuando
cierras una tabla el fichero se queda en el disco hay que borrarlo.
Post by Julian Cañon - Zue Ltda
de forma dinámica requiero agregar campos a un cursor que he creado
mediante la sentencia create cursor de la siguiente forma
AFIELDS( laCampos, THIS.tabla )
lcCur = "cur_" + THIS.tabla
CREATE CURSOR ( lcCur ) FROM ARRAY laCampos
al querer hacer un
Alter table ( lcCur ) add column prueba C (12)
me dice que no es valida la operación sobre el objeto cursor, si después
de esto yo al cursor por línea de comando le hago un modify structure y
le agrego un campo si lo hace.
Lo que he notado es que antes de intentar modificar la estructura del
cursor voy a la ventana de sesion de datos me desabilita el botón de
propiedades para en cursor y después de hacer el modify structure si lo
habilita, que puedo hacer?? uso vfp 9.0 sp1
gracias por todo
Luis María Guayán
2006-06-22 20:33:37 UTC
Permalink
El problema son los nombres largos de campos. Lee la ayuda del comando ALTER
TABLE, al final está este comentario:

"... Es posible que ALTER TABLE no produzca resultados coherentes cuando se
utilice con cursores de Visual FoxPro creados con el comando CREATE CURSOR.
En particular, puede crear un cursor de Visual FoxPro con características
(nombres de campo largos, por ejemplo) que habitualmente sólo estarían
disponibles con tablas que formen parte de un contenedor de base de datos.
Dado que ALTER TABLE guarda una copia temporal del cursor, se aplican las
reglas aplicables a tablas libres; cualquier característica que requiera
soporte de base de datos se pierde o se modifica de forma impredecible. Por
lo tanto, como regla general, es recomendable evitar el uso de ALTER TABLE
con cursores de Visual FoxPro a menos que se hayan comprobado y comprendido
los resultados..."
--
Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos
Post by Julian Cañon - Zue Ltda
de forma dinámica requiero agregar campos a un cursor que he creado mediante
la sentencia create cursor de la siguiente forma
AFIELDS( laCampos, THIS.tabla )
lcCur = "cur_" + THIS.tabla
CREATE CURSOR ( lcCur ) FROM ARRAY laCampos
al querer hacer un
Alter table ( lcCur ) add column prueba C (12)
me dice que no es valida la operación sobre el objeto cursor, si después de
esto yo al cursor por línea de comando le hago un modify structure y le
agrego un campo si lo hace.
Lo que he notado es que antes de intentar modificar la estructura del cursor
voy a la ventana de sesion de datos me desabilita el botón de propiedades
para en cursor y después de hacer el modify structure si lo habilita, que
puedo hacer??
gracias por todo
msnews.microsoft.com
2006-06-26 22:07:57 UTC
Permalink
Hola Julian

prueba esta funcion que te mando, de repente puedes agregar el campo al array antes de crear el cursor (se emplea la funcion ADDFIELDTOARRAY)

USE TABLAORIG
nFields =AFIELDS(aArray,'TABLAORIG')
=ADDFIELDTOARRAY(@aArray , 'NEWFIELD', 'N', 20, 2)
CREATE CURSOR TABLACOPIA FROM ARRAY aArray
SELECT TABLACOPIA
BROWSE NORMA

FUNCTION ADDFIELDTOARRAY()
LPARAMETERS aArray , cNameField, cTypeField , nLenField , nDecField
LOCAL LcCOnt
DIME aArray(ALEN(aArray,1)+1,ALEN(aArray,2))
FOR LcCOnt = 5 TO ALEN(aArray,2) && INICIALIZAMOS ELEMENTOS NUEVA FILA DEL ARREGLO
aArray(ALEN(aArray,1),LcCOnt ) = aArray(ALEN(aArray,1)-1,LcCOnt )
ENDF
aArray(ALEN(aArray,1),1) = cNameField
aArray(ALEN(aArray,1),2) = cTypeField
aArray(ALEN(aArray,1),3) = nLenField
aArray(ALEN(aArray,1),4) = nDecField
RETURN

Saludos desde Perú

MANUEL ROJAS
Post by Julian Cañon - Zue Ltda
de forma dinámica requiero agregar campos a un cursor que he creado mediante
la sentencia create cursor de la siguiente forma
AFIELDS( laCampos, THIS.tabla )
lcCur = "cur_" + THIS.tabla
CREATE CURSOR ( lcCur ) FROM ARRAY laCampos
al querer hacer un
Alter table ( lcCur ) add column prueba C (12)
me dice que no es valida la operación sobre el objeto cursor, si después de
esto yo al cursor por línea de comando le hago un modify structure y le
agrego un campo si lo hace.
Lo que he notado es que antes de intentar modificar la estructura del cursor
voy a la ventana de sesion de datos me desabilita el botón de propiedades
para en cursor y después de hacer el modify structure si lo habilita, que
puedo hacer??
gracias por todo
Julián Cañón
2006-06-28 14:55:50 UTC
Permalink
Gracias MANUEL, fue super esta función, no pude responder antes y hasta hoy lo vi (28/06/2006)

"msnews.microsoft.com" <***@hotmail.com> escribió en el mensaje news:%23du%***@TK2MSFTNGP04.phx.gbl...
Hola Julian

prueba esta funcion que te mando, de repente puedes agregar el campo al array antes de crear el cursor (se emplea la funcion ADDFIELDTOARRAY)

USE TABLAORIG
nFields =AFIELDS(aArray,'TABLAORIG')
=ADDFIELDTOARRAY(@aArray , 'NEWFIELD', 'N', 20, 2)
CREATE CURSOR TABLACOPIA FROM ARRAY aArray
SELECT TABLACOPIA
BROWSE NORMA

FUNCTION ADDFIELDTOARRAY()
LPARAMETERS aArray , cNameField, cTypeField , nLenField , nDecField
LOCAL LcCOnt
DIME aArray(ALEN(aArray,1)+1,ALEN(aArray,2))
FOR LcCOnt = 5 TO ALEN(aArray,2) && INICIALIZAMOS ELEMENTOS NUEVA FILA DEL ARREGLO
aArray(ALEN(aArray,1),LcCOnt ) = aArray(ALEN(aArray,1)-1,LcCOnt )
ENDF
aArray(ALEN(aArray,1),1) = cNameField
aArray(ALEN(aArray,1),2) = cTypeField
aArray(ALEN(aArray,1),3) = nLenField
aArray(ALEN(aArray,1),4) = nDecField
RETURN

Saludos desde Perú

MANUEL ROJAS
Post by Julian Cañon - Zue Ltda
de forma dinámica requiero agregar campos a un cursor que he creado mediante
la sentencia create cursor de la siguiente forma
AFIELDS( laCampos, THIS.tabla )
lcCur = "cur_" + THIS.tabla
CREATE CURSOR ( lcCur ) FROM ARRAY laCampos
al querer hacer un
Alter table ( lcCur ) add column prueba C (12)
me dice que no es valida la operación sobre el objeto cursor, si después de
esto yo al cursor por línea de comando le hago un modify structure y le
agrego un campo si lo hace.
Lo que he notado es que antes de intentar modificar la estructura del cursor
voy a la ventana de sesion de datos me desabilita el botón de propiedades
para en cursor y después de hacer el modify structure si lo habilita, que
puedo hacer??
gracias por todo
Continúe leyendo en narkive:
Resultados de búsqueda para 'modificar un cursor' (Preguntas y respuestas)
3
respuestas
¿quiero una pagina de donde descargar punteros o cursor para el mouse de anime para mi pc?
iniciado 2011-02-18 17:11:57 UTC
diseño y programación
5
respuestas
¿Cómo modificar un texto ya escrito en el Corel?
iniciado 2008-09-19 18:50:58 UTC
diseño y programación
3
respuestas
tengo un problema con el cursor en el juego de pc settlers, el linaje de los reyes...halguien puede ayudarme?
iniciado 2007-04-11 07:49:10 UTC
software
6
respuestas
¿Cursor desaparece al activar SNAP en autocad?
iniciado 2013-04-24 10:18:24 UTC
software
6
respuestas
Me gustaría saber como modificar los archivos pdf?
iniciado 2007-04-25 15:33:30 UTC
internet
Loading...