Reemplazar Valores en una tabla de VFP 6.0

Amigo, tengo un problema y necesito de su ayuda...
Consiste en lo siguiente, Tengo dos tablas en VFP 6.0 y el campo común entre las dos tablas es el código, lo que necesito es sustituir el "Stock Nuevo" de la Tabla # 2 en el campo "Stock" de la Tabla # 1 pero siempre y cuando el "Código" de la Tabla # 2 coincida con el "Código" de la Tabla # 1
Ejemplo:
Tabla # 1
Código -----Descripción ----- Stock
Tabla # 2
Código ----- Stock Nuevo
Saludos,
Daniel Rangosch
2

2 respuestas

1
Respuesta de
Hola como estas, bueno para mi la forma más segura de hacer esta actualización de stock es buscar uno por uno los registros de la tabla 2 en la uno y reemplazar su valor. No se en que momento de tu aplicación lo haces o si son mucho los registro que tienes que modificar pero el código podría se algo así.
Ordenar tabla 1
Seleccionar tabla dos
Mientras no llegue al final del registro
buscar el codigo en tabla 1.remplazar .avanzar un registro en tabla 2
en codigo seria algo asi
sele tabla1
set order to codigo  
sele tabla2
go top
do while !eof()
 se le tabla1
 seek talba2.codigo
 if  tabla1.codigo=tabla2.codigo
     repla stock while tabla2.stocknuevo
Endif
  Se le tabla2
  skip
enddo
De esta manera comenzás desde arriba de la tabla 2 y buscas de aúno los registros en la tabla1 (el if es un control más no hace falta). Después de actualizar el stock te pasas al próximo registro de la tabla2 y haces lo mismo. Esto puede tardar un poco si son muchos registros, muchos son unos 10.000 para arriba. Tengo algunos ejemplos si me dejas tu mail te los paso, mucha suerte y espero que te sirva si no es así avisame y buscamos la forma :) .
jajaja perdón en el comando repla es with no "while"
Pablo este es otro código que me enviaron para realizar lo mismo. Que diferencia hay con el que tu me enviaste. La intención es construir uno solo... Tomando en cuenta las mejores practicas
Select Tabla2
Go Top
Do While !Eof()
Select Tabla1
Replace tabla1.stock With Tabla2.stock_nuevo For Tabla1.código == Tabla2.código
Select Tabla2
Skip
EndDo
Saludos, DR
Si te fijas los dos códigos hacen prácticamente lo mismo la diferencia más importante es que el que te enviaron usa un "for" para reemplazar en la tabla1 los valores de la tabla2 esto es útil si es que tienes códigos repetidos en la tabla1 si no no. Esta bueno que te interese saber porque elegir uno o el otro o una combinación casi nadie pregunta porque solo quieren una solución, bueno como trabaja el comando "for" este comando comienza desde el principio registro por registro hasta llegar al final evaluando la condición que le pongas, en este caso reemplazando si tabla1. codigo=tabla2. Código, ahora si tu tabla1 tiene productos seguramente no tiene códigos repetidos porque los códigos son para identificar de manera única a un registro entonces si es así no te sirve pararte al principio de la tabla y pasar uno por uno los registros con for, ¿por qué? Porque si tu tabla tiene 10000 registros pasa desde el 1 hasta el 10000 controlando si se cumple la condición. Pero si no se rrepitanlos códigos a vos solo te interesa que cambie un solo registro. Por eso yo te puse el SEEK si bien el programa tiene que ordenar la tabla, pero con el seek buscas la primera coincidenca remplazas y no seguís buscando... repito porque en teoría no tiene que haber otro registro conel mismo código, buscar con el seek es mucho más rapido que con el for, porque usa la búsqueda binaria, ¿esto cómo trabaja? Tienes que tener siempre la tabal ordenada y lo que hace es ssimpre ir al medio de la tabal y pregunta "si el valor que buscas es mayo o menor que el del registro si es menor descarta la parte mayo de la tabla y repite el procedimiento entonces de esta forma tarda muy poco y consume muy pocos recurso de tu pc y procesador. Igual con más makinas de hoy eso es algo casi no importa mucho porque son raidisimas, y si tu tabal no tiene muchos registro, es casi lo mismo que uses cualquiera los dos códigos, ya que los dos te dan el mismo resultado. Los dos están bien. Solo te explique la diferencia cuando usas un seek o un for y en que casos a mi pareces conviene usarlos. Consejo, usa cualquiera de los dos y no te compliques tanto, pero entra en el ayuda de vfp y fíjate bien al diferencia como para que sepas porque elegir un código o cuando hacerlo. Suerte espero no haberte confundido más. jajajaj
Añade un comentario a esta respuesta
1
Respuesta de
Lo que puedes hacer, es crearle a ambas tablas un indice en el campo código, y activar ese indice.
Luego ejecutas este código
Se le tabla2
SET RELATION TO cod INTO Tabla1 ADDITIVE
replace all stock wirh tabla1.stock
Espero te sirva
Fernando
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la pregunta que estabas buscando?
Puedes explorar otras preguntas del tema Visual Fox Pro o hacer tu propia pregunta: