Registros de 4 tablas
Hola víctor tengo 4 tablas A, B, C, DE las tablas A y B son ingresos, las tablas C y DE son egresos y tengo una tabla temporal a donde quiero agregar los registros de las 4 tablas en la parte izquierda los ingresos (tablas A y B) y en la derecha los egresos (tablas Cy D). He estado haciendo esto pero no sale como quisiera al final en la tabla me sale así:
Ingresos egresos
0001 XXXXXX 1000.52 000251 XXXXXXXXX 2,563.52
Espacio en blanco
¿000252 XXXXXXXX 3652.25
y en otras ocasiones no me muestra todos los egresos será por que hay más registros de egresos que registros de ingresos?. Espero me puedas apoyar a solucionar esto.
SET TALK OFF
SET DELETED ON
CLOSE DATABASES ALL
PUBLIC tabla1,tabla2,indic1,indic2
unidad="D:"
tabla1=unidad + "\PRUEBAS\SICOFI\PR_TESOR\BASES\temping"
tabla2=unidad + "\PRUEBAS\SICOFI\PR_TESOR\BASES\tempegr"
tabla3=unidad+ "\PRUEBAS\SICOFI\PR_TESOR\BASES\final"
IF USED(tabla3+".Dbf")
CLOSE DATABASES
Erase Tabla3+".Dbf"
ELSE
If File(Tabla3+".Dbf")
Erase Tabla3+".Dbf"
ENDIF
Endif
CREATE TABLE &tabla3 ( ncorr C(8), fec_ope d(8),m_pago C(5), desc_oper C(40), r_social C(40), numero C(14),;
codigo C(8), denom c(50), deudor n(12,2), acreedor n(12,2),da c(1),;
ncorr1 C(5), fec_ope1 d(8),m_pago1 C(5), desc_oper1 C(40), r_social1 C(40), numero1 C(14),;
codigo1 C(8), denom1 c(40), deudor1 n(12,2), acreedor1 n(12,2), da1 c(1),nommes c(9),año c(4) )
indic1=unidad + "\PRUEBAS\SICOFI\PR_TESOR\BASES\temping"
indic2=unidad + "\PRUEBAS\SICOFI\PR_TESOR\BASES\tempegr"
indic3=unidad + "\PRUEBAS\SICOFI\PR_TESOR\BASES\final"
If File(indic1+".Idx") Or File(indic2+".Idx") Or File(indic3+".Idx")
Erase indic1+".Idx"
Erase indic2+".Idx"
Erase indic3+".Idx"
Endif
USE &tabla1 SHARED
INDEX ON ncorr TO &indic1
USE &tabla2 SHARED
INDEX ON ncorr1 TO &indic2
USE &tabla3 SHARED
INDEX ON ncorr TO &indic3
SELECT 1
USE &tabla1 inde &indic1 ALIAS t1 SHARED
COPY TO d:\pruebas\sicofi\pr_tesor\bases\ingfinal FOR ini="RI"
COPY TO d:\pruebas\sicofi\pr_tesor\bases\ingfinal1 FOR ini="CD" AND SUBSTR(cj,1,1)="2"
COPY TO d:\pruebas\sicofi\pr_tesor\bases\ingfinal2 FOR ini="CD" AND SUBSTR(cj,1,1)="1"
SELECT 2
USE ingfinal ALIAS t SHARED Tabla A (Ingresos)
SELECT 3
USE ingfinal1 ALIAS ff1 SHARED Tabla B (Ingresos)
SELECT 4
USE ingfinal2 ALIAS ff2 SHARED Tabla C (egresos)
SELECT 5
USE &tabla2 inde &indic2 ALIAS t2 SHARED Tabla D (egresos)
SELECT 6
USE &tabla3 inde &indic3 ALIAS t3 SHARED tabla temporal
SELECT 2
Go Top
Do While !Eof()
Select 6
Append Blank
Replace ncorr With t->ncorr, fec_ope With t->fec_ope,;
m_pago With t->m_pago,desc_oper With t->desc_oper,r_social With t->r_social,;
numero With t->numero,codigo With t->codigo,denom With t->denom,;
deudor With t->deudor,acreedor With t->acreedor,da With t->da,año WITH cAño
SELECT 2
SKIP
EndDo
m.nNueva1=.f.
SELECT 6
GO bott
SELECT 3
GO TOP
DO WHILE !EOF()
SELECT 6
SKIP
IF EOF()
APPEND BLANK
m.nNueva1=.t.
ELSE
SKIP -1
ENDIF
Replace ncorr With ff1->ncorr, fec_ope With ff1->fec_ope,;
m_pago With ff1->m_pago,desc_oper With ff1->desc_oper,r_social With ff1->r_social,;
numero With ff1->numero,codigo With ff1->codigo,denom With ff1->denom,;
deudor With ff1->deudor,acreedor With ff1->acreedor,da With ff1->da
IF !m.nNueva1
SKIP
ENDIF
SELECT 3
SKIP
EndDo
m.nNueva = .F.
Select 6
Go Top
SELECT 5
Go Top
Do While !Eof()
Select 6
SKIP
IF EOF()
append Blank
m.nNueva = .T.
Else
Skip -1
ENDIF
Replace ncorr1 With t2->ncorr1,fec_ope1 With t2->fec_ope1,;
m_pago1 With t2->m_pago1,desc_oper1 With t2->desc_oper1,r_social1 With t2->r_social1,;
numero1 With t2->numero1,codigo1 With t2->codigo1,denom1 With t2->denom1,;
deudor1 With t2->deudor1,acreedor1 With t2->acreedor1,da1 With t2->da1
If !m.nNueva
Skip
Endif
SELECT 5
SKIP
EndDo
m.nNueva2=.f.
SELECT 6
GO bott
SELECT 4
GO TOP
DO WHILE !EOF()
SELECT 6
SKIP
IF EOF()
APPEND BLANK
m.nNueva2=.t.
ELSE
SKIP -1
ENDIF
Replace ncorr1 With ff2->ncorr, fec_ope1 With ff2->fec_ope,;
m_pago1 With ff2->m_pago,desc_oper1 With ff2->desc_oper,r_social1 With ff2->r_social,;
numero1 With ff2->numero,codigo1 With ff2->codigo,denom1 With ff2->denom,;
deudor1 With ff2->deudor,acreedor1 With ff2->acreedor,da1 With ff2->da
IF !m.nNueva2
SKIP -1
Endif
SELECT 4
SKIP
EndDo
CLOSE DATABASES all
RETURN
Ingresos egresos
0001 XXXXXX 1000.52 000251 XXXXXXXXX 2,563.52
Espacio en blanco
¿000252 XXXXXXXX 3652.25
y en otras ocasiones no me muestra todos los egresos será por que hay más registros de egresos que registros de ingresos?. Espero me puedas apoyar a solucionar esto.
SET TALK OFF
SET DELETED ON
CLOSE DATABASES ALL
PUBLIC tabla1,tabla2,indic1,indic2
unidad="D:"
tabla1=unidad + "\PRUEBAS\SICOFI\PR_TESOR\BASES\temping"
tabla2=unidad + "\PRUEBAS\SICOFI\PR_TESOR\BASES\tempegr"
tabla3=unidad+ "\PRUEBAS\SICOFI\PR_TESOR\BASES\final"
IF USED(tabla3+".Dbf")
CLOSE DATABASES
Erase Tabla3+".Dbf"
ELSE
If File(Tabla3+".Dbf")
Erase Tabla3+".Dbf"
ENDIF
Endif
CREATE TABLE &tabla3 ( ncorr C(8), fec_ope d(8),m_pago C(5), desc_oper C(40), r_social C(40), numero C(14),;
codigo C(8), denom c(50), deudor n(12,2), acreedor n(12,2),da c(1),;
ncorr1 C(5), fec_ope1 d(8),m_pago1 C(5), desc_oper1 C(40), r_social1 C(40), numero1 C(14),;
codigo1 C(8), denom1 c(40), deudor1 n(12,2), acreedor1 n(12,2), da1 c(1),nommes c(9),año c(4) )
indic1=unidad + "\PRUEBAS\SICOFI\PR_TESOR\BASES\temping"
indic2=unidad + "\PRUEBAS\SICOFI\PR_TESOR\BASES\tempegr"
indic3=unidad + "\PRUEBAS\SICOFI\PR_TESOR\BASES\final"
If File(indic1+".Idx") Or File(indic2+".Idx") Or File(indic3+".Idx")
Erase indic1+".Idx"
Erase indic2+".Idx"
Erase indic3+".Idx"
Endif
USE &tabla1 SHARED
INDEX ON ncorr TO &indic1
USE &tabla2 SHARED
INDEX ON ncorr1 TO &indic2
USE &tabla3 SHARED
INDEX ON ncorr TO &indic3
SELECT 1
USE &tabla1 inde &indic1 ALIAS t1 SHARED
COPY TO d:\pruebas\sicofi\pr_tesor\bases\ingfinal FOR ini="RI"
COPY TO d:\pruebas\sicofi\pr_tesor\bases\ingfinal1 FOR ini="CD" AND SUBSTR(cj,1,1)="2"
COPY TO d:\pruebas\sicofi\pr_tesor\bases\ingfinal2 FOR ini="CD" AND SUBSTR(cj,1,1)="1"
SELECT 2
USE ingfinal ALIAS t SHARED Tabla A (Ingresos)
SELECT 3
USE ingfinal1 ALIAS ff1 SHARED Tabla B (Ingresos)
SELECT 4
USE ingfinal2 ALIAS ff2 SHARED Tabla C (egresos)
SELECT 5
USE &tabla2 inde &indic2 ALIAS t2 SHARED Tabla D (egresos)
SELECT 6
USE &tabla3 inde &indic3 ALIAS t3 SHARED tabla temporal
SELECT 2
Go Top
Do While !Eof()
Select 6
Append Blank
Replace ncorr With t->ncorr, fec_ope With t->fec_ope,;
m_pago With t->m_pago,desc_oper With t->desc_oper,r_social With t->r_social,;
numero With t->numero,codigo With t->codigo,denom With t->denom,;
deudor With t->deudor,acreedor With t->acreedor,da With t->da,año WITH cAño
SELECT 2
SKIP
EndDo
m.nNueva1=.f.
SELECT 6
GO bott
SELECT 3
GO TOP
DO WHILE !EOF()
SELECT 6
SKIP
IF EOF()
APPEND BLANK
m.nNueva1=.t.
ELSE
SKIP -1
ENDIF
Replace ncorr With ff1->ncorr, fec_ope With ff1->fec_ope,;
m_pago With ff1->m_pago,desc_oper With ff1->desc_oper,r_social With ff1->r_social,;
numero With ff1->numero,codigo With ff1->codigo,denom With ff1->denom,;
deudor With ff1->deudor,acreedor With ff1->acreedor,da With ff1->da
IF !m.nNueva1
SKIP
ENDIF
SELECT 3
SKIP
EndDo
m.nNueva = .F.
Select 6
Go Top
SELECT 5
Go Top
Do While !Eof()
Select 6
SKIP
IF EOF()
append Blank
m.nNueva = .T.
Else
Skip -1
ENDIF
Replace ncorr1 With t2->ncorr1,fec_ope1 With t2->fec_ope1,;
m_pago1 With t2->m_pago1,desc_oper1 With t2->desc_oper1,r_social1 With t2->r_social1,;
numero1 With t2->numero1,codigo1 With t2->codigo1,denom1 With t2->denom1,;
deudor1 With t2->deudor1,acreedor1 With t2->acreedor1,da1 With t2->da1
If !m.nNueva
Skip
Endif
SELECT 5
SKIP
EndDo
m.nNueva2=.f.
SELECT 6
GO bott
SELECT 4
GO TOP
DO WHILE !EOF()
SELECT 6
SKIP
IF EOF()
APPEND BLANK
m.nNueva2=.t.
ELSE
SKIP -1
ENDIF
Replace ncorr1 With ff2->ncorr, fec_ope1 With ff2->fec_ope,;
m_pago1 With ff2->m_pago,desc_oper1 With ff2->desc_oper,r_social1 With ff2->r_social,;
numero1 With ff2->numero,codigo1 With ff2->codigo,denom1 With ff2->denom,;
deudor1 With ff2->deudor,acreedor1 With ff2->acreedor,da1 With ff2->da
IF !m.nNueva2
SKIP -1
Endif
SELECT 4
SKIP
EndDo
CLOSE DATABASES all
RETURN
1 Respuesta
Respuesta de Víctor Arturo Mercado Fernández
1