jose vicente gracias x responder, ahi te alcanzo mi codigo fuente.
MAIN.PRG es en donde abro las tablas dbf al inicio
Code: Select all | Expand
...
...
IF !(VALTYPE( AbreDbf("ARTICULO", .T., .F. , , cPathDbf+cSubCarp, {"articulo" }, "Articulos" ) ) == "O" .AND. ;
VALTYPE( AbreDbf("PATRON", .T., .F. , , cPathDbf+cSubCarp, {"PATRON" }, "Patrones" ) ) == "O" .AND. ;
VALTYPE( AbreDbf("PERSONA" , .T., .F., , cPathDbf, {"PERSONA"},"Personas") ) == "O" .AND. ;
VALTYPE( AbreDbf("IGV" , .T., .F., , cPathDBF, , "I.G.V." ) ) == "O" .AND. ;
VALTYPE( AbreDbf("PORC" , .T., .F., , cPathDBF, , "Porcentaje" ) ) == "O" .AND. ;
VALTYPE( AbreDbf("UBICA" , .T., .F., , cPathDBF, {"UBICA" }, "Ubicaciones" ) ) == "O" .AND. ;
VALTYPE( AbreDbf("UBIGEO" , .T., .F., , cPathDBF, {"UBIGEO" }, "Ubicacion Geografica" ) ) == "O" .AND. ;
VALTYPE( AbreDbf("CODERROR", .T., .F., , cPathDBF, {"CODERROR" }, "Codigo de Errores" ) ) == "O" .AND. ;
VALTYPE( AbreDbf(cDbfGuia , .T., .F., "CABGUIA", cPathDbf, {cDbfGuia}, "Cabecera") ) == "O" .and. ;
VALTYPE( AbreDbf(cDbfDGuia , .T., .F., "DETGUIAD", cPathDbf, {cDbfDGuia}, "Movimientos de guias" ) ) == "O" .AND. ;
VALTYPE( AbreDbf(cDbfParte , .T., .F., "CABPARTE", cPathDbf, {cDbfParte}, "Cabecera de Parte") ) == "O" .and. ;
VALTYPE( AbreDbf(cDbfdParte , .T., .F., "DETPARTE", cPathDbf, {cDbfdParte}, "Movimientos de partes" ) ) == "O" .AND. ;
VALTYPE( AbreDbf("TIPNOTA" , .T., .F. , , cPathDBF, {"TIPNOTA"}, "Tipos de Nota" ) ) == "O" .AND. ;
VALTYPE( AbreDbf(cDbfNc, .T., .F., "CABNC", cPathDbf, {cDbfNc}, "Cabecera de NC") ) == "O" .and. ;
VALTYPE( AbreDbf(cDbfDNc, .T., .F., "DETNC", cPathDbf,{cDbfDNc}, "Detalle de NC") ) == "O" .and. ;
VALTYPE( AbreDbf(cDbfFac , .T., .F., "FACTURA", cPathDbf, {cDbfFac}, "Facturas" ) ) == "O" .AND. ;
VALTYPE( AbreDbf(cDbfDFac , .T., .F., "DETFAC", cPathDbf, {cDbfDFac} ,"Detalle de Facturas" ) ) == "O" .AND. ;
VALTYPE( AbreDbf(cDbfAnu , .T., .F., "ANULADA", cPathDbf, {cDbfAnu} ,"Comprob. Anulados" ) ) == "O" .AND. ;
VALTYPE( AbreDbf("CONPAG" , .T., .F., , cPathDBF, {"CONPAG"}, "Condiciones de Pago" ) ) == "O" .AND. ;
VALTYPE( AbreDbf("MCODI" , .T., .F., , cPathDbf+cSubCodi, {"MCODI"}, "Proveedores" ) ) == "O" .AND. ;
VALTYPE( AbreDbf("EMPRESA" , .T., .F. , , cPathDBF, {"empresa"}, "Empresas" ) ) == "O" ;
)
lOk:=.f.
Msgalert("El archivo esta siendo usado")
IIF( Select("PERSONA" ) <> 0, PERSONA->( DBCLOSEAREA() ), )
IIF( Select("IGV" ) <> 0, IGV->( DBCLOSEAREA() ), )
IIF( Select("PORC" ) <> 0, PORC->( DBCLOSEAREA() ), )
IIF( Select(cDbfGuia) <> 0, (cDbfGuia)->( DBCLOSEAREA() ), )
IIF( Select(cDbfDGuia) <> 0, (cDbfDGuia)->( DBCLOSEAREA() ), )
IIF( Select(cDbfParte) <> 0, (cDbfParte)->( DBCLOSEAREA() ), )
IIF( Select(cDbfdParte) <> 0, (cDbfdParte)->( DBCLOSEAREA() ), )
IIF( Select("MCODI") <> 0, MCODI->( DBCLOSEAREA() ), )
IIF( Select("ARTICULO") <> 0, ARTICULO->( DBCLOSEAREA() ), )
IIF( Select("CONPAG") <> 0, CONPAG->( DBCLOSEAREA() ), )
IIF( Select("EMPRESA" ) <> 0, EMPRESA->( DBCLOSEAREA() ), )
IIF( Select("PATRON" ) <> 0, PATRON->( DBCLOSEAREA() ), )
IIF( Select("Factura") <> 0, Factura->( DBCLOSEAREA() ), )
IIF( Select("detfac") <> 0, detfac->( DBCLOSEAREA() ), )
IIF( Select("ANULADA") <> 0, ANULADA->( DBCLOSEAREA() ), )
IIF( Select("Ubica") <> 0, Ubica->( DBCLOSEAREA() ), )
IIF( Select("Ubigeo") <> 0, Ubigeo->( DBCLOSEAREA() ), )
IIF( Select("CodError") <> 0, CodError->( DBCLOSEAREA() ), )
IIF( Select("CABNC") <> 0, CABNC->( DBCLOSEAREA() ), )
IIF( Select("DETNC") <> 0, DETNC>( DBCLOSEAREA() ), )
IIF( Select("TIPNOTA") <> 0, TIPNOTA->( DBCLOSEAREA() ), )
ENDIF
LIBSIS.PRG, prg contiene las funciones del sistema
Code: Select all | Expand
FUNCTION AbreDBF( cFile, lRed, lSoloLee, cAlias, cPath, aNtx, cName )
LOCAL oDBF, i
MEMVAR cPathDBF
MEMVAR Exten
//Chk defaults
DEFAULT lRed := .T.
DEFAULT lSoloLee := .F.
DEFAULT cAlias := cFile
DEFAULT cPath := cPathDBF
DEFAULT cName := cFile
DEFAULT aNtx := NIL
//Chk existencia de Archivos
IF !FILE( cPath+cFile+".DBF" )
MsgBox(2,"No existe el Archivo:"+cName+".DBF")
Return ( 1 )
ENDIF
//Abre Archivo
DBUSEAREA( .T.,"DBFCDX",cPath+cFile+".DBF", cAlias, lRED, lSoloLee )
//Si no hay error retorna objeto
IF !NETERR()
//Abre Indices Pasados en aNtx
If aNtx != NIL
FOR i:=1 TO LEN(aNtx)
IF FILE( cPath+aNtx[i]+Exten )
(cAlias)->( DBSETINDEX( cPath+aNtx[i]+Exten ) )
ELSE
MsgBox(2,"No existe Indice : "+aNtx[i]+Exten)
RETURN ( -2 )
ENDIF
NEXT
Endif
DATABASE oDBF
oDBF:bEof := {|| NIL }
oDBF:bBof := {|| NIL }
ELSE
//si hay error retorna un numero 0
MsgBox(2, "No se puede abrir el archivo "+cName+" - Esta siendo usado." )
oDBF := 0
ENDIF
RETURN ( oDBF )
BRWFACTU.PRG, modulo para visualizo las facturas con xbrowse
Code: Select all | Expand
FUNCTION BrwFactu()
LOCAL oBtn
LOCAL nKey
LOCAL aDatos := {}, nVer, nHor
cMes :=StrZero(mMes,2)
select FACTURA
set relation to factura->ruc into mcodi
SELECT FACTURA
DATABASE oDbf //<==== AQUI BOTA ERROR de msje ORDKEYNO() o Alias no existe
//la primera vez que entro no bota error, salgo del modulo y vuelvo a entrar se cae el prog. lanzando el msje ORDKEYNO u otro msje como ALIAS NO EXISTE
//Con fwh13.07 no tuve problema pero con la vers. fwh1712 sale error
INDEX ON facbol+numero TAG d:\cabfac to d:\cabfac temporary for factura->CodUsu+factura->mes=MEMVAR->CodUsu+StrZero(mMes,2) .and. factura->estenv <> ' ' .and. year(factura->fecha) = mAnio descending //ADDITIVE
factura->(dbgotop())
DEFINE DIALOG oDlg RESOURCE "BRW_FACTURA" TITLE "Facturas/Boletas/NCs" FONT oFontS
REDEFINE SAY oSay PROMPT cString ID 111 OF oDlg //1
REDEFINE XBROWSE oBrw ;
COLUMNS "FACBOL","dtoc(FECHA)","NUMERO","RAZSOC","IIF(MONEDA=='S', 'S/.', 'US$')",;
"MONTO","DSCTOV","NETO","IGV","TOTAL", "iif(factura->estanu='A', FACTURA->FBaja, '')" ;
ALIAS "FACTURA" ;
FIELDSIZES 28,66,74,200,30,85,60,60,60,85,66 ;
HEADERS ;
"F/B/C" ;
,"FECHA" ;
,"NUMERO" ;
,"CLIENTE" ;
,"MON." ;
,"T.BRUTO" ;
,"T.DSCTO" ;
,"SUBTOT" ;
,"IGV" ;
,"TOTAL" ;
,"F.BAJA" ;
PICTURES nil,"99/99/9999","@R 999-9999999",nil, nil, "99,999,999.99", "@999,999.99","999,999.99","999,999.99","99,999,999.99",nil ;
ID 4001 OF oDlg ; //2
LINES CELL NOBORDER ;
UPDATE
oBrw:aJustify := {.F.,.F.,.F.,.F.,.F.,.T.,.T.,.T.,.T.,.T.,.F.}
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW
oBrw:l2007 := .f.
oBrw:bClrHeader := {|| { CLR_HBLUE,RGB(232, 255, 232) } }
oBrw:nStretchCol := STRETCHCOL_WIDEST
oBrw:LVscroll := .T.
oBrw:LHscroll := .T.
oBrw:bClrStd = {|| IF( FACTURA->EstAnu="A", { CLR_BLACK, RGB(200, 43, 62) } , { CLR_BLACK, RGB(232, 255, 232) } ) } // STANDAR
oBrw:bClrSelFocus = {|| { CLR_WHITE, GetSysColor(13 ) } } // CUANDO TIENE EL FOCUS
oBrw:bClrSel = {|| IF( FACTURA->EstAnu="A", { CLR_BLACK, RGB(200, 35, 18) } , { CLR_BLACK, RGB(232, 255, 232) } ) } // REGISTRO SELECCIONADO
REDEFINE BUTTON oBtn ID 210 OF oDlg ; //3
ACTION ( iif(FACTURA->FacBol='F', rFactura1T(FACBOL+NUMERO) , ;
iif(FACTURA->FacBol='B',rBoleta1T(FACBOL+NUMERO),rCredito1T(FACBOL+NUMERO))), pone_cursor() )
oBtn:cTooltip := "Impresion de Comprobante"
REDEFINE BUTTON oBtn ID 18 OF oDlg ; //4
ACTION ( rGuia1(FACBOL+NUMERO), pone_cursor() )
oBtn:cTooltip := "Impresion de Guia de Remision"
REDEFINE BUTTON oBtn ID ID_CANCEL OF oDlg ; //5
ACTION ( oDlg:End() ) CANCEL
oBtn:cTooltip := "Sale de la ventana"
REDEFINE BUTTON oBtn ID 4002 OF oDlg ; //6
ACTION IIF(FACTURA->EstAnu<>'A', (IIF(FACTURA->FACBOL="B",iif(iif(empty(cUserTda),Pide_ClaveR(),.T.), AnularBol(),) ,AnuCpe()), Pone_Cursor()), )
oBtn:cTooltip := "Anulacion de Comprobante"
REDEFINE BUTTON oBtn ID 4003 OF oDlg ; //7
ACTION ( Validar_CPE(), Pone_Cursor(oBrw) )
oBtn:cTooltip := "Validar Anulacion"
ACTIVATE DIALOG oDlg NOWAIT ON INIT (oDlg:MOVE(100,100), oBrw:SetFocus())
return nil