Búsqueda de un campo entre dos tablas

Saludos Víctor, te explico mi tercera situación:
1-. Tengo dos tablas una se llama Deposito (Fecha, Tienda, Cod_cuenta, num_planilla, Fecha_valida, tipo, Conciliado) y otra tabla Estado (Fecha, Referencia, Descripción, debe, haber, saldo, Banco)
2-. Debo buscar automáticamente todos los num_planillas de la tabla Deposito que sean igual a la Referencia de la Tabla Estado, los que sean iguales debo almacenar en una tabla relacional llamada Conciliación.
3-. La Tabla Conciliación tiene los siguientes campos
- Referencia (aquí se almacenará la Referencia que proviene de la tabla Estado. Referencia,
-Monto se almacenará el campo que proviene de la tabla Estado, y puede ser el campo estado.Debe o del campo estado. Haber, se almacenará el campo que sea diferente a CERO
- Numplanilla, aquí se almacenará el campo que proviene de la tabla Deposito. Num_planilla.
4-. Luego debo editar el campo Deposito. Conciliado y colocarle el siguiente valor "ya", esto indica que se concilió.
Muchísimas Gracias, si tienes algún manual de programación de visual foxpro 5.0, te lo agradecería mucho, ya que me da pena, tanta molestia...

1 respuesta

Respuesta
1
1.- Crea un índice en la tabla Estado por el campo Referencia
2.- Con el índice creado:
Close Databases All
Use Deposito In 0
Use Estado Order Referencia In 0
Use Conciliación In 0
Select Deposito
Go Top
Do While !Eof()
     Select Estado
     Seek Deposito.Num_planilla
     If !Eof()
          Select Conciliación
          Append Blank
          Replace Conciliación.referencia With Estado.referencia, ;
          Conciliación.num_planilla With Deposito.num_planilla
          If Estado.debe 0
               Replace Conciliación.monto With Estado.debe
          Else
               Replace Conciliación.monto With Estado.haber
          EndIf
          Replace Deposito.conciliado With "ya"
     EndIf
     Select Deposito
     Skip
EndDo
3.- El mejor manual que yo he encontrado es el MSDN, contiene referencias y ejemplos muy útiles.
ahora como hago para que no me agregue en la tabla conciliación  los que Depostio.concialiado="YA"
Lo que me mandaste Funciona Perfecto, solo me falta esta parte
Solo agrega esa condicionante en el código, algo similar a:
Close Databases All
Use Deposito In 0
Use Estado Order Referencia In 0
Use Conciliación In 0
Select Deposito
Go Top
Do While !Eof()
     If Upper( Deposito.conciliado ) "YA"
          Select Estado
          Seek Deposito.Num_planilla
          If !Eof()
               Select Conciliación
               Append Blank
               Replace Conciliación.referencia With Estado.referencia, ;
                            Conciliación.num_planilla With Deposito.num_planilla
               If Estado.debe 0
                    Replace Conciliación.monto With Estado.debe
               Else
                    Replace Conciliación.monto With Estado.haber
               EndIf
               Replace Deposito. conciliado With "YA"
          EndIf
          Select Deposito
     EndIf
     Skip
EndDo
Lo coloque, pero ahora no me agrega ningún registro a la tabla, el código es el siguiente:
Close Databases All
Use "C:\conciliacion\bd\deposito.DBF" In 0
Use "C:\conciliacion\estado.DBF" Order Referencia In 0
Use "C:\conciliacion\bd\concilia.DBF" In 0
Select Deposito
Go Top
Do While !Eof()
If Upper( Deposito.conciliado )"T"
Select Estado
Seek Deposito.Numplan
If !Eof()
Select Concilia
Append Blank
Replace Concilia.referencia With Estado.referencia, ;
Concilia.numplan With Deposito.numplan
If Estado.haber >0
Replace Concilia.monto With Estado.haber
Else
Replace Concilia.monto With Estado.debe
EndIf
Replace Deposito.conciliado With "T"
EndIf
Select Deposito
ENDIF
Skip
EndDo
WAIT WINDOWS "Proceso Culminado ... " NOWAIT
Por alguna razón los símbolos se pierden en el código.
If Upper( Deposito.conciliado ) "YA"
Debe ser:
If Upper( Deposito.conciliado ) = "YA"
Antes de "YA" debe de ir un signo de igual
Listo, era que el campo concliado estaba vacío y no hacia nada por eso...
Repuesta correcta, desarrolla los algoritmos de manera muy sencilla, y son muy fáciles de entender. Mil Gracias Nuevamente
Si el problema ya fue solucionado, favor de cerrar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas