lunes, 30 de noviembre de 2009

excepciones en oracle

Qué son las excepciones en Oracle ?

Las excepciones, presentes en la mayoría de los lenguajes de programación, sirven para tratar errores en tiempo de ejecución. En el sistema que nos ocupa, Oracle, sirven también para definir qué se debe hacer frente a errores en sentencias definidas por el usuario. Cuando se produce un error PL/SQL levanta una excepción y pasa el control a la sección excepción correspondiente al bloque PL/SQL.

El formato sería el siguiente:

BEGIN ......... ...... ......EXCEPTION WHEN THEN ; ...... [WHEN OTHERS THEN ;]END;
Excepciones predefinidas
Son aquellas que se disparan automáticamente al producirse determinados errores. Estas son las más comunes:
too_many_rows: Se produce cuando select … into devuelve más de una fila. no_data_found: se produce cuando un select …. into no devuelve ninguna fila. login_denied: error cuando intentamos conectarnos a Oracle con un login y clave no validos. not_logged_on: se produce cuando intentamos acceder a la base de datos sin estar conectados. program_error: se produce cuando hay un problema interno en la ejecución del programa. value_error: se produce cuando hay un error aritmético o de conversión. zero_divide: se puede cuando hay una división entre 0. dupval_on_index: se crea cuando se intenta almacenar un valor que crearía duplicados en la clave primaria o en una columna con restricción UNIQUE. invalid_number: se produce cuando se intenta convertir una cadena a un valor numérico.
Hay alguna más pero estas son las más utilizadas y tenemos que tener en cuenta que no es necesario declararlas en la sección DECLARE.
Excepciones definidas por el usuario
Son aquellas que crea el usuario. Para ello se requieren tres pasos:


1. Definición: se realiza en la zona de DECLARE con el siguiente formato: nombre_excepción EXCEPTION

2. Disparar o levantar la excepción mediante la orden raise: RAISE ;

3. Tratar la excepción en el apartado EXCEPTION: WHEN THEN ;

Para que esto quede más claro ponemos un ejemplo a continuación.
DECLARE...Importe_mal EXCEPTION;...BEGIN...IF precio NOT BETWEEN mínimo and máximo THEN RAISE importe_mal;END IF;...EXCEPTION WHEN importe_mal THEN DBMS_OUTPUT.PUT_LINE("Importe incorrecto"); ...END;
Otras excepciones
Existen otros errores internos de Oracle que no tienen asignada una excepción, sino un código de error y un mensaje, a los que se accede mediante funciones SQLCODE y SQLERRM. Cuando se produce un error de estos se trasfiere directamente el control a la sección EXCEPTION donde se tratara el error en la clausula WHEN OTHERS de la siguiente forma:


WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error'SQLCODESQLERRM.)
Utilización de RAISE_APPLICATION_ERROR
En el paquete DBMS_STANDARD se incluye un procedimiento llamado RAISE_APPLICATION_ERROR que nos sirve para levantar errores y definir mensajes de error. Su formato es el siguiente:


RAISE_APPLICATION_ERROR(numero_error,mensaje_error);
Es importante saber que el número de error está comprendido entre -20000 y -20999 y el mensaje es una cadena de caracteres de hasta 512 bytes. Este procedimiento crea una excepción que solo puede ser tratada en WHEN OTHERS.
Ponemos un ejemplo para que nos quede más claro.
CREATE or REPLACE PROCEDURE subir_horas (emple NUMBER, horas_subir NUMBER)IS horas_actuales NUMBER;BEGIN Select horas into horas_actuales from empleados where id_empleado=emple; if horas_actuales is NULL then RAISE_APPLICATION_ERROR(-20010,'No tiene horas'); else update empleados set horas=horas_actuales + horas_subir where id_empleado=emple; end if;End subir_horas;

domingo, 18 de octubre de 2009

transacciones

Transacciones

Oracle admite transacciones definido por el estándar SQL. Una transacción es una secuencia de instrucciones SQL que Oracle trata como una sola unidad de trabajo. Tan pronto como se conecta a la base de datos con sql/plus, la operación comienza. Una vez que la transacción comienza, todos los LMD de SQL (lenguaje de manipulación de datos) comando que posteriormente se convierte en una parte de esta transacción. Una transacción termina cuando se desconecta de la base de datos, o cuando se emite un comando COMMIT o ROLLBACK.
COMMIT hace permanentes los cambios de base de datos que realizó durante la transacción actual. Hasta que confirmar sus cambios, otros usuarios no pueden ver. ROLLBACK termina la transacción actual y deshace los cambios hechos desde la operación comenzó.
Después de la transacción en curso ha terminado con un COMMIT o ROLLBACK, la primera instrucción SQL ejecutable que posteriormente cuestión se iniciará automáticamente otra transacción.
Por ejemplo, los comandos SQL siguientes tienen el efecto final de insertar en la tupla de la tabla T (3, 4), pero no es (1, 2):
Insertar en los valores R (1, 2);
Desmantelamiento;
Insertar en los valores de R (3, 4);
Cometer;
Durante el uso interactivo con sql/plus, Oracle también admite una opción de confirmación automática. Con esta opción establecida en ON cada sentencia SQL individual es tratada como una transacción se confirma automáticamente justo después de su ejecución. El usuario puede cambiar la opción de AUTOCOMMIT escribiendo
SET AUTOCOMMIT ON
O
SET AUTOCOMMIT OFF
Mientras que al escribir
MOSTRAR TODOS
Un usuario puede ver la configuración actual de la opción (incluyendo las otras).
Las mismas reglas para la designación final de la transacción (commit / rollback) y el comienzo de la misma (que es implícita y se inicia justo después del último COMMIT / ROLLBACK) se aplican a los programadores interactuar con Oracle utilizando Pro * C o JDBC. Fíjese que aunque Pro * C no admite la opción de AUTOCOMMIT JDBC mientras que hace y tiene una opción predeterminada AUTOCOMMMIT en ON. Así, un programador necesita para ejecutar COMMIT / ROLLBACK en Pro * C, mientras que en JDBC, un usuario puede hacer uso de la AUTOCOMMIT y no especifica de forma expresa, cuando una operación se inicia o finaliza. Para más detalles, consulte las secciones respectivas:
________________________________________
Oracle también admite el comando SAVEPOINT. El comando SAVEPOINT establece un punto nombrado que marca el punto actual en el procesamiento de una transacción. Este punto de retorno puede ser usado en conjunción con el comando ROLLBACK TO para deshacer las partes de una transacción.
Por ejemplo, los comandos siguientes tienen el efecto final de la inserción en las tulpas de la tabla T (5, 6) y (11, 12), pero no (7, 8) o (9, 10):
Insertar en los valores de R (5, 6);
my_sp_1 punto de almacenamiento;
Insertar en los valores de R (7, 8);
my_sp_2 punto de almacenamiento;
Insertar en los valores de R (9, 10);
Reversión a my_sp_1;
Insertar en los valores de R (11, 12);
Cometer;

miércoles, 14 de octubre de 2009


Historia de Oracle

Hace tres décadas, Larry Ellison vio una oportunidad que otras empresas no supieron apreciar al descubrir la descripción de un prototipo de trabajo para una base de datos relacional y enterarse de que ninguna empresa se había comprometido a comercializar la tecnología. Ellison y sus cofundadores, Bob Miner y Ed Oates, se dieron cuenta del gran potencial económico que ofrecía el modelo de base de datos relacional—pero no se dieron cuenta de que ellos cambiarían la informática empresarial para siempre.
Con la agilidad de una empresa mucho más pequeña, Oracle ha demostrado, gracias a su historial, que puede construir para el futuro sobre la base de años de innovación, el gran conocimiento de los éxitos y desafíos de sus clientes, y los mejores talentos en el área técnica y comercial alrededor del mundo. La empresa ha demostrado no solo su capacidad de aprovechar al máximo su gran tamaño y sus virtudes para servir a sus clientes, sino también su capacidad de tomar decisiones que eliminen las creencias convencionales y lleven sus productos y servicios hacia una nueva dirección.
Después de 30 años, Oracle sigue siendo el estándar de oro para las aplicaciones y la tecnología de base de datos de empresas de todo el mundo: La compañía es proveedora líder mundial de software para la administración de la información, y la segunda empresa de software independiente más grande del mundo. La tecnología de Oracle puede encontrarse en casi todos los sectores, y en los centros de datos de 98 de las 100 empresas Fortune. Oracle es la primera empresa de software en desarrollar e implementar software empresarial 100 por ciento activado por internet en toda su línea de productos: base de datos, aplicaciones comerciales y herramientas para el soporte de decisiones y el desarrollo de aplicaciones.
Es la innovación la que impulsa el éxito de Oracle. Oracle fue una de las primeras empresas en lograr que sus aplicaciones comerciales estén disponibles en Internet—una idea hoy en día dominante. Con el lanzamiento de Oracle fusión, Oracle comienza a lanzar nuevos productos y funcionalidades, los cuales reflejan el objetivo de la empresa: conectar todos los niveles de tecnología empresarial para ayudar a los clientes a acceder al conocimiento que necesitan para responder con velocidad y agilidad ante los requisitos del mercado. Hoy, Oracle real application clusters, Oracle E-Business suite, Oracle Grid computing (inglés), soporte de Enterprise Linux., y Oracle Fusion fomentan el compromiso hacia la innovación y los resultados, lo cual ha perfilado a Oracle durante 30 años.
LENGUAJE SQL
SQL es una herramienta para organizar, gestionar y recuperar datos almacenados en una base de datos informática. El nombre "SQL" es una abreviatura de Structured Query Languaje (Lenguaje de consultas estructurado). Como su propio nombre indica, SQL es un lenguaje informático que se puede utilizar para interaccionar con una base de datos y más concretamente con un tipo especifico llamado base de datos relacional.
SQL es a la vez un lenguaje fácil de aprender y una herramienta completa para gestionar datos. Las peticiones sobre los datos se expresan mediante sentencias, que deben escribirse de acuerdo con unas reglas sintácticas y semánticas de este lenguaje.
Su aprendizaje no solo sirve para esta aplicación sino, también, para todas las existentes en el mercado que soporten este lenguaje ya que es un lenguaje estándar por haberse visto consolidado por el Instituto Americano de Normas (ANSI) y por la Organización de Estándares Internacional (ISO).
La información aquí resumida del lenguaje puede ser ampliada con multitud de libros existentes en el mercado, todos con las siglas "SQL".
El SQL que se utilizará en esta aplicación cumple estrictamente con las especificaciones de Microsoft ® Open Database Connectivity (ODBC) y a continuación se podrán ver las características propias para el acceso a ficheros en el formato Paradox ® de Borland.

Notación empleada en los formatos
MAYÚSCULAS Las palabras que figuren en el formato en mayúsculas se escribirán en la sentencia igual que se escriben en el formato.
Minúscula cursiva Estas palabras deberán ser sustituidas en la sentencia por nombres o palabras elegidas por el usuario de acuerdo con las descripciones que se den en cada caso
Barra vertical | Indicará la elección de una de las opciones que este separando. O una u otra no ambas.
Corchetes [ ] Encerrarán elementos opciones de la sentencia que pueden cogerse o no dependiendo del usuario.
Llaves { } Encerrarán elementos obligatorios de la sentencia que siempre deberán de ser especificados.

Sentencias de selección o consultas
Las consultas son el corazón del lenguaje SQL. La sentencia SELECT, que se utiliza para expresar consultas en SQL, es la más potente y compleja de las sentencias SQL.
La sentencia SELECT recupera datos de una base de datos y los devuelve en forma de resultados de la consulta. Consta de seis cláusulas: las dos primeras (SELECT y FROM) obligatorias y las otras cuatro opcionales.
La forma de la sentencia SELECT soportada por Paradox ® es:
SELECT [DISTINCT] {* | expresión_columna,...} FROM nombretabla [alias_tabla]... [WHERE expresión1 operador expresion2] [GROUP BY {expresión_columna,...} ] [HAVING {condición} ] [UNION [ALL] (SELECT...)] [ORDER BY {expresión_orden [DESC | ASC],...]

Cláusula SELECT
La cláusula SELECT lista los datos a recuperar por la sentencia SELECT. Los elementos o datos a seleccionar pueden ser columnas de la base de datos o columnas a calcular por SQL cuando efectúa la consulta o también el asterisco (*) para recuperar todos los campos de un fichero o tabla.
expresión_columna puede ser un simple nombre de campo (por ejemplo MATRICULA). Expresiones más complejas pueden incluir operaciones matemáticas o de manipulación de caracteres (por ejemplo APELLIDOS + ‘, ‘+ NOMBRE). Más adelante se verán estas expresiones de forma más amplia.
Las expresiones de columnas deben ir separadas por comas si existen más de una (por ejemplo APELLIDOS, NOMBRE, DNI, DOMICILIO).
Los nombres de campos pueden ir precedidos por el nombre de la tabla o su alias. Por ejemplo ALUMNOS.MATRICULA o A.MATRICULA donde A es el alias para la tabla o fichero ALUMNOS.
El operador DISTINCT, si se incluye, debe preceder la primera expresión de columna. Este operador elimina las filas o registros duplicados del resultado de la consulta. Por ejemplo la sentencia:
SELECT DISTINCT PROVINCIA FROM ALUMNOS
Mostrará las distintas provincias de las que proceden los alumnos del Centro.

Funciones de agrupamiento
Las funciones de agrupamiento pueden ser también parte de una cláusula SELECT. Devuelven un único valor de un conjunto de registros. Pueden usarse con un nombre de campo (por ejemplo, AVG (NUMERO_DE_HERMANOS) o en combinación con una expresión de columna más compleja (por ejemplo, AVG (NUMERO_DE_HERMANOS * 1.07)). La expresión de columna puede ir precedida por el operador DISTINCT. El operador DISTINCT eliminará los valores repetidos de una expresión de agrupamiento. Por ejemplo,

SELECT COUNT (DISTINCT LOCALIDAD) FROM ALUMNOS
En este ejemplo, sólo aparecerán el nº de las distintas localidades donde residen los alumnos.
Las funciones de agrupamiento permitidas son:
SUM Devuelve la suma total de los valores de una expresión de columna o campo numérica. Por ejemplo, SUM (NUMERO_DE_HERMANOS) devolverá el total de hermanos de los alumnos del Centro.
AVG Devuelve la media de los valores de una expresión de columna. Por ejemplo,
AVG (NUMERO_DE_HERMANOS)
Devolverá la media de hermanos que posee el alumnado del centro.
COUNT Devuelve el número de valores en una expresión de columna. Por ejemplo, COUNT (MATRICULA) devolverá el número de registros con valores no nulos en ese campo. COUNT (PAIS) nos dirá el número de alumnos que en el campo país tiene alguna información y no está a blanco. Un ejemplo especial es COUNT (*), que nos devuelve el número de registros incluyendo aquellos registros con valores nulos.
MAX Devuelve el valor más alto de los contenidos en una expresión de columna. Por ejemplo, MAX (MATRICULA) devolverá el nº de matrícula más elevado que existe en el fichero de alumnos.
MIN Devuelve el valor más bajo de los contenidos en una expresión de columna. Por ejemplo, SELECT MIN (FECHA_NACIMIENTO) FROM ALUMNOS nos devolverá la fecha de nacimiento del alumno mas viejo del centro.

martes, 6 de octubre de 2009

cartera...

Clasificación por carteras
La primera aproximación a los activos financieros requiere delimitar su concepto. Para ello, tendremos que acudir al concepto más genérico de instrumento financiero, bajo el cual se recogen tanto los activos como los pasivos financieros.
La norma define los instrumentos financieros de la siguiente manera:
«Un instrumento financiero es un contrato que da lugar a un activo financiero en una empresa y, simultáneamente, a un pasivo financiero o a un instrumento de patrimonio en otra empresa.»
De esta definición resulta especialmente destacable el carácter contractual que se atribuye a los activos financieros. Esta definición resultará muy útil cuando nos encontremos con operaciones que pudieran parecerse a un activo financiero, como los créditos frente a la Hacienda Pública. Acudiendo al requisito contractual podremos excluir aquellos del concepto de activo financiero y darles un tratamiento valorativo adecuado.
Pero dicho carácter contractual podría generar conflicto desde la perspectiva de algunos instrumentos financieros, como las acciones, cuyo carácter contractual no está tan claro. A este respecto cabe señalar que el Código de Comercio hace referencia a los «Contratos Especiales del Comercio» en su Libro II, en el que se regulan las Compañías mercantiles y sus clases. No obstante, y dado que la norma establece la primacía del fondo sobre la forma, no vamos a introducirnos en debates estériles ajenos al ámbito financiero-contable y, por lo tanto, consideraremos las acciones como una fórmula contractual.





La norma también enumera un conjunto de activos financieros a los que resulta aplicable:
• Efectivo y otros activos líquidos equivalentes, según se definen en la norma 9.ª de elaboración de cuentas anuales.
• Créditos comerciales: clientes y deudores varios.
• Créditos a terceros, tales como los préstamos y créditos financieros concedidos, incluidos los surgidos de la venta de activos no corrientes.
• Valores representativos de deuda de otras empresas adquiridos, tales como las obligaciones, bonos y pagarés.
• Instrumentos de patrimonio de otras empresas adquiridos: acciones, participaciones en instituciones de inversión colectiva y otros instrumentos de patrimonio.
• Derivados con valoración favorable para la empresa, entre ellos, futuros, opciones, permutas financieras y compraventa de moneda extranjera a plazo.
• Otros activos financieros, tales como depósitos en entidades de crédito, anticipos y créditos al personal, fianzas y depósitos constituidos, dividendos a cobrar y desembolsos exigidos sobre instrumentos de patrimonio propio.
Como se deduce de lo anterior, la norma es ciertamente ambiciosa al tratar de abarcar un rango de operaciones tan extenso y diverso. La dificultad vendrá determinada al concretar el tratamiento de muchas operaciones, no necesariamente complejas. Ocurre con este texto que no se obtiene una imagen nítida del tratamiento contable de algunas operaciones, y para ello será necesario acudir a las tradicionales consultas al Instituto de Contabilidad y Auditoría de Cuentas y, de manera más ágil, a las NIC. Además, en determinados casos particulares, como los contratos de garantía financiera y las operaciones de titulización, puede ser conveniente fijarse en las normas bancarias dado que son este tipo de entidades las más conocedoras de dichas transacciones.

3 Singularmente, la Circular 4/2004 del Banco de España.

Aunque esta enumeración pueda ser útil para quienes no estén familiarizados con este tipo de instrumentos hay que tener en cuenta que puede inducir a confusión. La razón es que bajo denominaciones genéricas como acción o bono se recogen instrumentos con características financieras que no responden estrictamente a lo que esperaríamos de estos instrumentos.
El PGC 07 ha incorporado también la definición de activo financiero de la siguiente manera:
«Un activo financiero es cualquier activo que sea: dinero en efectivo, un instrumento de patrimonio de otra empresa, o suponga un derecho contractual a recibir efectivo u otro activo financiero, o a intercambiar activos o pasivos financieros con terceros en condiciones potencialmente favorables.
También se clasificará como un activo financiero, todo contrato que pueda ser o será liquidado con los instrumentos de patrimonio propios de la empresa, siempre que:
1. Si no es un derivado, obligue o pueda obligar a recibir una cantidad variable de sus instrumentos de patrimonio propios.
2. Si es un derivado, pueda ser o será liquidado mediante una forma distinta al intercambio de una cantidad fija de efectivo o de otro activo financiero por una cantidad fija de instrumentos de patrimonio propios de la empresa; a estos efectos no se incluirán entre los instrumentos de patrimonio propio aquellos que sean en sí mismos contratos para la futura recepción o entrega de instrumentos de patrimonio propio de la empresa.»
La definición es ciertamente compleja en la segunda parte y tiene como objetivo matizar las operaciones realizadas con los instrumentos de patrimonio propio, generalmente, acciones propias. En este sentido, la NIC 32, en el apartado 27 de su Guía de Aplicación establece el siguiente ejemplo, que resulta bastante clarificador:
«Un contrato a liquidar con un número variable de las propias acciones de la entidad, cuyo valor sea igual a un importe fijo o a un importe que se base en los cambios de una variable subyacente (por ejemplo, el precio de una materia prima cotizada) será un activo financiero o un pasivo financiero. Un ejemplo de lo anterior es una opción vendida para comprar oro que, en caso de ser ejercitada, se liquidará en términos netos por la entidad con sus instrumentos de patrimonio propio, mediante la entrega de una cantidad de instrumentos igual al valor del contrato de opción. Tal contrato será un activo financiero o un pasivo financiero, incluso si la variable subyacente es el precio de las propias acciones de la entidad, en lugar del precio del oro. De forma similar, será un activo financiero o un pasivo financiero todo contrato que vaya a ser liquidado con un número fijo de las propias acciones de la entidad, siempre que los derechos correspondientes a tales acciones se hagan variar de forma que el valor de liquidación sea igual a un importe fijo o a un importe basado en los cambios de una variable subyacente.»
En cuanto al reconocimiento de los activos financieros, establece el PGC 07: «La empresa reconocerá un instrumento financiero en su balance cuando se convierta en una parte obligada del contrato o negocio jurídico conforme a las disposiciones del mismo». Esta definición resulta ciertamente espinosa cuando tratamos instrumentos financieros que sólo generan derechos frente a la contrapartida o el emisor.
Por lo tanto, una vez identificada la operación como activo financiero, la aproximación a su contabilización va a comprender la solución de las siguientes cuestiones:
• ¿Qué tipo de activo es?
• ¿Qué finalidad voy a dar a ese activo?
• ¿Con qué datos cuento para su valoración?
La respuesta a esas preguntas va a ser necesaria para clasificar los activos financieros: no todos pueden ser introducidos en todas las carteras. Además, en los casos en que pueda elegir, deberé hacerlo teniendo en cuenta la finalidad y, en su caso, los datos valorativos.
3.1. Préstamos y partidas a cobrar
En esta cartera se recogen, con carácter general, las financiaciones otorgadas, tanto comerciales como no comerciales. No obstante, se excepcionan las que sean clasificadas en la cartera de «Negociación» o en la de «Otros a Valor Razonable con Cambios en Pérdidas y ganancias», que serán tratadas más adelante.
La norma de valoración establece lo siguiente en cuanto al contenido de esta cartera:
«En esta categoría se clasificarán, salvo que sea aplicable lo dispuesto en los apartados 2.3 y 2.4 siguientes, los:
1. Créditos por operaciones comerciales: son aquellos activos financieros que se originan en la venta de bienes y la prestación de servicios por operaciones de tráfico de la empresa.
2. Créditos por operaciones no comerciales: son aquellos activos financieros que, no siendo instrumentos de patrimonio ni derivados, no tienen origen comercial, cuyos cobros son de cuantía determinada o determinable y que no se negocian en un mercado activo. No se incluirán aquellos activos financieros para los cuales el tenedor pueda no recuperar sustancialmente toda la inversión inicial, por circunstancias diferentes al deterioro crediticio.»
Por lo tanto, esta cartera tiene una importancia extraordinaria para cualquier empresa, ya que va a recoger operaciones de muy diversa índole: desde un crédito comercial a un cliente o un depósito a plazo hasta un crédito otorgado a terceros. Esta cartera aglutina lo contenido en el PGC de 1990 en las normas novena y duodécima.
En el caso de la financiación comercial, por su general simplicidad, no se establecen requisitos, pero en la financiación no comercial se establecen los siguientes para incorporarse dentro de esta cartera:
• No puede tratarse de instrumentos derivados.
• No puede ser negociada en un mercado activo.
• Debe tener cobros determinados o determinables.
La norma de valoración establece la siguiente clasificación para la valoración inicial de los créditos:
«Los activos financieros incluidos en esta categoría se valorarán inicialmente por su valor razonable, que, salvo evidencia en contrario, será el precio de la transacción, que equivaldrá al valor razonable de la contraprestación entregada más los costes de transacción que les sean directamente atribuibles.
No obstante lo señalado en el párrafo anterior, los créditos por operaciones comerciales con vencimiento no superior a un año y que no tengan un tipo de interés contractual, así como los anticipos y créditos al personal, los dividendos a cobrar y los desembolsos exigidos sobre instrumentos de patrimonio, cuyo importe se espera recibir en el corto plazo, se podrán valorar por su valor nominal cuando el efecto de no actualizar los flujos de efectivo no sea significativo.»
Para la valoración sucesiva se establece que:
«Los activos financieros incluidos en esta categoría se valorarán por su coste amortizado. Los intereses devengados se contabilizarán en la cuenta de Pérdidas y ganancias, aplicando el método del tipo de interés efectivo.
Las aportaciones realizadas como consecuencia de un contrato de cuentas en participación y similares, se valorarán al coste, incrementado o disminuido por el beneficio o la pérdida, respectivamente, que correspondan a la empresa como partícipe no gestor, y menos, en su caso, el importe acumulado de las correcciones valorativas por deterioro.
No obstante lo anterior, los créditos con vencimiento no superior a un año que, de acuerdo con lo dispuesto en el apartado anterior, se valoren inicialmente por su valor nominal, continuarán valorándose por dicho importe, salvo que se hubieran deteriorado.»
En resumen, la norma establece el siguiente criterio de diferenciación para la valoración contable inicial y sucesiva:


El criterio general para la valoración inicial es el de valor razonable, siendo obligatorio para todo tipo de financiaciones otorgadas, con excepción de la comercial con vencimiento no superior a un año. En este caso, se puede valorar por el nominal potestativamente por la entidad.
Es destacable la presunción del valor razonable establecida por el PGC 07: salvo evidencia en contra, será el precio de transacción más los gastos razonablemente atribuibles. En principio, se trata de una cláusula inocua, aunque puede suscitar conflictos en los casos de operaciones realizadas a precios fuera de mercado y, en ese caso, no coincidirá con el valor razonable de la contraprestación.
También es destacable el hecho de que la valoración de los créditos comerciales se debe realizar financieramente, en todo caso, cuando se hayan especificado un tipo de interés en la operación, así como en los casos en los que el efecto financiero fuera significativo.
La valoración posterior de esta cartera resulta muy favorable, ya que se realiza por el coste amortizado del activo. Por tanto, al igual que hacíamos en la cartera de Préstamos y Partidas a Cobrar, tendremos que calcular inicialmente el tipo de interés efectivo de la operación. Este tipo de interés efectivo será constante para calcular el coste amortizado en las fechas correspondientes, salvo en los bonos a tipo variable, que irá variando sucesivamente a medida que cambie la curva de tipos a la que se haya referenciado el bono.
La lógica subyacente en este criterio de valoración sucesiva es considerar que, dado que se va a mantener el bono hasta el vencimiento, no tiene sentido recoger las oscilaciones en el precio que pudiera sufrir. Por lo tanto, nos centramos en el criterio finalista y aplicamos una valoración que puede ser determinada a priori.
La norma señala lo siguiente: «Las inversiones mantenidas hasta el vencimiento se valorarán por su coste amortizado. Los intereses devengados se contabilizarán en la cuenta de Pérdidas y ganancias, aplicando el método del tipo de interés efectivo».
La ventaja derivada de la utilización del criterio de valoración sucesiva de coste amortizado frente a otros como el de valor razonable es la menor volatilidad introducida sobre la cuenta de Pérdidas y ganancias. En el criterio de coste amortizado no recogemos las variaciones en la cotización del activo, sino que la evolución en el valor se vincula a una ley financiera de capitalización compuesta a la que aplicamos un tanto de capitalización conocido a priori, que es el tipo de interés efectivo. Por lo tanto, y dadas las ventajas existentes en esta cartera, parece evidente la necesidad de establecer unos requisitos para poder clasificar los activos dentro de la misma. Además, existirá una «penalización» en el caso que se hubiera clasificado algún instrumento en esta cartera que posteriormente se reclasifique hacia otra distinta, como posteriormente se verá.
En cuanto al deterioro, la norma nos remite a lo dispuesto para la cartera de Préstamos y Partidas a Cobrar, y así lo hacemos aquí también.
La literalidad de la norma establece lo siguiente:
«Al menos al cierre del ejercicio, deberán efectuarse las correcciones valorativas aplicando los criterios señalados en el apartado 2.1.3 anterior.
No obstante, como sustituto del valor actual de los flujos de efectivo futuros se puede utilizar el valor de mercado del instrumento, siempre que éste sea lo suficientemente fiable como para considerarlo representativo del valor que pudiera recuperar la empresa.»
Por lo tanto, hay que tener en cuenta que la norma nos permite utilizar como fórmula aproximativa al importe recuperable de la inversión, la cotización. Para ello se exige que esa cotización sea suficientemente «fiable». A este respecto, se entiende que el Instituto de Contabilidad y Auditoría de Cuentas deberá delimitar unos requisitos para determinar qué es o no «fiable», o bien dejar que sean las propias compañías las que lo hagan, a través de los criterios establecidos en su política contable. Sin ánimo de polemizar, esta última solución parece ser la más coherente con el espíritu liberal del PGC 07 y las NIC. Todo ello, sin perjuicio de que en determinados ámbitos especialmente sensibles a este tipo de operaciones sí se defina de manera más concreta lo que se entiende por «valor de mercado fiable». En cualquier caso, de nuevo nos encontramos ante una ambigüedad similar a la que antes veíamos al hacer referencia a las «similares características» de un grupo de créditos.
El concepto de deterioro difiere del de provisión en el PGC de 1990. De esta manera, la corrección valorativa no está relacionada con el riesgo de mercado del bono (variaciones en el tipo de interés), sino con el crédito del bono (tan sólo ante riesgo sustancial y no por pequeñas variaciones en el spread sobre la tasa libre de riesgo).
De todo lo anterior se deduce que esta cartera tiene unos criterios de valoración que son ciertamente beneficiosos para reducir la volatilidad en la cuenta de Pérdidas y ganancias y eliminar incertidumbre. Dadas las ventajas que presenta esta cartera, la norma establece

lunes, 5 de octubre de 2009

normalizacion de base de datos

El proceso de normalización de base de datos consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al modelo relacional
Las bases de datos relacionales se normalizan para:
• Evitar la redundancia de los datos.
• Evitar problemas de actualización de los datos en las tablas.
• Proteger la integridad de los datos.
En el modelo relacional es frecuente llamar tabla a una relación, aunque para que una tabla sea considerada como una relación tiene que cumplir con algunas restricciones:
• Cada columna debe tener su nombre único.
• No puede haber dos filas iguales. No se permiten los duplicados.
• Todos los datos en una columna deben ser del mismo tipo.

ADO.NET

El ADO.NET es un conjunto de componentes de software que pueden ser usados por los programadores para acceder a datos y a servicios de datos. Es una parte de la biblioteca de clases base que están incluidas en el Microsoft. NET Framework. Es comúnmente usado por los programadores para acceder y para modificar los datos almacenados en un sistema gestor de base de datos Relacionales, aunque también puede ser usado para acceder a datos en fuentes no relacionales. ADO.NET es a veces considerado como una evolución de la tecnología ActiveX data objects (ADO), pero fue cambiado tan extensivamente que puede ser concebido como un producto enteramente nuevo.

ADO.NET consiste en dos partes primarias:
Data provider
Estas clases proporcionan el acceso a una fuente de datos, como Microsoft SQL server y Oracle. Cada fuente de datos tiene su propio conjunto de objetos del proveedor, pero cada uno tiene un conjunto común de clases de utilidad:
• connection: Proporciona una conexión usada para comunicarse con la fuente de datos. También actúa como abstract factory para los objetos command.
• command: Usado para realizar alguna acción en la fuente de datos, como lectura, actualización, o borrado de datos relacionales.
• parameter: Describe un simple parámetro para un command. Un ejemplo común es un parámetro para ser usado en un procedimiento almacenado.
• dataAdapter: "Puente" utilizado para transferir data entre una fuente de datos y un objeto DataSet (ver abajo).
• Datareader: Es una clase usada para procesar eficientemente una lista grande de resultados, un registro a la vez.
DataSets
Los objetos DataSets, un grupo de clases que describen una simple base de datos relacional en memoria, fueron la estrella del show en el lanzamiento inicial (1.0) del Microsoft .NET Framework. Las clases forman una jerarquía de contención:
Un objeto DataSet representa un esquema (o una base de datos entera o un subconjunto de una). Puede contener las tablas y las relaciones entre esas tablas.
Un objeto DataTable representa una sola tabla en la base de datos. Tiene un nombre, filas, y columnas.
Un objeto DataView "se sienta sobre" un DataTable y ordena los datos (como una cláusula "order by" de SQL) y, si se activa un filtro, filtra los registros (como una cláusula "where" del SQL). Para facilitar estas operaciones se usa un índice en memoria. Todas las DataTables tienen un filtro por defecto, mientras que pueden ser definidos cualquier número de DataViews adicionales, reduciendo la interacción con la base de datos subyacente y mejorando así el desempeño.
Un DataColumn representa una columna de la tabla, incluyendo su nombre y tipo.
Un objeto DataRow representa una sola fila en la tabla, y permite leer y actualizar los valores en esa fila, así como la recuperación de cualquier fila que esté relacionada con ella a través de una relación de clave primaria - clave extranjera.
Un DataRowView representa una sola fila de un DataView, la diferencia entre un DataRow y el DataRowView es importante cuando se está interactuando sobre un resultset.
Un DataRelation es una relación entre las tablas, tales como una relación de clave primaria - clave ajena. Esto es útil para permitir la funcionalidad del DataRow de recuperar filas relacionadas.
Un Constraint describe una propiedad de la base de datos que se debe cumplir, como que los valores en una columna de clave primaria deben ser únicos. A medida que los datos son modificados cualquier violación que se presente causará excepciones.
Un DataSet es llenado desde una base de datos por un DataAdapter cuyas propiedades Connection y Command que han sido iniciados. Sin embargo, un DataSet puede guardar su contenido a XML (opcionalmente con un esquema XSD), o llenarse a sí mismo desde un XML, haciendo esto excepcionalmente útil para los servicios web, computación distribuida, y aplicaciones ocasionalmente conectadas

programacion orientada a objetos (poo)

La programación Orientada a objetos (POO): es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación
La Programación Orientada a Objetos (POO u OOP según sus siglas en ingles) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.

Objeto: es una unidad funcional que cumple un objetivo dentro de un programa o aplicación. Los objetos se clasifican en dos grupos. Estándares y especiales.
Estándares: son aquellos que existen en todos los lenguajes de desarrollo y realizan la misma función.
Especiales: son los que de forma particular agrega cada fabricante de lenguaje con el único propósito de que su producto sea más competitivo frente a otro.

Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.

Herencia: (por ejemplo, herencia de la clase D a la clase C) Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables públicas declaradas en C. Los componentes registrados como "privados", también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de OOP.

Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobre carga de operadores de C++.
Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.
Evento: es una acción que se realiza sobre el objeto; En la programación existe la programación orientada a eventos, en la que un evento es un mensaje de software que indica que algo ha ocurrido, como un tecleo o un clic de un mouse.

jueves, 3 de septiembre de 2009

esto es nuevo

hay hombe esto es practica para ver