Está en la página 1de 36

MANEJO DEL FOX ORIENTADO AL SIAF

DIRECCIONAMIENTO A LA BASE DE DATOS

Para Direccionarse a una tabla de la BASE de DATOS del SIAF se debe de realizar la siguiente
Instrucción:
SET DEFAULT TO C:\SIAF_PRESUPUESTO\DATA , luego Enter

PARA ABRIR Y VISUALIZAR UNA TABLA DE LA BASE DE DATOS

Con la Instrucción USE se abre una tabla y con BROWSE se crea una ventana de
visualización de los datos de esa tabla en forma horizontal.
Ahora lo que haremos es abrir y visualizar una tabla llamada EXPEDIENTE.DBF ( No
es necesario poner la extensión DBF ,que es la extesión que se le da a las tablas,
como se ve en la pantalla) , que forma parte de una BASE DE DATOS llamado
SIAF.DBC ( DBC es la extensión que se le da a las Bases de Datos) que se encuentra
dentro de la carpeta DATA.

USE EXPEDIENTE , luego Enter


BROWSE, luego Enter

-1-
BUSQUEDA DE REGISTROS
Cuando se quiere buscar registros en una tabla, se ejecuta la siguiente instrucción .
BROWSE FOR ANO_EJE=’2012’ , luego Enter
Este Filtro es por año , nótese que se utiliza los apostrofes.

BROWSE FOR EXPEDIENTE= '0000000002' , luego Enter ó


BROWSE FOR VAL(EXPEDIENTE)= 2 , luego Enter

En este caso la búsqueda la hacemos por expediente. Las 2 formas tienen un mismo fin, buscar
el expediente numero 2. En una se utilizan los apostrofes en otra no. De ahí sacamos que

-2-
VAL (): Devuelve el valor numérico de una expresión de tipo carácter compuesta por
dígitos.

Si se quiere hacer la búsqueda por Año y Expediente , la instrucción sería :

BROWSE FOR VAL(expediente)=2 AND ano_eje='2012' , luego Enter


Nótese que para agregar un critério de búsqueda mas, se pone AND.

El filtro de registros puede tener varios criterios de búsqueda.


Aquí le mostramos una serie de instrucciones anidadas, aplicadas a la tabla ACUMULADO.DBF

BUSQUEDA DE VARIOS REGISTROS POR UN SOLO CRITERIO


El Filtro de varios registros en una tabla, por un mismo criterio de búsqueda se da con la
función INLIST.

USE EXPEDIENTE , luego Enter


BROWSE FOR ANO_EJE=’2012' AND INLIST(VAL(EXPEDIENTE),22,23,24,25) , luego
Enter

-3-
Aquí se está buscando en la tabla expediente varios registros del 2012. Nótese que INLIST
agrupa varios registros en solo criterio de búsqueda (expediente).

ELIMINACION DE REGISTROS MANUALMENTE


Para eliminar registros en una tabla , se tiene que tener abierta la misma. Luego se procede a
marcar (mediante un click) , el primer casillero de la izquierda del registro que desee eliminar.

-4-
Ver que la tabla que se escoge para esta demostración es EXPEDIENTE_NOTA.DBF. Se
marcan en negrita los registros pertenecientes al expediente numero 1 del año 2012, que son los
que se quieren eliminar.

Luego , damos CTRL + W (esta combinación de teclas es para cerrar y grabar las
modificaciones hechas a la tabla) y para terminar se da PACK (este comando sirve para
eliminar físicamente de la tabla , los registros que estén marcados en negrita o deleteados, de
ahí la importancia que tiene el proceso, ELIMINACION FISICA DE REGISTROS, en el
SIAF pues te limpia la DATA de registros inservibles o desechados)

PACK , luego Enter

-5-
En la pantalla se muestra la secuencia seguida.

Después del PACK a la tabla , se eliminan físicamente de la tabla EXPEDIENTE_NOTA los


registros marcados o DELETEADOS.
Luego, al volver a mostrar la tabla con BROWSE, se ve que no existe mas el expediente
numero 1 de la tabla EXPEDIENTE_NOTA.

ELIMINACION TOTAL DE REGISTROS DE UNA TABLA


Para eliminar totalmente el contenido de una tabla se usa la instrucción ZAP
En este caso usaremos la tabla ACUMULADO.DBF y para ver que tiene información se le
dará un BROWSE

-6-
Luego usaremos ZAP y emergerá un mensaje que preguntará si procede o no a limpiar la tabla

-7-
Luego de poner SI. Procedemos a ver el contenido de la tabla con BROWSE y vemos que no
hay nada, producto del ZAPEADO de la tabla.

REEMPLAZANDO DATOS
Para reemplazar los datos de uno o más registros en una tabla se utiliza REPLACE ALL.
Antes, vemos con BROWSE todo el contenido de la tabla

-8-
TIPO_RECURSO_EJEC_x_MES.DBF , (que es la que usaremos en este ejemplo).

Se ve que esta con el año 2007. Ahora lo que haremos es cambiar el campo Ano_eje, de 2007 a
2008 , usando el REPLACE ALL.

USE tipo_recurso_ejec_x_mes , luego Enter


REPLACE ALL ano_eje WITH ‘2007’ FOR ano_eje=’2008’ , luego Enter
Lo que se puede traducir en:
Reemplazar todos los datos del campo ano_eje con el valor 2007 para todos los que tienen el
valor 2008 en el campo ano_eje actualmente.

-9-
Verá que los datos del año ya cambiaron de 2007 a 2008

Ó tambien

USE tipo_recurso_ejec_x_mes , luego Enter


REPLACE ALL tipo_recurso WITH ‘M’ FOR tipo_recurso=’L’ , luego Enter

Lo que se puede traducir en:

Reemplazar todos los datos del campo tipo_recurso con el valor M para todos los que tienen el
valor L en el campo tipo_recurso actualmente.

- 10 -
Ud. Verá que los datos del campo tipo_recurso ya cambiaron de L a M.
INSERTAR REGISTROS
Para insertar registros usaremos la misma tabla TIPO_RECURSO_EJEC_x_MES.DBF y se
usara las teclas CTRL + Y , para agregar un nuevo registro.

- 11 -
Siguiendo la secuencia del caso anterior acerca del REEMPLAZO DE DATOS .
Al momento de dar el CTRL + Y (esta combinación de teclas es para insertar un registro
en la tabla ), automáticamente se activará la ultima línea de la tabla que se muestra.
Es ahí donde se ingresará los datos del nuevo registro.

RECONOCIENDO EL FORMATO DE LOS DATOS


Ingresando a la tabla EXPEDIENTE_SECUENCIA filtramos por año 2012 y por el
expediente número 5.

Luego nos ubicamos con los cursores en el campo fecha_doc, cuyo formato es de fecha.
Si lo comparamos con los campos ano_eje, num_doc o moneda veremos que los tipos de datos
que contienen no son iguales.

- 12 -
Para ver el tipo de dato que contienen los campos de las tablas y así poder definir las bien
instrucciones, usaremos el MODIFY STRUCTURE.

Se verá que hay un campo llamado TYPE, donde se podrá ver el tipo de datos.
Si no supiéramos el Tipo de datos habría problemas para visualizar los registros, escribiendo
instrucciones que no corresponden a su tipo de datos.

Por ejemplo si quiere filtrar un campo con formato de fecha o numérico , con los apostrofes
que utilizamos normalmente en un campo con formato de variable (campo ano_eje o
expediente, en la tabla EXPEDIENTE_SECUENCIA) , entonces ocurrirá un error. Como se
muestra en la pantalla.

- 13 -
- 14 -
Eso pasa porque se trato de filtrar lo datos con formato de fecha y númerico con los apostrofes
( ‘’ ) de por medio. Lo correcto debió ser :
Para mostrar un campo númerico

Y Para mostrar registros con formato de fecha se agrega el CTOD ( )

- 15 -
HABILITANDO LOS ESTADOS DE ENVIO
MODULO PARA MODIFICACION PRESUPUESTAL
para Unidad y Pliego ( módulo PTO Y PLIEGO)

1) TRANSMISION DE METAS PRESUPUESTALES


TABLAS RELACIONADAS .- TMP_META_2009.DBF ( Donde se manejan los estados ) y
META.DBF
TABLA DE ESTADOS - META PRESUPUESTAL

ESTADO DE META COLOR ESTADO ESTADO_ENVIO

Recien Creado Azul U P

Habilitado para envío Verde U N

Transmitido Plomo U T

Rechazado Rojo R R

Aprobado Negrito A A

2) TRANSMISION DE MODIFICACION DE DATOS DE LA META


PRESUPUESTARIA
TABLAS RELACIONADAS.- META_MODIFICACION.DBF ( Donde se manejan los estados )

TABLA DE ESTADOS – MODIFICACION DE META PRESUPUESTAL

ESTADO DE META COLOR ESTADO ESTADO_ENVIO

Recien Creado Azul A P

Habilitado para envío Verde A N

Transmitido Plomo A T

Rechazado Rojo A R

Aprobado Negrito A A

3) TRANSMISION DEL AVANCE FISICO DE META PRESUPUESTAL


TABLAS RELACIONADAS .- META_TRIMESTRAL.DBF ( Donde se manejan los estados )
TABLA DE ESTADOS – AVANCE FISICO DE METAS PRESUPUESTARIAS

ESTADO DE META COLOR ESTADO ESTADO_ENVIO

Recién Creado Azul N P

Habilitado para envío Verde N N

Transmitido Plomo N T

Rechazado Rojo N R

Aprobado Negrito N A

- 16 -
4) TRANSMISION DE NOTAS DE MODIFICACION PRESUPUESTARIA
COMO PTO
TABLAS RELACIONADAS.- NOTA_MODIFICATORIA_SEC.DBF

TABLA DE ESTADOS – NOTA DE MODIFICACION PRESUPUESTAL COMO PTO

ESTADO DE NOTA MODULO COLOR ESTADO ESTADO ENVIO ESTADO2 ESTADO_ENVIO


2

Recién Creado PTO Azul N P En Blanco En Blanco

Habilitado para PTO Verde N N En Blanco En Blanco


envío

Transmitido PTO Plomo N T En Blanco En Blanco

Rechazado del MEF Rojo R R En Blanco En Blanco

Aprobado del MEF Negro N T N P

5) TRANSMISION DE NOTA DE MODIFICACION PRESUPUESTARIA COMO


PLIEGO
TABLAS RELACIONADAS.- NOTA_MODIFICATORIA_SEC.DBF y
NOTA_MODIFICATORIA_DOC.DBF

TABLA DE ESTADOS – NOTA DE MODIFICACION PRESUPUESTAL COM O PLIEGO

ESTADO DE NOTA MODULO COLOR ESTADO ESTADO MODULO ESTADO ESTADO ESTADO2 ESTADO
ENVIO ENVIO ENVIO2
TABLAS
ESTADO NOTA_MODIFICATORIA_DOC.DBF NOTA_MODIFICATORIA_SEC.DBF
Aprobación del
MEF, envió de PLIEGO -------- -------- -------- PTO N T N P
Nota desde PTO
Se Aprueba
como PLIEGO PLIEGO Azul V P PTO N T V P
nota enviada de
PTO

Habilitado para PLIEGO Verde V N PTO N T V P


envío Nota del
Pliego

Transmitido PLIEGO Plomo V T PTO N T V P


desde el Pliego

Rechazado del Rojo R R PTO R R R R


MEF PLIEGO

Aprobado del PLIEGO Negro A A PTO A A A A


MEF

6) TRANSMISION DE EVALUACION PRESUPUESTAL


TABLAS RELACIONADAS.- TMP_CONTROL_EVALUACION.DBF (Donde se manejan los
estados);

- 17 -
TABLA DE ESTADOS – EVALUACION PRESUPUESTAL
Indicador de ESTADOS del Cierre y Envío de la EVALUACION PRESUPOUESTAL

ESTADO DE NOTA MODULO COLOR ESTADO ENVIO

Recién Creado PLIEGO Azul P

Habilitado para PLIEGO Verde N


envío

Transmitido PLIEGO Plomo T

Aprobado del MEF Negro A

MODULO ADMINISTRATIVO CONTABLE


para Unidad ( módulo EJEC)

1) TRANSMISION DE EXPEDIENTES
TABLAS RELACIONADAS .- Las tablas que se muestran líneas abajo son todas las que
comprenden a la transmisión de expedientes. El uso de todas o una parte de las tablas,
estará supeditada a los CICLOS (Gasto o Ingreso), FASES (Determinado y Recaudado ó
Compromiso, Devengado y Girado) y SECUENCIAS (Anulaciones, Rebajas, Devoluciones,
etc) de los REGISTROS SIAF

EXPEDIENTE_NOTA.DBF
EXPEDIENTE_DOCUMENTO.DBF
EXPEDIENTE_META.DBF
EXPEDIENTE_CLASIF.DBF
EXPEDIENTE_INGRESO.DBF
EXPEDIENTE_SECUENCIA.DBF
EXPEDIENTE_FASE.DBF
EXPEDIENTE.DBF

TABLA DE ESTADOS – EXPEDIENTE

ESTADO EXPEDIENTE COLOR ESTADO_ENVIO

Nuevo Azul P

Habilitado para envío Verde N

Transmitido Plomo T

Rechazado Rojo R

Aprobado Negro A

2) TRANSMISION DE MODIFICACION DE REGISTRO SIAF


TABLAS RELACIONADAS.- EXPEDIENTE_MODIFICACION.DBF (Donde se manejan los
estados)

TABLA DE ESTADOS – MODIFICACION DE EXPEDIENTE

ESTADO DE COLOR ESTADO_ENVIO


MODIFICACION DE
EXPEDIENTE

Nuevo Azul P

- 18 -
Habilitado para envío Verde N

Transmitido Plomo T

Rechazado Rojo R

Aprobado Negro A

3) TRANSMISION DE MODIFICACION DE TIPO DE ANULACION


TABLAS RELACIONADAS .- ADM_MODIFICACION_LOG.DBF (Donde se manejan los
estados)

TABLA DE ESTADOS – MODIFICACION DE TIPO DE ANULACION

Tablas Expediente Expediente Expediente Expediente Expediente Expediente Expediente Expediente


Fases Fase Secuencia Ingreso Meta Clasif Nota Documento
Compromiso X X X X X X
Devengado X X X X X
Girado X X X X X X
Rendición X X X X X
Determinado X X X X X
Recaudado X X X X X

ESTADO DE COLOR ESTADO_ENVIO


MODIFICACION TIPO
ANULACION

Nuevo Azul P 4) TRANSMISION DE


REDISTRIBUCION DE TIPO
Habilitado para envío Verde N DE RECURSO
Transmitido Plomo T
TABLAS RELACIONADAS.-
.CALENDARIO_DISTRIBUIDO_CA
Rechazado Rojo R B.DBF (Donde se manejan los
estados)
Aprobado Negro A

TABLA DE ESTADOS – REDISTRIBUCION DE TIPO DE RECURSO

ESTADO DE COLOR ESTADO_ENVIO


REDISTRIBUCION TR

Nuevo Azul P

Habilitado para envío Verde N

- 19 -
Transmitido Plomo T

Rechazado Rojo R

Aprobado Negro A

GENERACION DE EXE ( APLICACIÓN )

1 ) Una vez editado el programa se graba con el mismo nombre de la plantilla o con
otro nombre para poder identificarlo. En FILE  SAVE AS

- 20 -
2) En este caso lo llamaremos NUEVO_PROGRAMITA ( la extensión por ser un
programa será PRG ) Luego vamos a FILE  NEW

3) Estando activo PROJECT damos clic en NEW FILE , se va a pedir un nombre al


proyecto por defecto le ponemos el que sale ( no importa el nombre que se ponga ) .

- 21 -
4) Una vez guardado sale otra ventanita. Situarnos en CODE y hacer clic en la cruzecita
para que nos muestre PROGRAM ( seleccionandolo se activa el botón ADD )

- 22 -
5) Dando clikc en ADD (agregar) uno tendra que ubicar el prg
NUEVO_PROGRAMITA.PRG que previamente hemos creado. Una vez adicionado
nos sale el botón activo BUILD ( generar)

6) Dando click a BUILD (generar) nos muestra una ventanita como esta. Activar el
check y las casillas que estan activas en el print. Luego damos clic en OK y nos muestra
- 23 -
una ventanita para poner el nombre y la ubicación del ejecutable (EXE o lobito ) que
generaremos.

7) Lo llamaremos igual que el PRG osea NUEVO_PROGRAMITA

Luego se buscará el EXE en la dirección que se ha guardado para enviarlo a la unidad


que lo requiera.

- 24 -
REPARACION DE TABLAS EN FOX- Orientada al SIAF

Para entender los problemas de TABLA o DATA, les paso a detallar el significado de
las extensiones en fox.

Extensión:
DBF (tabla)  ej: EXPEDIENTE.DBF (tabla expediente)
CDX (índice de la tabla)  ej: ASIENTO.CDX (índice de tabla asiento)
DBC (Base de datos- contenedor)  ej: SIAF.DBC (base de datos siaf)
DCT (índice de base de datos)  ej: SIAF.DCT (índice base de datos siaf)

Antes de compartirles algunos conocimientos acerca de la reparación de tablas, les


quiero recordar que casi todos los procedimientos para una correcta solución son en
base a una DATA backup (copia de seguridad), que siempre se debe de realizar a la
información del SIAF, por lo menos una vez a la semana o en el peor de los casos al
actualizar una nueva versión.

Muchas veces, errores inesperados como daño de disco duro, ocasionan la perdida total
de la información de la municipalidad. Es por eso que una copia de seguridad de la
carpeta DATA del SIAF resulta indispensable. Se recomienda que esta copia de
seguridad sea guardada en otra maquina que no sea la que usa el SIAF o SERVIDOR,
ya que un daños de disco podría hacer que tanto la DATA del SIAF como su BACKUP
sean irrecuperables.

A continuación les muestro mi proceder ante los errores en tablas o DATA dañada.
Se dará cuenta que siempre opto por GENERAR INDICE para saber exactamente que
tablas es la que presenta el error, sea cual fuese este. Si ese proceso no puede detectar el
error, como segunda opción utilizo el programita llamado
CORRIGE_TABLAS_DAÑADAS_V02.EXE.

Necesariamente debemos saber que tabla esta dañada para operar sobre ella.
Al igual que en la EDICION 3 de TRANSMISIONES, agrupo los errores en 3 tipos
bien definidos al ejecutar el SIAF.

TIPOS DE ERROR

CASO 1 - TABLA ESTA DAÑADA. SE DEBE DE REPARAR ANTES DE


VOLVER A UTILIZARLA. Sea en cualquier tabla, expediente.dbf, Asiento.dbf,
Asiento_cuenta.dbf, medio_pago.dbf etc.

- 25 -
Ir a usuarios:PROCESOS clave A

Escojo la opción GENERAR INDICE

- 26 -
A mi me interesa la primera PANTALLA DE ERROR que sale, no la segunda ni la
tercera, puesto que estas aparecen a raíz de la primera. Con esto puedo identificar que
tabla presenta el error. En este ejemplo el error es el ASIENTO.DBF, como podemos
ver en el MENSAJE DE ERROR , de la parte central de la pantalla.

Si intentamos entrar a la tabla por el FOX veremos que el mensaje es el mismo La tabla
esta dañada. Se debe de reparar antes devolver a utilizarla

- 27 -
Ante este problema ya existe un programita llamado corrige_tablas_dañadas_v02.exe

El programita primero detecta el error

- 28 -
Luego el programa procederá a solucionar el problema presentado en la tabla dañada.

CASO 2 - EL INDICE NO CORRESPONDE A LA TABLA. ELIMINE


EL ARCHIVO DE ÍNDICE Y VUELVA A CREAR EL ÍNDICE.

- 29 -
Cuando sale este mensaje de error, normalmente la opción GENERAR INDICE no
muestra la tabla dañada, como muestra el mensaje del centro de pantalla.

Entonces será necesario correr el programita corrige_tablas_dañadas_v02.exe,


para que nos muestre en pantalla, la tabla que se encuentra con problemas. En este
ejemplo la tabla dañada es EXPEDIENTE.DBF y si bien es cierto el ejecutable no
puede solucionarlo, nos muestra que debemos analizar.
Como se ve en la siguiente figura, la tabla dañada es EXPEDIENTE.DBF

- 30 -
Si tratamos de abrir esa tabla por fox veremos que sale el mismo error (en ingles). EL
índice no corresponde a la tabla. Elimine el archivo del índice y vuelva a crear el
índice.

Viendo en el explorador de Windows, la tabla EXPEDIENTE tanto DBF como CDX,


notamos que el CDX, tiene un tamaño 2 KB. Bastante poco en relación al DBF.
Eso quiere decir ,que va a ser necesario reemplazar de una DATA backup de la misma
unidad y la misma versión, el archivo EXPEDIENTE.CDX, en la data con el expediente
dañado.

- 31 -
Una vez remplazado el archivo EXPEDIENTE.CDX , el problema quedará resuelto.
Para confirmar esto entramos al módulo PROCESOS y damos GENERAR INDICE.

Del caso 1 y 2, sacamos como conclusión que del GENERAR INDICE y de la


ejecución del programa CORRIGE_TABLAS_DAÑADAS_V02.EXE
Tendremos información suficiente para apuntar nuestros conocimientos en la solución
del problema.

CASO 3 - LA PROPIEDAD DE LA CLAVE PRINCIPAL NO ES


VALIDA O CUALQUIER ERROR QUE IMPLIQUE NO
COINCIDENCIA EN LOS CAMPOS DE LAS TABLAS
Este error nos muestra este mensaje en el GENERAR INDICE

- 32 -
Y este al correr el programa CORRIGE_LA_TABLA_ESTA_DAÑADAS_V02.EXE

CASO 4 – SE INFRINGE UNICIDAD DEL INDICE.

Al momento de generar índice debe mostrar un mensaje como este

- 33 -
Seguidamente migramos la información de esa tabla a un archivo de texto con el COPY
TO

Después de chancar el DBF y CDX de la misma tabla pero de una DATA buena
cualquiera, tenemos que limpiar totalmente estas, con el comando ZAP

- 34 -
Seguidamente procedemos a AGREGAR nuevamente los datos que migramos a un
archvo de texto con el APPEND FROM, este se detendrá justamente al agregar el
registro que se esta duplicando.

A partir de ahí tenesmo que analizar con el archivo de texto y la tabla abierta abieta la
solución a este error.

- 35 -
- 36 -

También podría gustarte