FoxPro/Visual FoxPro - SQL de lectura

 
Vista:
sin imagen de perfil

SQL de lectura

Publicado por Carlos AC (141 intervenciones) el 06/10/2006 02:10:58
Amigos... tengo un problemita, llene un grid usando Select sql, pero al querer limpiar el cursor me indica que es de solo lectura, como hago para poder limpiar este cursor pues es para llenar con datos nuevos... gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SQL de lectura

Publicado por sergio (737 intervenciones) el 06/10/2006 16:11:39
Los cursores generados con codigo nativo de fox son cursores no actualizables,
Para hacer lo que queres tenes que hacer lo siguiente

selec * from <Tabla> into cursor <tmp>

para hacerlo actualizable , o sea que lo pueda manipular como si fuera una tabla comun y silvetstre tenes que escribir a conituacion lo siguiente

use dbf() again in 0 alias nuevocursor

y a partir de ahi trabajas el grid con la tabla nuevocursor, y vas a ver que podras deletear, agregar y demas cosas

Suerte y espero te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQL de lectura

Publicado por jorge (423 intervenciones) el 06/10/2006 18:17:22
Hola amigos, no estoy de acuerdo con nuestro compañero sergio.
yo uso cursores sobre todo al momento de usar los GRID, y realmente me funcionan exelente. puedo manipular igual que una tabla dbf, es decir, modificar, borrar, insertar, puedo hacer un zap o volver a crearlo.
claro que para esto un cursor debes de declararlo de la siguiente forma

CREATE CURSOR Campo1 C(1), Campo2 C(2)

ahora bien, recuerda que una sentencia SQL, tal es el caso de un SELECT te devuelve no una tabla propiamente dicho, es una temporal en memoria, que puedes recorrerla igual pero que no tiene definidas ciertas propiedades, como el caso del buffer, o si es de lectura escritura. para que esto no te suceda, puedes intentar declarar un cursor como antes mencione, y al hacer la consulta, en el INTO pones el nombre de este cursor, y pruebas los resultados.
ahora bien, cada ves que generas una sentencia SQL el nombre del temporal de la clausa INTO, se vuelve a crear con valores nuevos. es decir no tienes que borrar para volver a usarlo.

Saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQL de lectura

Publicado por Juan Carlos (128 intervenciones) el 06/10/2006 19:52:56
Hola Carlos:

Yo suelo hacer lo sgte, desde la vesion 7 en adelante

SELECT * FROM MiTabla INTO CURSOR MiCursos Readwrite

De esta manera puedo trabajar la tabla a mi antojo.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 29
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:SQL de lectura

Publicado por richard (197 intervenciones) el 09/10/2006 19:33:29
Te muestra ese mensaje es porque tratas de actualizar en cursor y esta activo

IF USED("cur_grp1")
SELECT cur_grp1
use
ENDif

thisform.grid1.RecordSource = ""
SELECT fecha,detalle FROM tbgrup1 WHERE tbgrup1.cedula = cod INTO CURSOR cur_grp1
thisform.grid1.RecordSource = "cur_grp1"
thisform.Refresh

de esta forma si el cursor esta activo se cierra y lo crea nuevamente y actualizando la grid

espero que te sirva

richard
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar