Wcontapre: algunos trucos y secretos
|
-
Uso de la condición lógica optativa...
La condición lógica optativa te permitirá sacar el máximo partido a los listados
y resúmenes por impresora, así como a algunas consultas, pudiendo acotar el listado hasta la mínima expresión.
Dependiendo de los listados y si estas en ejercicio corriente o futuros,
variarán los campos que podrás usar para construir la condición o conjunto de
condiciones.
Para ello, tienes los siguientes operadores:
Operadores lógicos
.AND. ( Y lógico )
.OR. ( O lógico )
.NOT. ( NO lógico, también lo puedes sustituir por el símbolo !)
Ten en cuenta los puntos, antes y después de cada palabra.
Operadores relacionales
> ( mayor que...)
< ( menor que...)
<> (distinto de...)
>= ( mayor que o igual a...)
<= ( menos que o igual a...)
== ( exactamente igual a...)
= ( igual a...)
$ (subcadena, para encontrar una cadena de caracteres dentro de otra)
A continuación veremos los distintos campos que puedes utilizar.
Campos utilizables en listados y fichas de ejercicio corriente
(Date cuenta de que los valores para campos de caracteres, van entre comillas)
TIPO ( numérico, p.e. field->Tipo == 300 ).
SIGNO ( numérico, p.e. field->Signo == 1 ).
SECCION ( caracteres, p.e. field->Seccion == "13" ).
SERVICIO ( caracteres, p.e. field->Servicio <> "02" ).
PROGRAMA (caracteres, p.e. field->Programa > "111A" ).
ECONOMICA ( caracteres, p.e. field->Economica = "2" ).
FUNCION ( caracteres. Solo si usas el centro de coste).
PROYECTO ( caracteres. p.e. field->Proyecto <> "00000000" ).
TERCERO( caracteres, se refiere al NIF del tercero, p.e. field->Tercero ==
"0095456235X" ).
ASIENTO ( caracteres, se refiere al nombre del tercero, p.e. field->Asiento = "PEREZ"
).
NOMPROYECT (caracteres, se refiere a la explicación del asiento. P.e. "FACTURA
1234/04" $ field->Nomproyect).
NOTA ( caracteres, se refiere al contenido de las observaciones. P.e. "REPARO
123" $ field->Nota ).
RCNUM, ANUM, ADNUM, ONUM (caracteres, p.e. field->Onum = "01234")
CODEX (caracteres, se refiere al campo CLAVE. P.e. field->Clave == "0023").
INTERNUM (nº de captura del PICCAC, tendrás que usas la función val()
para que funcione, p.e. val(field->Internum) > 1000. La otra alternativa más
engorrosa, es usar ceros a la izquierda: field->Internum > "0000001000"
).
EXPNUM ( Nº de operación del PICCAC. Vale lo dicho en el caso anterior. P.e. val(
field->Expnum ) < 500 , o field->Expnum < "00000500" ).
INTERNUM2 (Nº de expediente del PICCAC. Vale lo dicho en los dos casos
anteriores. No debes poner los guiones. P.e. Val( Field->Internum2 ) = 41030718,
o field->Internum2 = "41030718" ).
AREA (caracteres, p.e. field->Area == "999").
ANO ( caracteres, se refiere a si es o no es plurianual. P.e. field->Ano == "S"
).
IMPORT( numérico, p.e. field->Import > 10000.50 ).
FECHA ( campo fecha, se refiere a la fecha del asiento. Para construir la
condición, te hace falta usar la función ctod(). P.e. field->Fecha >=
ctod("05-02-2004" . La función ctod() convierte la cadena "05-02-2004" a una
variable tipo fecha para poder compararla con los datos de los campos).
FECHA2 (Se refiere a la fecha de Intervención. A usar como en el caso anterior).
Campos utilizables en resúmenes de ejercicio corriente
SECCION, SERVICIO, PROGRAMA, ECONOMICA, FUNCION, PROYECTO ( igual que en la
sección anterior)
OBJETIVO (caracteres. P.e. field->Objetivo == "714HA" )
FINANCIA (numérico. P.e. Field->Financia <> 28 ).
MC000, MC210, MC220, MC221, MC230, MC231, MC240, MC250, MC260, MC270, MC280,
MC281, RC300, RC301, RC302, RC303 ( son todos ellos campos numéricos. P.e. field->RC300
> 10000 ).
AIMPORT, ADIMPORT, OIMPORT, OPIMPORT ( lo mismo que el caso anterior).
REAIMPORT ( se refiere al total de autorizaciones con cargo a retenciones de
crédito. Se usa como en los dos casos anteriores.).
Campos utilizables en listados, fichas y resúmenes de ejercicios futuros
Su uso, salvo que se indique lo contrario, igual que en ejercicio corriente.
TIPO, SIGNO ( numéricos )
SECCION, SERVICIO, PROGRAMA, ECONOMICA, PROYECTO ( caracteres ).
TERCERO, ASIENTO, NOMPROYECT, NOTA (caracteres).
RCNUM, ANUM, ADNUM (caracteres).
CODEX , INTERNUM, EXPNUM, INTERNUM2, AREA (caracteres)
IMPORT (numérico, se refiere al importe total de las anualidades)
FECHA, FECHA2 ( campos fecha )
FINANCIA (numérico).
Algunos ejemplos de condiciones con operadores lógicos
( Son simplemente ejemplos, no te los tomes demasiado en serio.)
1) Field->Fecha > ctod("01-05-2004") .and. field->Import > 1000000
.and. "REPARO" $ field->Nota . Traducción al cristiano: Procesa todos
los registros con fecha del asiento mayor que 01-05-2004 y cuyo importe sea
superior a 1.000.000 de euros y que en el campo de observaciones contenga la
palabra "REPARO".
2) Field->Servicio == "02" .or. field->Programa == "111A" . Con
esto le estamos diciendo que nos procese todos los registros cuyo servicio sea
el 02 o cuyo programa sea el 111A, indistintamente. Date cuenta que
cualquiera de las dos condiciones da validez al conjunto.
3) Field->Servicio == "02" .and. field->Programa == "111A" .
Con esto le estamos diciendo que nos procese todos los registros cuyo servicio
sea el 02 y cuyo programa sea el 111A. En este caso, se tienen que
cumplir ambas condiciones para que el conjunto sea válido.
4) Para combinar ambas ( .or. y .and. ) , es mejor usar paréntesis
para que se interprete con más claridad. Veámoslo juntando el primer y el
tercer ejemplo:
( Field->Fecha > ctod("01-05-2004") .and. field->Import >
1000000 .and. "REPARO" $ field->Nota ) .or. (
Field->Servicio == "02" .and. field->Programa == "111A" )
.
En este caso, la totalidad del conjunto tendrá validez tanto en el caso de que
se cumplan todas las condiciones del primer conjunto entre paréntesis, o
bien todas las condiciones del segundo.
5) Vamos a ver un ejemplo con el operador lógico .not. ( también !
). Sobre todo puede ser útil en conjunción con el operador relacional $.
Veámoslo:
! "A" $ Field->Nomproyect .and. ! "A" $ Field->Asiento.
Con esto le estamos diciendo que procese todos los registros que no contengan la
letra "A", ni en el campo de explicación del asiento ni en el campo de nombre
del tercero.
Algunas funciones que podrás usar en las condiciones
ctod(). Para convertir una cadena de caracteres a una variable fecha. Ya
vimos su uso anteriormente. P.e. Field->fecha = ctod( "02-12-2004" ) .
day(). Retorna el valor del día de una fecha. P.e. day( Field->Fecha ) =
20. Se cumplirá la condición si el campo fecha contiene el valor 20 como día del
mes.
empty(). Determina si un campo está vacío. P.e. empty( field->Fecha ). Se
cumple la condición si el campo fecha está vacio.
trim(). Corta los espacios en blanco a la derecha en una cadena de
caracteres. P.e. trim( field->Asiento ) = "GONZALEZ DOMINGUEZ, PEDRO"
month(). Retorna el valor del mes de una fecha. P.e. month( Field->Fecha
) = 12. Se cumplirá la condición si el campo fecha contiene el valor 12 como
mes.
left(). Devuelve el valor de x caracteres empezando por la
izquierda de una cadena. P.e. left( field->Asiento , 5 ) == "GONZA".
right(). Devuelve el valor de x caracteres finales de una cadena.
P.e. right( trim( field->Asiento) , 5 ) == "PEDRO".
substr(). Devuelve el valor de x caracteres a partir de una
posición y dentro de una cadena. P.e. substr( field->Asiento,10,9) == "DOMINGUEZ",
nos encontrará todos los asientos que tengan la cadena DOMINGUEZ en esa posición
del campo Asiento (Nombre del Tercero). Substr( field->Internum2, 2, 3) =
"107", nos encontrará todos los asientos que tengan "107" en esa posición del
campo Internum2 (nº de expediente del PICCAC).
val(). Convierte una cadena de caracteres a un valor numérico. Ya vimos su uso
anteriormente. P.e. val( field->Expnum ) > 1000.
year(). Retorna el valor del año de una fecha. P.e. year( Field->Fecha
) < 2004. Se cumplirá la condición si el campo fecha contiene un valor menor de
2004 como año.
Advertencia
Espero que las cosas hayan quedado más o menos claras y no haber metido la pata
con algún error de sintaxis que te induzca a confusión.
Para acabar quería
decirte lo siguiente: En el caso de que el conjunto de las condiciones contengan
algún error de sintaxis, como por ejemplo no poner alguno de los puntos del
operador .or. , o cualquier otro tipo de error como campo inexistente,
etc. , el programa finalizará, previo mensaje de error. No ocurre
absolutamente nada porque acabe de esta forma. Al entrar de nuevo te saldrá un
cartelito diciendo que saliste de una forma anormal; ignóralo en este caso y
continúa. Ánimo y suerte.
Copyright © 2004-2006 Paulino Alonso Panero. Reservados todos los derechos.
Revisado el:
23-03-2008.
DHTML Menu By Milonic JavaScript
|