martes, 13 de abril de 2010

Lenguaje SQL

Lenguaje de definición de datos (LDD)
El lenguaje de definición de datos (en inglés Data Definition Language, o DDL), es el que se encarga de la modificación de la estructura de los objetos de la base de datos. Existen cuatro operaciones básicas: CREATE, ALTER, DROP y TRUNCATE.

CREATE
Este comando crea un objeto dentro de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte.
Ejemplo (crear una tablaU)
CREATE TABLE 'TABLA_NOMBRE' (
'CAMPO_1' INT,
'CAMPO_2' STRING
)
ALTER
Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, modificar un trigger, etc.
Ejemplo (agregar columna a una tabla)
ALTER TABLE 'TABLA_NOMBRE' (
ADD NUEVO_CAMPO INT UNSIGNED meel
)

DROP
Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER.
Ejemplo
ALTER TABLE ''TABLA_NOMBRE''
(
DROP COLUMN ''CAMPO_NOMBRE1''
)

TRUNCATE
Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DROP, es que si se quiere borrar todo el contenido de la tabla, es mucho más rápido, especialmente si la tabla es muy grande. La desventaja es que TRUNCATE sólo sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se permite la cláusula WHERE. Si bien, en un principio, esta sentencia parecería ser DML (Lenguaje de Manipulación de Datos), es en realidad una DDL, ya que internamente, el comando TRUNCATE borra la tabla y la vuelve a crear y no ejecuta ninguna transacción.
Ejemplo
TRUNCATE TABLE ''TABLA_NOMBRE1''
Lenguaje de manipulación de datos (LMD)
Definición
Un lenguaje de manipulación de datos (Data Manipulation Language, o DML en inglés) es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado.
El lenguaje de manipulación de datos más popular hoy día es SQL, usado para recuperar y manipular datos en una base de datos relacional. Otros ejemplos de DML son los usados por bases de datos IMS/DL1, CODASYL u otras.

INSERT
Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una base de datos relacional.
Forma básica
INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES (''valor1'', [''valor2,...''])
Las cantidades de columnas y valores deben ser iguales. Si una columna no se especifica, le será asignado el valor por omisión. Los valores especificados (o implícitos) por la sentencia INSERT deberán satisfacer todas las restricciones aplicables. Si ocurre un error de sintaxis o si alguna de las restricciones es violada, no se agrega la fila y se devuelve un error.
Ejemplo
INSERT INTO agenda_telefonica (nombre, numero) VALUES ('Roberto Jeldrez', 4886850);
Cuando se especifican todos los valores de una tabla, se puede utilizar la sentencia acortada:
INSERT INTO ''tabla'' VALUES (''valor1'', [''valor2,...''])
Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas de la tabla 'agenda_telefonica'):
INSERT INTO agenda_telefonica VALUES ('Roberto Jeldrez', 4886850);
Formas avanzadas
Inserciones en múltiples filas
Una característica de SQL (desde SQL-92) es el uso de constructores de filas para insertar múltiples filas a la vez, con una sola sentencia SQL:
INSERT INTO ''tabla'' (''columna1'', [''columna2,... ''])
VALUES (''valor1a'', [''valor1b,...'']), (''value2a'', [''value2b,...'']),...
Esta característica es soportada por DB2, PostgreSQL (desde la versión 8.2), MySQL, y H2.
Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas en la tabla 'agenda_telefonica'):
INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850'), ('Alejandro Sosa', '4556550');
Que podía haber sido realizado por las sentencias
INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850');
INSERT INTO agenda_telefonica VALUES ('Alejandro Sosa', '4556550');
Notar que las sentencias separadas pueden tener semántica diferente (especialmente con respecto a los triggers), y puede tener diferente rendimiento que la sentencia de inserción múltiple.
Para insertar varias filas en MS SQL puede utilizar esa construcción:
INSERT INTO phone_book
SELECT 'John Doe', '555-1212'
UNION ALL
SELECT 'Peter Doe', '555-2323';
Tenga en cuenta que no se trata de una sentencia SQL válida de acuerdo con el estándar SQL (SQL: 2003), debido a la cláusula subselect incompleta.
Para hacer lo mismo en Oracle se usa DUAL TABLE, siempre que se trate de solo una simple fila:
INSERT INTO phone_book
SELECT 'John Doe', '555-1212' FROM DUAL
UNION ALL
SELECT 'Peter Doe','555-2323' FROM DUAL
Una implementación conforme al estándar de esta lógica se muestra el siguiente ejemplo, o como se muestra arriba:
INSERT INTO phone_book
SELECT 'John Doe', '555-1212' FROM LATERAL ( VALUES (1) ) AS t(c)
UNION ALL
SELECT 'Peter Doe','555-2323' FROM LATERAL ( VALUES (1) ) AS t(c)
Copia de filas de otras tablas
Un INSERT también puede utilizarse para recuperar datos de otros, modificarla si es necesario e insertarla directamente en la tabla. Todo esto se hace en una sola sentencia SQL que no implica ningún procesamiento intermedio en la aplicación cliente. Un SUBSELECT se utiliza en lugar de la cláusula VALUES. El SUBSELECT puede contener JOIN, llamadas a funciones, y puede incluso consultar en la misma TABLA los datos que se inserta. Lógicamente, el SELECT se evalúa antes que la operación INSERT esté iniciada. Un ejemplo se da a continuación.
INSERT INTO phone_book2

SELECT *
FROM phone_book
WHERE name IN ('John Doe', 'Peter Doe')
Una variación es necesaria cuando algunos de los datos de la tabla fuente se está insertando en la nueva tabla, pero no todo el registro. (O cuando los esquemas de las tablas no son iguales.)
INSERT INTO phone_book2 ( [name], [phoneNumber] )

SELECT [name], [phoneNumber]
FROM phone_book
WHERE name IN ('John Doe', 'Peter Doe')
El SELECT produce una tabla (temporal), y el esquema de la tabla temporal debe coincidir con el esquema de la tabla donde los datos son insertados.

UPDATE
Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de registros existentes en una tabla.
Forma básica
UPDATE ''tabla'' SET ''columna1'' = ''valor1'' ,''columna2'' = ''valor2'',...
WHERE ''columnaN = ''valorN''
Ejemplo
UPDATE My_table SET field1 = 'updated value' WHERE field2 = 'N';

DELETE
Una sentencia DELETE de SQL borra uno o más registros existentes en una tabla,
Forma básica
DELETE FROM ''tabla'' WHERE ''columna1'' = ''valor1''
Ejemplo
DELETE FROM My_table WHERE field2 = 'N';


domingo, 11 de abril de 2010

FORMULARIO DE NIVEL SUPERIOR

Un formulario de nivel superior es un formulario independiente y carente de modo, y sirve para crear una aplicación SDI (interfaz de un solo documento, single document interface) o para se utilizado como el primario de otros formularios secundarios. Los formularios de nivel superior trabajan en el mismo nivel que otras aplicaciones de Windows, y pueden aparecer delante o detrás de éstas. Los formularios de nivel superior aparecen en la barra de tareas de Windows.

La propiedad Desktop determina el comportamiento de un formulario secundario. Si el propiedad Desktop está establecida en verdadera (.T.) el formulario secundario no estará limitado a los bordes de su formulario primario y podrá desplazarse a cualquier sitio dentro del escritorio de Windows. El formulario secundario no aparece en la barra de tareas de Windows.

Un formulario secundario es un formulario que se encuentra dentro de otro. Los formularios secundarios no se pueden mover fuera de los límites de su formulario primario; cuando se minimizan, aparecen en la parte inferior de su formulario primario. Si se minimiza un formulario primario, también se modificarán los secundarios.

sábado, 20 de marzo de 2010

EXTENSIONES DE LOS TIPOS DE ARCHIVO DE FOXPRO

Extension File type
----------------------------------------------
.act Documenting Wizard action diagram
.app Generated application
.cdx Compound index
.dbc Database
.dbf Table
.dct Database memo
.dcx Database index
.dll Windows Dynamic Link Library
.err Compilation error
.exe Executable program
.fky Macro
.fll FoxPro Dynamic Link Library
.fmt Format File
.fpt Table memo
.frt Report memo
.frx Report
.fxp Compiled program
.hlp Graphical Help
.idx Index, compact index
.krt Used in the recreation of a .dbc file
NOTE: The .KRT extension is not listed in the online Help.
.lbt Label memo
.lbx Label
.lst Documenting Wizard list
.mem Memory variable saveDoslives
.mnt Menu memo
.mnx Menu
.mpr Generated menu program
.mpx Compiled menu program
.ocx OLE control
.pjt Project memo
.pjx Project
.prg Program
.qpr Generated query program
.qpx Compiled query program
.sct Form memo
.scx Form
.spr Generated Screen Program (previous versions of FoxPro only)
.spx Compiled Screen Program (previous versions of FoxPro only)
.tbk Memo backup
.txt Text
.vct Visual class library memo
.vcx Visual class library
.vue FoxPro 2.x view
.win Window file

sábado, 13 de marzo de 2010

Historia de Microsoft Visual FoxPro

Historia de Microsoft Visual FoxPro



Visual FoxPro proviene de FoxPro, que a su vez deriva de FoxBASE, creado por Fox Technologies en 1984; inicialmente un compilador de dBase, acabó superándolo y con Clipper, convirtiéndose en una de las estrellas de los lenguajes xBase. Fox Technologies fue adquirido por Microsoft en 1992.
Visual FoxPro 3.0, fue la primera versión “Visual”, redujo su compatibilidad a solo Mac y Windows (La última versión de FoxPro (2.6) corría en MS-DOS, MS Windows, Mac OS y UNIX), versiones posteriores fueron solo para Windows. La versión actual se basa en archivos COM y Microsoft ha declarado que no piensan crear una versión .NET.
En la versión 5.0 se integra en Microsoft Visual Studio añadiéndosele el soporte de Microsoft Source Safe. Hasta entonces es visto típicamente por el público como meramente un Sistema de gestión de base de datos (SGBD), ignorando el hecho de que no solo incluye el entorno SGBD, sino un completo lenguaje de programación.
Visual FoxPro 6.0, publicado en 1999, no supone un cambio radical respecto de la anterior versión sino únicamente una mejora en sus diversas funcionalidades y una adaptación al mundo internet y al mundo de los objetos. Esta versión hace más atractivo a los desarrolladores el tratamiento de los datos en los entornos COM. Es un paso más en la evolución de este producto desde un entorno de aplicaciones monousuario o de redes pequeñas centradas en los datos hacia una herramienta orientada a objeto diseñada para la construcción de la lógica del negocio en los entornos multi-tier con una fuerte orientación hacia los tratamientos intensivos de datos en Internet. Pese a su relativa antigüedad, es hoy todavía ámpliamente utilizado en grandes empresas (por ej., la compañía de seguros Mapfre) por su estabilidad.
Visual FoxPro 7.0, publicado en 2001, supuso su salida de Visual Studio, pues aunque en un principio se pensaba incluir a Fox en .NET, no era posible sin romper con la herencia de anteriores versiones. Esta versión incorporó por primera vez el IntelliSense, y se mejoró el manejo de arrays, acercándolo al de cursores.
A finales del 2002, algunos miembros de comunidades demostraron que Visual FoxPro puede correr en Linux usando un reimplememtador del API de Windows (Win16 y Win32) llamado Wine. En el 2003, esto llevo a quejas de Microsoft: se dijo que el desarrollo de código de FoxPro para rutinas en máquinas no-Windows viola el Acuerdo de Licencia de Usuario Final.
Los rumores de que Microsoft planea terminar el soporte para FoxPro han sido comunes desde su adquisición del producto, a pesar del hecho de que éste ha tenido el tiempo de vida de soporte más largo para un producto de Microsoft (hasta el 2014). VFP 9 fue lanzado el 17 de diciembre del 2004 y el equipo de Fox luego trabajó en un proyecto cuyo nombre clave fue Sedna. Este fue construido sobre el código base de VFP 9 y consistió principalmente en componentes Xbase que soportando un número de escenarios interoperables con varias tecnologías de Microsoft incluyendo SQL Server 2005, .NET, WinFX, Windows Vista y Office 12. Lamentablemente el proyecto no prosperó y fue cancelado por Microsoft.
Visual Foxpro no va a desaparecer ya que una empresa llamada etecnologia "www.etecnologia.net" ha desarrollado el .NET EXTENDER que permite utilizar el .net framework en visual foxpro, y han anunciado que a finales del 2009 van a sacar su "VFP Developer Studio" herramienta la cual convierte a VFP en un lenguaje .Net. este producto está soportando el 92 por ciento de los comandos y funciones de VFP al 31 de mayo del 2009 y se puede comprar por $250.00.

lunes, 8 de marzo de 2010

El comando SET

Los comandos SET….TO se pueden definir como las instrucciones q crean y configuran el ambiente de trabajo sobre el cual trabajara la Aplicación como por ejemplo Cuando se carga FoxPro, lee un archivo llamado CONFIG.FPW en el directorio VFP. CONFIG.FPW es un archivo de texto ASCII y contiene instrucciones que se leen al momento de iniciar y se convierten en valores predeterminados de la sesión de FoxPro.

He aquí algunos de los elementos que se fijan en la configuración del sistema:

SAFETY = OFF && no avisa antes de sobrescribir archivos
TALK= OFF && no despliega el progreso
ECHO= OFF && inicialmente desactiva el rastreo
DEBUG= ON && habilita el rastreo y la depuración
RESOURCE=FOXUSER && elige un archivo de recursos
RESOURCE=OFF && no se use hasta que se solicite
COMMAND= DO PROG && corre PROG al inicio

Los anteriores son comandos los cuales se pueden modificar utilizando los comandos que inician con la instrucción SET desde la ventana de comandos.

Acontinuación se pueden observar algunos de los comando SET y su definicion

*SET PATH: Se usa para indicar la ruta de busqueda de los archivos utilizados en una aplicación. Su uso es: SET PATH TO «Ruta»

*SET ORDER: Es para indicar el índice a utilizar de los que se encuentran disponibles para una determinada tabla. Su uso es: SET ORDER TO «Indice»

*SET PROCEDURE: Se utiliza para indicar el archivo de procedimientos a utilizar. Su uso es: SET PROCEDURE TO «Archivo»

*SET RELATION: Es usado para indicar la relación de una tabla respecto a otra de acuerdo a un campo común. Su uso es: SET RELATION TO «Campo» INTO «Tabla»

*SET VIEW: Abre o cierra la ventana Vista, o bien restaura el entorno de Visual FoxPro desde un archivo de vista. Su uso es: SET VIEW TO «Archivo»

*SET KEY: Sirve para especificar el acceso a un intervalo de registros basado en sus claves de índice. Su uso es: SET KEY TO «Expresión»

*SET DEFAULT: && establece el dispositivo y el directorio Por ejemplo si los archivos que se van a utilizar se encuentran en el directorio C:\programas\transmisión\datos, escribiremos el comando SET de la siguiente forma: SET DEFAULT TO C:\programas\transmisión\datos.

*SET CENTURY ON/OFF
*SET CLOCK ON/OFF
*SET DATE
*SET DELETE ON/OFF
*SET ECHO ON/OFF
*SET SYSMENU
*Set AutoSave On
*Set Bell Off
*Set Confirm On
*Set Color To
*Set Date To British
*Set Decimal To 0
*Set Device To Screen
*Set Escape Off
*Set Exclusive Off
*Set Exact On
*Set Fixed On
*Set MultiLocks On
*Set Near On
*Set Notify Off
*Set Print Off
*Set Reprocess To Automatic
*Set Scoreboard Off
*Set Talk Off

sábado, 6 de febrero de 2010

OBJETO

Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.

Estos objetos interactúan unos con otros, en contraposición a la visión tradicional en la cual un programa es una colección de subrutinas (funciones o procedimientos), o simplemente una lista de instrucciones para el computador. Cada objeto es capaz de recibir mensajes, procesar datos y enviar mensajes a otros objetos de manera similar a un servicio.

En el mundo de la programación orientada a objetos (POO), un objeto es el resultado de la instanciación de una clase. Una clase es el anteproyecto que ofrece la funcionalidad en ella definida, pero ésta queda implementada sólo al crear una instancia de la clase, en la forma de un objeto. Por ejemplo: dado un plano para construir sillas (una clase de nombre clase_silla), entonces una silla concreta, en la que podemos sentarnos, construida a partir de este plano, sería un objeto de clase_silla. Es posible crear (construir) múltiples objetos (sillas) utilizando la definición de la clase (plano) anterior. Los conceptos de clase y objetos son análogos a los de tipo de datos y variable, es decir, definida una clase podemos crear objetos de esa clase, igual que disponiendo de un determinado tipo de dato.

Definicion no técnica:

Un objeto es una copia de una clase a la memoria, lugar desde el cual el programa puede acceder a sus propiedades, métodos y eventos

CLASE

Las clases son declaraciones o abstracciones de objetos, lo que significa, que una clase es la definición de un objeto. Cuando se programa un objeto y se definen sus características y funcionalidades, realmente se programa una clase.

Definicion no técnica:

Una clase es el objeto en original, es decir es el archivo original que contiene todas las propiedades, metodos y eventos, un objeto no es mas que una copia de una clase a fin de poder crear mas de un objeto a partir del original.

HERENCIA

En orientación a objetos la herencia es el mecanismo fundamental para implementar la reutilización y extensibilidad del software. A través de ella los diseñadores pueden construir nuevas clases partiendo de una jerarquía de clases ya existente (comprobadas y verificadas) evitando con ello el rediseño, la remodificación y verificación de la parte ya implementada. La herencia facilita la creación de objetos a partir de otros ya existentes, obteniendo características (métodos y atributos) similares a los ya existentes.

Definicion no técnica:

Es la capacidad crear clases a partir de otras clases a fin de mejorar sus características sin la necesidad de reescribir la clase.

ENCAPSULAMIENTO

En programación modular, y más específicamente en programación orientada a objetos, se denomina encapsulamiento al ocultamiento del estado, es decir, de los datos miembro, de un objeto de manera que sólo se puede cambiar mediante las operaciones definidas para ese objeto.

Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados a un objeto contra su modificación por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones.

De esta forma el usuario de la clase puede obviar la implementación de los métodos y propiedades para concentrarse sólo en cómo usarlos. Por otro lado se evita que el usuario pueda cambiar su estado de maneras imprevistas e incontroladas.

Definicion no técnica:

Se trata de aislar al objeto y al mismo tiempo crear una interfaz, de esta manera solo tendran acceso a las propiedades aquellos usuarios que tienen permisos y a la vez mejora la facilidad de utilización del objeto

Polimorfismo

En programación orientada a objetos el polimorfismo se refiere a la posibilidad de definir clases diferentes que tienen métodos o atributos denominados de forma idéntica, pero que se comportan de manera distinta.

Por ejemplo, podemos crear dos clases distintas: Pez y Ave que heredan de la superclase Animal. La clase Animal tiene el método abstracto mover que se implementa de forma distinta en cada una de las subclases (peces y aves se mueven de forma distinta).

Como se mencionó anteriormente, el concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos. Así nacen los conceptos de funciones polimórficas y tipos polimórficos. Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimórficos, por su parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no está especificado.

Definicion no técnica:

Es la capacidad de crear clases con atributos t metodos de igual nombre pero que no relializan la misma tarea.

INSTANCIA

Una instancia de un programa es una copia de una versión ejecutable del programa que ha sido escrito en la memoria del computador.

PROPIEDAD O ATRIBUTO

Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.

· Evento: Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.

MÉTODO

Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.