Como puedo modificar varios registro en foxpro

Como puedo modificar varios registro de una tabla simultáneamente es para una cuenta por cobrar

Cxc_temp es un cursor de donde extraigo todos los datos y facturación es donde se modificaran los datos

Uso este código

INDEX ON num_fact TAG num_fact
SET ORDER to num_fact 
SELECT facturacion
GO TOP
DO WHILE !eof()
SELECT cxc_temp
Seek facturacion.num_fact 
if cxc_temp.num_fact=facturacion.num_fact
replace cxc_temp with facturacion 
ENDIF
SELECT facturacion
skip
enddo

1 respuesta

Respuesta
1

No comprendo la consulta Plácido; tienes una tabla denominada cxc_temp que tiene una serie de datos y el valor relacional con facturación es num_fact; ¿Pero qué datos deseas pasar desde cxc_temp a facturación?. ¿Cómo es el nombre del campo?.

¡Gracias! Lo pude resolver en ves de replace use update 

Use este código así

abre_tabla ("facturacion")
SELECT facturacion
GO TOP
DO WHILE !eof()
SELECT cxc_temp
INDEX ON num_fact TAG num_fact
Seek facturacion.num_fact &&  campo por el que indexas
IF cxc_temp.pagado => facturacion.balance
mx = 1
ELSE
mx = 0
ENDIF
if cxc_temp.num_fact=facturacion.num_fact
UPDATE facturacion SET balance = cxc_temp.balance, x = mx WHERE facturacion.num_fact = cxc_temp.num_fact
ENDIF
SELECT facturacion
skip
ENDDO

Gracias siempre muy agradecido por tu ayuda

Ya que esta vez no hice nada.

Perdona Plácido, pero me puse a ver tu código y veo que todo lo que haz escrito lo puedes reemplazar por una sola línea que es la siguiente:

UPDATE Facturacion SET balance=cxc_temp.balance ;
    WHERE facturacion.num_fact in (Select num_fact From cxc_temp)

He obviado el x=mx por no entender a que se debía el mismo.

Decirte que siempre el comando UPDATE calcula sobre la totalidad de la tabla abierta desde el primero al último registro, no hace falta decirle ALL ni nada por el estilo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas