Dudas con el comando update

Necesito de su valiosa ayuda.

Tengo dos tablas la cuáles las llame una PRODUCTO y la otra MOVIMIENTO.

Estoy utilizando la siguiente instrucción

Insert into movimiento(código,precio,cantidad) Select refe,valor,exist) from kard

Update producto set canti=canti+kard.exist where código =kard. Código.

El problema consiste es que cuando ingreso varios registros en un grid al guardarlo solo me actualiza con el update un solo registro.

Espero haberme explicado bien. En espera de su valiosa ayuda.

1 respuesta

Respuesta
1

Supongo que también te insertará el último registro en ese caso.

Prueba lo sig.:

Select Kard
scan

     Insert into movimiento(código,precio,cantidad) Select refe,valor,exist) from kard

     Update producto set canti=canti+kard.exist where código =kard. Código

Endscan

Buenos días . Gracias por responder

Probé tu recomendación pero solo me actualiza el último registro

Kard es una tabla o un objeto y si es una tabla, ¿cómo la creas? ¿Y en que momento?, es decir ¿desde dónde?

Kard es un cursor y está creado desde el looad del formulariio

Buenos días. Me podrías regalar un correo donde te pueda enviar la instrucción completa para que me ayudes a ver qué estoy haciendo mal.

Te lo agradezco

Escribe a sysgen.abel gmail.com

¡Gracias! 

A ver como va así... la sugerencia esta dentro de las líneas de asteriscos

Use &dira\inventar
Set Order To 2
Select 4
Use &dira\kardex
***********************************************
&& Cuando haces Insert - Select; inserta todo lo que haya en la tabla "dia" en este caso
&& co el condicionante where evitas que se ingresen ciertos registros.
Insert Into kardex ;
(usuario, Procedure, costo, iva, referencia, detalle, fechavmto, precio, ;
cantidad, pordes, vienedocu, pto, td, ndocu, fecha, centro, identifica) ;
Select nomusuario, "*GRABADO*", costou, iva, referencia, detalle, fechavmto, ;
preciounit, cantidad*-1, dscto, vienedocu, vpto, vtd, vnfac, vfecha, vcentro, vcliente ;
From dia Where cantidad#0
&& Esto no se para que sirve.
llave02 = dia.referencia
Select 3
xi = Val(vcentro)
If xi=0 .Or. xi>9
xi = 1
Endif
xi = Str(xi, 1)
Do fil_lock
Select dia
Scan For cantidad#0
Update inventar Set cantexist=cantexist-dia.cantidad,bod&xi=bod&xi-dia.cantidad ;
Where referencia=dia.referencia
Endscan
Unlock
************************************************
Select 4
Use &dira\movtarjetas
Append From &dira\tarjetas For Len(Alltrim(codigo))<>0 .And. valor<>0

Me sale un mensaje que dice  'se ha encontrado el final del archivo"

¿Quitaste el skip?. Cuando usas scan endscan no se ingresa skip

¡Gracias!  Por la ayuda . Me funcionó de maravillas. Que pena por responder ahora pero en Colombia estamos en cuarentena y tenemos problemas con la conexión.

Mil gracias por tu ayuda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas