FoxPro/Visual FoxPro - rutina

 
Vista:

rutina

Publicado por stadnick (53 intervenciones) el 02/04/2007 15:34:44
necesito su ayuda!!! por favor estoy tratando de hacer una rutina para actualizar o crear unos registros a una tabla o vista(vtemporal)
la idea es recorrer desde un grid donde hay unos registros para insertarlos en vtemporal pero solo lo esta haciendo con un solo registro y no inserta los demas, solamente esta insertando el numero 10-02 ¿sera que le falta algun contador?
este es el codigo:

dFecha = DATE()
Thisform.nroapto = vdeudmonto.nroapto
Thisform.fecha = vdeudmonto.fecha
Thisform.monto = vdeudmonto.sum_monto
DO WHILE !eof()

INSERT INTO vtemporal(nroapto,fecha,monto) VALUES Thisform.nroapto,Thisform.fecha,Thisform.monto)
TABLEUPDATE(0,.F.,"vtemporal")
UNLOCK ALL
SKIP
ENDDO
mucho se los agradeceria, colegas saludos
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
sin imagen de perfil

RE:rutina

Publicado por Ernesto Hernandez (4623 intervenciones) el 02/04/2007 16:43:03
DO WHILE !eof()
APPEND BLANK
INSERT INTO vtemporal(nroapto,fecha,monto) VALUES Thisform.nroapto,Thisform.fecha,Thisform.monto)
TABLEUPDATE(0,.F.,"vtemporal")
UNLOCK ALL
SKIP
ENDDO
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:rutina

Publicado por stadnick (53 intervenciones) el 02/04/2007 17:05:29
asi lo he hecho muchas veces y no ha resultado, porque con el INSERT INTO es suficiente es decir me da error con append blank
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:rutina

Publicado por Roman Suazo (2723 intervenciones) el 02/04/2007 17:27:59
Lo que miro es que siempre agregas los mismos datos segun el numero de registros que tiene el grid. Es decir, los datos que estan las variables nunca los actualizas. Prueba con algo como esto

selec vdeudmonto.
go top
DO WHILE !eof()

INSERT INTO vtemporal(nroapto,fecha,monto) VALUES (vdeudmonto.nroapto ,vdeudmonto.fecha ,vdeudmonto.sum_monto )
TABLEUPDATE(0,.F.,"vtemporal")

SKIP
ENDDO

El tableupdate hace los bloqueos y desbloques automaticamente...deberias usar transacciones (begin transactio, rollback, etc).

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

RE:rutina

Publicado por stadnick (53 intervenciones) el 02/04/2007 18:25:14
por fin!!! Gracias Roman, yo tenia la idea y echaba codigo probando y no salia, ahora bien lo que significa es que estoy actualizando vtemporal directamente desde vdeudmonto es decir ¿que no es necesario usar propiedades o variables? en vdeudmonto acumulo por nro de apartamento,
no olvides contestarme la pregunta, y 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

RE:rutina

Publicado por Roman Suazo (2723 intervenciones) el 02/04/2007 22:37:05
En terminos generales no entiendo tu problema. EL codigo que te di era para los datos de la tabla del grid a un vista. De hecho, creo que este codigo es mejor:

selec vdeudmonto
go top
DO WHILE !eof()

INSERT INTO vtemporal(nroapto,fecha,monto) VALUES (vdeudmonto.nroapto ,vdeudmonto.fecha ,vdeudmonto.sum_monto )
selec vdeudmonto

SKIP
ENDDO

TABLEUPDATE(0,.F.,"vtemporal")

Como te decia anteriormente, hay que usar transacciones para asi asegurarse de tener buena informacion. Con respecto a las variables, tambien se pueden usar en tu caso, solo tendrias que añadir unas cuantas lineas de codigo.
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:rutina

Publicado por stadnick (53 intervenciones) el 03/04/2007 14:12:29
porque el asunto es que en el recordSource del grid tengo la vista vdeudmonto y el codigo ya hace lo que quiero, actualizo la vista vtemporal. La idea es acumular la deuda para luego modificar el monto de la deuda por cada apartamento, pero si lo hace. lo que pasa es que en el anterior codigo estaba utilizando unas propiedades de formulario y no se que pasaba.
gracias Roman si quieres ¿puedo comunicarme contigo a travès de tu correo?
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

RE:rutina

Publicado por Plinio (7841 intervenciones) el 02/04/2007 19:23:01
dFecha = DATE()
Thisform.nroapto = vdeudmonto.nroapto
Thisform.fecha = vdeudmonto.fecha
Thisform.monto = vdeudmonto.sum_monto
***NUEVO
SELECT xtabla
GO TOP
***
DO WHILE !eof()

INSERT INTO vtemporal(nroapto,fecha,monto) VALUES Thisform.nroapto,Thisform.fecha,Thisform.monto)
TABLEUPDATE(0,.F.,"vtemporal")
UNLOCK ALL
***Nuevo
SELECT xtabla
***
SKIP
ENDDO
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