Cursor modificable con alter table

1,043 views
Skip to first unread message

Ronald

unread,
Apr 12, 2012, 12:00:33 PM4/12/12
to Comunidad de Visual Foxpro en Español
Hola estimados,

¿Es posible modificar un cursor generado con sqlexec, con el
comando alter table? porque cuando lo intento VFP me indica Que la
función no esta permitida en tablas remotas.

Se los agradesco.

Ronald Bartens

Carlos Miguel FARIAS

unread,
Apr 12, 2012, 12:15:33 PM4/12/12
to publice...@googlegroups.com
Si lees lo que escribistes, te contestas solo.
el comando alter table, modifica una tabla, eso implica agregar,
cambiar o quitar a una estructura fisica (tabla) alguna caracteristica
física.
Los cursores son temporales, por lo tanto, no tiene sentido un comando
para modificarlo, a nivel de sql, simplemente, el cursor lo regeneras
(cambias el select y ya esta).
Si es un cursor interno de vfp (create cursor) cambias el comando
create y ya esta.
Las tablas remotas son en general vistas (o sea que no esta definida
fisicamente, si no a traves de un comando sql).
Al menos es lo que he visto.
Saludos: Miguel, Santa Rosa (LP)

El 12/04/12, Ronald <nai...@gmail.com> escribió:

Ronald

unread,
Apr 12, 2012, 12:39:53 PM4/12/12
to Comunidad de Visual Foxpro en Español
Te comento el motivo de querer modificar un cursor:

Estoy enlazando el cursor resultado de una consulta con sqlexec a unos
textbox, pero uno de los campos que es tipo Date en el Oracle me
arroja en el cursor como DateTime y como estos campos están enlazados
con los textbox, los datos tipo fecha se están mostrando con la hora y
es algo que no quiero.

¿Como podría hacer para corregir este problema?, alguien me sugirió
modificar el cursor (específicamente el campo
DateTime convertirlo a Date) pero veo que no es posible.

Gracias por su atención

Ronald Bartens




On 12 abr, 11:15, Carlos Miguel FARIAS <carlosmiguelfar...@gmail.com>
wrote:
> Si lees lo que escribistes, te contestas solo.
> el comando alter table, modifica una tabla, eso implica agregar,
> cambiar o quitar a una estructura fisica (tabla) alguna caracteristica
> física.
> Los cursores son temporales, por lo tanto, no tiene sentido un comando
> para modificarlo, a nivel de sql, simplemente, el cursor lo regeneras
> (cambias el select y ya esta).
> Si es un cursor interno de vfp (create cursor) cambias el comando
> create y ya esta.
> Las tablas remotas son en general vistas (o sea que no esta definida
> fisicamente, si no a traves de un comando sql).
> Al menos es lo que he visto.
> Saludos: Miguel, Santa Rosa (LP)
>
> El 12/04/12, Ronald <naik...@gmail.com> escribió:

Pablo Daniel Lissa

unread,
Apr 12, 2012, 1:05:57 PM4/12/12
to Comunidad de Visual Foxpro en Español
Hola:

Podrías hacer:
SELECT campo1, campo2, ..., CAST(campoFecha as D) as campoFecha FROM
cursor_datos INTO CURSOR cursor_datos

antes de asociarlos a los controles gráficos.

Saludos.
---------------------------------------------------------------------------------------------------------

Antonio Meza

unread,
Apr 12, 2012, 1:18:28 PM4/12/12
to publice...@googlegroups.com
Si no lo puedes converitr en el primer Select desde oracle, aunque busca sobre CAST, lo puedes hacer nativamente, es decir ya tienes tu cursor devuelto pero un campo es datetime, vueles a ejecutar ahora un Select sobre ese cursor y ahí lo conviertes de datetime a date, espero haberme explicado.

tienes algo asi
sqlexec(....etc etc."micursor")

Use MiCursor
Select *,ctod(micampoDatetime) as micampoDate from Micursor into cursor Micursor

NOTA: estoy usando Ctod que es para convertir de fecha a caracter pero debes buscar si hay o preguntar aqui al grupo si se puede convertir de datetime a date y cual funcion usar.


saludos!!!
Antonio Meza

Ronald Bartens

unread,
Apr 12, 2012, 1:18:44 PM4/12/12
to publice...@googlegroups.com
Gracias Pablo,
   
  Pero es una consulta remota, traté de plasmar la misma idea pero me arrojo el mismo resultado un campo fecha con hora.

Saludos,
Ronald Bartens

Ronald Bartens

unread,
Apr 12, 2012, 1:35:25 PM4/12/12
to publice...@googlegroups.com
Gracias Antonio,
  Creo que es lo mas practico que se puede hacer (al menos por ahora). Pero me preguntaba ¿Si tengo muchos registros (miles quizás mas) seria doble carga no te parece? Osea la primera seria la del Oracle, la otra el Select que me crearía el nuevo cursor.
Pero bueno se tiene que pagar el precio jejeje.

Gracias una ves mas.

Ronald Bartens

Hugo C.

unread,
Apr 12, 2012, 1:35:34 PM4/12/12
to Comunidad de Visual Foxpro en Español
Intentalo como dice Antonio Meza, pero
en vez de dtoc usa TTOD.

Saludos.

On 12 abr, 11:18, Ronald Bartens <naik...@gmail.com> wrote:
> Gracias Pablo,
>
>   Pero es una consulta remota, traté de plasmar la misma idea pero me
> arrojo el mismo resultado un campo fecha con hora.
>
> Saludos,
> *Ronald Bartens*

Pablo Daniel Lissa

unread,
Apr 12, 2012, 2:02:43 PM4/12/12
to Comunidad de Visual Foxpro en Español
No lo aclaré bien. Yo planteaba lo mismo que Antonio: Un segundo
SELECT sobre el cursor resultante de SQLEXEC(), usando CAST en vez de
TTOD o TTOC, pero la idea es la misma.

Es cierto lo que decís, se terminan haciendo dos SELECT.

Saludos.
-----------------------------------------------------------------------------------------------------

On 12 abr, 14:35, Ronald Bartens <naik...@gmail.com> wrote:
> Gracias Antonio,
>   Creo que es lo mas practico que se puede hacer (al menos por ahora). Pero
> me preguntaba ¿Si tengo muchos registros (miles quizás mas) seria doble
> carga no te parece? Osea la primera seria la del Oracle, la otra el Select
> que me crearía el nuevo cursor.
> Pero bueno se tiene que pagar el precio jejeje.
>
> Gracias una ves mas.
>
> *Ronald Bartens*

Guillermo MDQ

unread,
Apr 12, 2012, 2:12:07 PM4/12/12
to publice...@googlegroups.com
Ronald, no te sirve pasar el datetime a character en la consulta con las funciones que te provee oracle y quedarte con la parte de la fecha ?, solo tendrias que cambiar el texbox para que acepte el formato caracter.
Despues al grabar lo volves a convertir en datetime.

Saludos
Guillermo

Antonio Meza

unread,
Apr 12, 2012, 2:44:43 PM4/12/12
to publice...@googlegroups.com
La segunda consulta no debe tardar nada ya que esta en memoria, es decir no va a ir de nuevo al servidor de oracle por lo que lo debe hacer super rapido, tengo programas que hacen eso por diferentes cuestiones, y no se nota la segunda consulta. pero ahora si que probando veras que tan conveniente es, y bueno la otra opcion que te dan de converitr directo a caracter la fecha, pero depende que vas hacer con el cursor resultante.

Creo que deberias de decirnos que planeas hacer con el cursor resultante y te podemos dar mejores ideas.

saludos
Reply all
Reply to author
Forward
0 new messages