Filtro por fecha
Hola buen día y feliz año, estoy haciendo el siguiente programa:
SET SAFETY OFF
CLOSE DATABASES
SET CENTURY ON
SET DATE TO british
ncorr=0
IF File("h:\ruta\regventa.dbf")
DELETE FILE h:\librosvarios\data\temp.dbf
ENDIF
CREATE TABLE h:\librosvarios\data\temp;
( n_corr n(6,0), fec_emi d(8),fec_venc d(8), tipo c(2), serie n(3,0), numero n(8,0),;
tipo_doc c(2), num_doc c(11), cliente c(20), bimponi n(10,2), fact n(10,2), bol n(10,2), igv n(10,2), total n(10,2) )
cTotfa="d:\ruta\A"
USE (cTotfa) SHARED AGAIN
COPY TO d:\ruta\temporal FOR MONTH(fec_emi)= MONTH(DATE()) AND YEAR(fec_emi)=YEAR(DATE())
cTemp="d:\ruta\temporal"
USE (cTemp) SHARED AGAIN
Index On facnro TO (cTemp)
cSfactura="d:\ruta\B"
USE (cSfactura) SHARED AGAIN
COPY TO d:\ruta\temporal1 FOR MONTH(fec_v)=MONTH(DATE()) AND YEAR(fec_v)=YEAR(DATE())
cTemp1="d:\ruta\temporal1"
USE (cTemp1) SHARED AGAIN &&EXCLUSIVE
Index On inscrinrx TO (cTemp1)
cNotas="d:\ruta\C"
USE (cNotas) SHARED AGAIN &&EXCLUSIVE
COPY TO d:\pruebas\sici\catastro\temporal2 FOR MONTH(fec_ven)=MONTH(DATE()) AND YEAR(fec_ven)=YEAR(DATE())
cTemp2="d:\ruta\temporal2"
USE (cTemp2) SHARED AGAIN
Index On inscrinrn TO (cTemp2)
cConexion="d:\ruta\conexion"
USE (cConexion) SHARED AGAIN
Index On inscrinro TO (cConexion)
cReg="h:\librosvarios\data\temp"
USE (cReg) SHARED AGAIN
Index On n_corr TO (cReg)
CLOSE DATABASES
Select 1
Use (cTemp) Index (cTemp)+".idx" Alias t01 Share
Select 2
USE (cTemp1) INDEX (cTemp1)+".idx" ALIAS t02 share
Select 3
USE (cTemp2) INDEX (cTemp2)+".idx" ALIAS t03 share
Select 4
Use (cConexion) Index (cConexion)+".idx" Alias t04 Share
Select 5
Use (cReg) Index (cReg)+".idx" Alias t05 Share
Select 1
Do While !Eof()
Select 5
Seek(t01->inscrinrx)
If !Found()
Append Blank
replace n_corr WITH RECNO()
replace fec_emi With t01->facemifec
replace fec_venc With t01->facvenfec
replace tipo WITH "14"
replace serie WITH t01->facsernro
replace numero WITH t01->facnro
replace tipo_doc WITH "1"
replace cliente WITH IIF( Seek(ALLTRIM(t01.inscrinrx),"t04"), Subst(Alltrim (t04.clinomx),1,40), "No Hay Cliente")
replace bimponi WITH t01->factotal
ENDIF
SELECT 1
SKIP
enddo
close databases
Consideraciones:
Como hago para evitar el copy to ya que hago esto para filtrar los registros por mes y año de acuerdo a la fecha del sistema, que sucede si quieren un reporte de un mes pasado tuviera que cambiar la fecha del sistema manualmente, en las tres tablas almacenan registros de todos los años. Quiero colocar dos combos uno para elegir el mes y el otro para el año por ejem elijo mes "11" y 2008 de acuerdo a lo que elijo en los combos tuviera que filtrarlos en las tablas. La tabla A tiene el campo fec_emi, B el campo fec_v y C el campo fec_ven Espero haber sido explicito. Espero tu apoyo. Gracias.
SET SAFETY OFF
CLOSE DATABASES
SET CENTURY ON
SET DATE TO british
ncorr=0
IF File("h:\ruta\regventa.dbf")
DELETE FILE h:\librosvarios\data\temp.dbf
ENDIF
CREATE TABLE h:\librosvarios\data\temp;
( n_corr n(6,0), fec_emi d(8),fec_venc d(8), tipo c(2), serie n(3,0), numero n(8,0),;
tipo_doc c(2), num_doc c(11), cliente c(20), bimponi n(10,2), fact n(10,2), bol n(10,2), igv n(10,2), total n(10,2) )
cTotfa="d:\ruta\A"
USE (cTotfa) SHARED AGAIN
COPY TO d:\ruta\temporal FOR MONTH(fec_emi)= MONTH(DATE()) AND YEAR(fec_emi)=YEAR(DATE())
cTemp="d:\ruta\temporal"
USE (cTemp) SHARED AGAIN
Index On facnro TO (cTemp)
cSfactura="d:\ruta\B"
USE (cSfactura) SHARED AGAIN
COPY TO d:\ruta\temporal1 FOR MONTH(fec_v)=MONTH(DATE()) AND YEAR(fec_v)=YEAR(DATE())
cTemp1="d:\ruta\temporal1"
USE (cTemp1) SHARED AGAIN &&EXCLUSIVE
Index On inscrinrx TO (cTemp1)
cNotas="d:\ruta\C"
USE (cNotas) SHARED AGAIN &&EXCLUSIVE
COPY TO d:\pruebas\sici\catastro\temporal2 FOR MONTH(fec_ven)=MONTH(DATE()) AND YEAR(fec_ven)=YEAR(DATE())
cTemp2="d:\ruta\temporal2"
USE (cTemp2) SHARED AGAIN
Index On inscrinrn TO (cTemp2)
cConexion="d:\ruta\conexion"
USE (cConexion) SHARED AGAIN
Index On inscrinro TO (cConexion)
cReg="h:\librosvarios\data\temp"
USE (cReg) SHARED AGAIN
Index On n_corr TO (cReg)
CLOSE DATABASES
Select 1
Use (cTemp) Index (cTemp)+".idx" Alias t01 Share
Select 2
USE (cTemp1) INDEX (cTemp1)+".idx" ALIAS t02 share
Select 3
USE (cTemp2) INDEX (cTemp2)+".idx" ALIAS t03 share
Select 4
Use (cConexion) Index (cConexion)+".idx" Alias t04 Share
Select 5
Use (cReg) Index (cReg)+".idx" Alias t05 Share
Select 1
Do While !Eof()
Select 5
Seek(t01->inscrinrx)
If !Found()
Append Blank
replace n_corr WITH RECNO()
replace fec_emi With t01->facemifec
replace fec_venc With t01->facvenfec
replace tipo WITH "14"
replace serie WITH t01->facsernro
replace numero WITH t01->facnro
replace tipo_doc WITH "1"
replace cliente WITH IIF( Seek(ALLTRIM(t01.inscrinrx),"t04"), Subst(Alltrim (t04.clinomx),1,40), "No Hay Cliente")
replace bimponi WITH t01->factotal
ENDIF
SELECT 1
SKIP
enddo
close databases
Consideraciones:
Como hago para evitar el copy to ya que hago esto para filtrar los registros por mes y año de acuerdo a la fecha del sistema, que sucede si quieren un reporte de un mes pasado tuviera que cambiar la fecha del sistema manualmente, en las tres tablas almacenan registros de todos los años. Quiero colocar dos combos uno para elegir el mes y el otro para el año por ejem elijo mes "11" y 2008 de acuerdo a lo que elijo en los combos tuviera que filtrarlos en las tablas. La tabla A tiene el campo fec_emi, B el campo fec_v y C el campo fec_ven Espero haber sido explicito. Espero tu apoyo. Gracias.
1 Respuesta
Respuesta de Cesar Enrique Yamunaque Baca
1