| Usar Data Base | WEB: Integracion de bases de datos | MySQL | Integración de Bases de Datos |
| WEB: Instalar Data Base: WEB: ¿Por qué Usar Bases de Datos? | Integrar Bases de Datos | Tecnologías de Integracion | Creando BD |
Instalar Web Server y Sambar Server | Instalar Perl y PHP3 | ASP | PERL | PHP3 |
| Ayuda en linea: | ¿Que es ayuda en línea? | Etapas de ayuda en línea | Interfaz de ayuda | Generemos ayudas en linea |
| Help: | Helpscribble | Funcionalidad | Delphi C++ Builder | Kylix (Delphi para Linux) |
| Subir a la WEB |
Si existe lee las ordenes que están en su interior ejecutándose los programas que aparecen en la línea open, la cual se puede aprovechar para ejecutar cualquier tipo de programa que este en el CD o disco rígido.
En Windows 9X se ejecutara este programa incluso si esta funcionando el protector de pantallas.
Este tipo de archivo se genera de la siguiente manera:
Necesitamos un editor de texto, en nuestro caso y por ser el más común en cuanto a esta operación es el Bloc de Notas de Windows.
El archivo debe ser extensión .inf, lo cual indica que es un archivo de información, al cual lo llamaremos Autorun.inf guardándolo en Guardar como... con este nombre.
Este archivo debe ser guardado en el directorio raíz del CD.
A continuación determinamos las líneas a insertar en nuestro archivo Autorun.inf, los cuales le indicaran al sistema operativo que programa es el que deberá arrancar al ejecutarse el CD y cual será el icono que aparecerá en esta unidad.
Este archivo comienza con una cabecera o sección, así: [autorun], el cual le esta indicando al S.O el tipo de operación que se realizara, a continuación van las opciones de autorranque para el CD, una en cada línea.
Si necesitáramos realizar pruebas debemos colocar un ; al inicio de la línea, la cual será obviada durante la ejecución.
Para el fichero usamos open= , y para el icono Icon= de esta manera:
[autorun] Open=Icon=
No deben olvidarse los corchetes ni ningún signo pues el programa no funcionara como corresponde.
Si en lugar de un ejecutable se quiere usar una página HTM tendremos que usar el Explorador de Windows para que lo abra, ya que no sirve solo con insertar el nombre de la página, por ejemplo:
[autorun] open=proyecto.exe icon=mariposa.ico
Para tenerlo mas claro los comandos indican lo siguiente:
icon= Icon=mariposa.exe
Pero si se quisiera también pueden incluirse archivos que no sean de iconos como un ejecutable .exe, .dll, .ico, .bmp, .exe, o sea el nombre del fichero que contiene el icono.
Puede tener varios iconos que representaran el programa, los cuales serán llamados según correspondan mediante índices.
Los índices tienen un rango que va de 0 a N, entonces según el icono que se quiera que tome el archivo debe indicarse el N° de índice que le corresponda, comenzando con el primer icono con n° de índice 0:
Si fuera un archivo que contiene iconos su sintaxis seria:
Icon = < ruta del archivodeicono, índice >
Cualquier archivo que contenga iconos puede ser .dll .exe .ico
Ej.:
Importante: el fichero con el icono debe estar en el mismo directorio que el fichero especificado por el comando open.
Open
La sintaxis para esto será: open=[ < ruta \ ]archivo .exe [param1 [param2] ...]
Se debe colocar el nombre del archivo .exe o .com solamente.
En el caso que se tenga guardado el archivo en alguna carpeta entonces debe especificarse la ruta para llegar a él. También podría incluir algunos parámetros que deben mandarse a la aplicación cuando arranque. Pero en este caso no es necesario.
También si se quiere que se autoejecute un determinado programa que no sea un .exe sino por ejemplo una pagina .htm, no bastara con indicarle el nombre de la pagina porque dirá que no es una aplicación Win32 valida, lo cual sucede porque open solo ejecuta aplicaciones, entonces se debe indicar con que aplicación abrirlo lo cual se hace de la siguiente manera:
Con lo cual se esta especificando que abra esta pagina mediante el Explorer.
Una manera alternativa de hacer esto es: Open=Start mipagina.html
Se abrirá un navegador con la página que se indico.
Start:
open= explorer.exe ”mipagina.html”
Estos son los comandos básicos que usamos para el sistema pero existen otros como los siguientes:
Label
Esta cadena puede contener espacios
Label=”Autoservicio”
Shellexecute
Se puede usar para abrir archivos ejecutables y no ejecutables. Con Open no se pueden arrancar archivos de este tipo.
La diferencia con Open ó Start radica en que este comando solo puede usarse en computadoras que cuentan con S.O Windows 2000 ó Millenium.
Debe especificar el directorio completo donde esta el exe o el archivo de datos. Si no se coloca el directorio entonces debe estar en la raíz.
Si es un archivo de datos entonces se ejecutara una aplicación asociada con esa extensión, también se pueden pasar parámetros.
Pero esta apertura se hace mediante el uso de una biblioteca del S.O llamada Shell32.dll a partir de su versión 5.0 o posterior, presente en Windows 2000 ó Millenium
Si hacemos uso de este comando y ejecutamos el CD en un ordenador que no cuente con estos S.O, no funcionara. Podemos entonces reemplazarlo por el comando Start.
Si coloca un ejecutable entonces shellexecute funcionara como open.
Shell
Este comando sirve para añadir opciones al menú contextual, el que aparece al hacer click derecho sobre la unidad, también se ejecutara cuando se hace doble click sobre el icono de la unidad.
La 1ra línea es opcional, la 2da obligatoria.
Se puede omitir la primera línea de este comando si se quiere, pero entonces aparecería en la opción del menú el identificador.
Añade el texto que indique al menú contextual. Lo que va desde el = hasta el final de línea es el texto que aparecerá en el menú.
Identificador: especifica con que Shell\ va cada pareja, en caso de que se quiera poner mas de una opcion en el menú.
El identificador sirve para unir como pareja las dos líneas de comando shell, de modo que el texto de una se asocie con el comando de la otra, y no puede tener espacios en blanco,o sea, especifica con que Shell\ va cada pareja, en caso de que se quiera poner más de una opción en el menú.
Esta línea se puede omitir, en cuyo caso el texto que aparecerá en el menú contextual será el Identificador de la segunda línea shell. Si desea indicar alguna de las letras como atajo, coloque antes de la misma el carácter &.
Ej.:
Si deseara agregar una opción al sistema Autoservicio Marroco que fuera Ver código Fuente será:
Mostrara en el menú contextual el texto Abrir Bloc de notas.
Al hacer click en Abrir Bloc de Notas ejecutara Notepad.exe.
O solamente omitir la 1ra linea
Determinara la aplicación que se ejecutará al seleccionar esta opción del menú contextual. Su funcionamiento es igual que Open. No admite ficheros no ejecutables pero se puede usar Start.
Comentarios:
El autoarranque no solo funciona para unidades de CD –ROM funciona con cualquier otro dispositivo(disquetes, duros).
Se usa un fichero autorun como el que creamos en el directorio raíz. Entonces Windows lo leerá automáticamente ejecutando cada no de sus parámetros.
Pero para que funcione para cualquier otra unidad de almacenamiento es necesario cambiar el Registro de Windows ya que por defecto Windows no consulta si existe un archivo “autorun.inf” en las unidades de disquete. Para ello debemos iniciar el editor de registro de Windows (regedit.exe)
Localizar la clave HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
cambiar de 95 00 00 00 a 91 00 00 00 el valor “NoDriveTypeAutoRun”
Crear un archivo “autorun.inf” en el disquete como se explica anteriormente
Importante:
WEB: Integracion de bases de datos | MySQL | Integración de Bases de Datos
El Web es un medio para localizar/enviar/recibir información de diversos tipos, aun con las bases de datos.
En el ámbito competitivo, es esencial ver las ventajas que esta vía electrónica proporciona para presentar la información, reduciendo costos y el almacenamiento de la información, y aumentando la rapidez de difusión de la misma.
Internet provee de un formato de presentación dinámico para ofrecer campañas y mejorar negocios, además de que permite acceder a cada sitio alrededor del mundo, con lo cual se incrementa el número de personas a las cuales llega la información.
Internet además,no sólo es una vía para hacer negocios, sino también una gran fuente de información, siendo éste uno de los principales propósitos con que fue creada.
En el pasado, las bases de datos sólo podían utilizarse al interior de las instituciones o en redes locales, pero actualmente el Web permite acceder a bases de datos desde cualquier parte del mundo. Estas ofrecen, a través de la red, un manejo dinámico y una gran flexibilidad de los datos, como ventajas que no podrían obtenerse a través de otro medio informativo.
Asimismo, las bases de datos serán usadas para permitir el acceso y manejo de la variada información que se encuentra a lo largo de la red.
El lenguaje PHP, ofrece interfases para el acceso a la mayoría de las bases de datos comerciales y por ODBC a todas las base de datos posibles en sistemas Microsoft.
El objetivo principal de realizar la Instalación de Base de Datos en Internet es garantizar que a traves de una página web usted pueda almacenar toda la información que desee, asegurandole que todo lo que ingrese sea correctamente guardado.
También presenta la ventaja de que cada vez que realice modificaciones a los datos ingresados, estos sean perfectamente actualizados, entre otras ventajas.
Esta pagina presenta una reseña de la utilización de bases de datos en el web, detallando como surgió y como se la implementa actualmente.
Hacia el final de la misma se describe las tecnologías más importantes que se utilizan para tal fin.
En la actualidad, muchas instituciones se han dado cuenta de la importancia que el Web tiene en el desarrollo de sus potencialidades, ya que con ello pueden lograr una mejor comunicación con personas o instituciones situadas en cualquier lugar del mundo.
Gracias a la conexión con la red mundial Internet, poco a poco, cada individuo o institución va teniendo acceso a mayor cantidad de información de las diversas ramas de la ciencia con distintos formatos de almacenamiento.
La mayor parte de información es presentada de forma estática a través de documentos HTML, lo cual limita el acceso a los distintos tipos de almacenamiento en que ésta pueda encontrarse.
Pero, en la actualidad surge la posibilidad de utilizar aplicaciones que permitan acceder a información de forma dinámica, tal como a bases de datos, con contenidos y formatos muy diversos.
Una de las ventajas de utilizar el Web para este fin, es que no hay restricciones en el sistema operativo que se debe usar, permitiendo la conexión entre si, de las páginas Web desplegadas en un browser del Web que funciona en una plataforma, con servidores de bases de datos alojados en otra plataforma. Además, no hay necesidad de cambiar el formato o estructura de la información dentro de las bases de datos.
Para realizar una requisición de acceso desde el Web hasta una base de datos no sólo se necesita de un browser del Web y de un Servidor Web, sino también de un software de procesamiento (aplicación CGI), el cual es el programa que es llamado directamente desde un documento HTML en el cliente. Dicho programa lee la entrada de datos desde que provienen del cliente y toma cierta información de variables de ambiente. El método usado para el paso de datos está determinado por la llamada CGI.
Una vez se reciben los datos de entrada (sentencias SQL o piezas de ellas), el software de procesamiento los prepara para enviarlos a la interfaz en forma de SQL, y luego ésta procesa los resultados que se extraen de la base de datos.
La interfaz contiene las especificaciones de la base de datos necesarias para traducir las solicitudes enviadas desde el cliente, a un formato que sea reconocido por dicha base. Además, contiene toda la información, estructuras, variables y llamadas a funciones, necesarias para comunicarse con la base de datos.
El software de acceso usualmente es el software distribuido con la base de datos, el cual permite el acceso a la misma, a través de solicitudes con formato. Luego, el software de acceso recibe los resultados de la base de datos, aún los mensajes de error, y los pasa hacia la interfaz, y ésta a su vez, los pasa hasta el software de procesamiento.
Cualquier otro software (servidor HTTP, software de redes, etc.) agrega enlaces adicionales a este proceso de extracción de la información, ya que el software de procesamiento pasa los resultados hacia el servidor Web, y éste hasta el browser del Web (ya sea directamente o a través de una red).
Tradicionalmente en el Web se han utilizado documentos HTML estáticos para los cuales se creaban las posibles respuestas ante requisiciones del cliente. Este método requiere de un gran desarrollo de aplicaciones y de mantenimiento de las mismas. Al interactuar con las bases de datos, este proceso se complica aún más.
Como la necesidad de acceder a bases de datos desde el Web se ha incrementado, han sido creadas también interfaces que manipulan sus escritos para procesar la información, teniendo como punto común la ejecución de sentencias SQL para requerir datos a la base.
Aplicaciones de interfaz para la interacción de bases de datos con el Web han surgido ya. Los productos iniciales son simplemente modelos del ambiente cliente/servidor, con una capa adicional para crear resultados HTML que pueden ser vistos a través del Web, por medio de un procesamiento de los datos de la forma introducidos por el cliente. Además, al usar estas interfaces se puede crear el programa principal de la aplicación. Como puede observarse, estas herramientas permiten construir poderosas aplicaciones en el Web, pero se requiere que programadores experimentados logren un desarrollo a gran escala. También, el mantenimiento de las mismas es significativamente más complejo y extenso.
Una de las estrategias más famosas para la creación de aplicaciones de interacción con el Web, es la de descargar del Web, aplicaciones o componentes funcionales que se ejecutarán dentro del browser. Con ellas se realizará un procesamiento complejo del lado del cliente, lo cual requiere un gran esfuerzo para crear las piezas de la aplicación. Estas estrategias poseen dos características principales: garantizan la seguridad tanto en los sistemas de distribución como en la comunicación que se establece con tales aplicaciones, a través de Internet.
También han aparecido bibliotecas que incluyen motores propios de servidor que corren de forma conjunta con el Servidor Web, lo cual facilita el desarrollo de nuevas aplicaciones.
Una aplicación que posibilita interconectar al Web con una base de datos tiene muchas ventajas, además de que las funciones que cumplen actualmente los Servidores Web y las herramientas de desarrollo de aplicaciones Web, hacen más fácil que nunca la construcción de aplicaciones más robustas. Tal vez el mayor beneficio del desarrollo de estas aplicaciones en el Web sea la habilidad de que sean para múltiples plataformas, sin el costo de distribuir múltiples versiones del software.
Cada una de las interfaces para comunicar al Web con bases de datos, ha sido creada basándose en una tecnología de integración especial, a través de procesos de interconexión especiales, que serán descritos en el siguiente apartado.
En este item lo que se intenta hacer es tener noción de como subir una base de datos local en cualquier gestor a una base de datos remota en MySQL
Una situación en la que nos podriamos encontrar a la hora de subir una base de datos a nuestro proveedor de alojamiento es que la base de datos la tengamos creada en local,pero en un sistema gestor distinto
del que vamos a utilizar en el caso en el que este creada en remoto.
En remoto suponemos siempre que vamos a utilizar la base de datos MySQL.En local podriamos disponer de una base de datos Access, SQL Server o de otro sistema de base de datos.
El proceso de la migración puede ser bastante complejo y como hay tantas bases de datos distintas, difícil de dar una receta que funcione para todos los casos. Además, aparte de la dificultad de tranferir la información entre los dos sistemas gestores de base de datos, también nos influirá mucho en la complejidad del problema
el tipo de datos de las tablas que estamos utilizando.Por ejemplo, las fechas, los campos numéricos con decimales o los booleanos pueden dar problemas al pasar de un sistema a otro porque pueden almacenarse de maneras distintas o, en caso de los números, con una presición distinta.
Si la base de datos anterior estaba costruida en Access lo tenemos bastante fácil, gracias a que MySQL dispone de un driver ODBC para sistemas windows, que nos permite conectar Access con el propio MySQL y pasar información fácilmente.
Tambien resulta necesario indicar que si deseamos hacer una exportación desde Access en local a MySQL en remoto puede haber problemas porque no todos los alojadores permiten las conexiones en remoto con la base de datos. Si no tenemos disponible una conexión en remoto con nuestro servidor de base de datos
vamos a tener que cambiar la estrategia un poco.
La idea en este ultimo caso es instalar MySQL en local y realizar una migración desde Access en local a MySQL en local y luego podriamos hacer un backup de la base de datos local y subirla a remoto.
Son pocos los casos que presentan esta situación, sin embargo hay que decir que Access también nos puede ayudar en este caso. Access permite seleccionar una base de datos SQL Server y trabajar desde la propia interfaz de Access. La idea es que Access también permite trabajar con MySQL y posiblemente haciendo un
puente entre estos dos sistemas gestores se pueda exportar datos de SQL Server a MySQL.
Lo que es seguro que utilizando el propio Access de puente podríamos realizar el trabajo. Primero exportando de SQL Server a Access y luego desde Acces a MySQL.
• La primera vez que lo corremos no presentara un formulario
en blanco y sin • Para crear una base de datos nueva, hay que ir al menú
Extra y la opción • Ahora hay que crear una tabla donde almacenaremos los datos, asi que • También si nosotros lo deseamos podemos ingresar información
a la base Aparte de los archivos de la página, debemos subir la base de datos con la que tenemos que trabajar.
NOTA: Usted deberá disponer de conocimientos de MySQL y PHP
Es muy corriente que nuestro proveedor de hosting ofrezca junto con PHP la base de datos MySQL, así que para subir esa base de datos al servidor van encaminadas a ofrecer soluciones para esa base de datos.
Para subir una base de datos de MySQL tendremos que tener en cuenta que existen tres casos distintos en los que nos podríamos encontrar en este momento:
1.La base de datos que pretendemos subir está vacía: Tan sólo hemos creado las tablas, pero no hemos introducido datos en ellas o, a lo sumo, tienen algún dato que hemos introducido de pruebas.
2.La base de datos que queremos subir está completa y es una base de datos MySQL: En este caso tenemos creada la base de datos en local y con toda la información dentro y, por supuesto, queremos que esa información quede también en la base de datos remota.
3.La base de datos está completa (como el caso anterior), pero no es una base de datos MySQL: En este caso estaríamos haciendo una migración de la base de datos
Como todo lenguaje, PHP, requiere de la instalación de un servidor en nuestra PC para poder trabajar.
Entonces, antes de comenzar a crear nuestros programas en PHP, es necesario:
* Convertir nuestro ordenador en un servidor. Esto se hace instalando uno de los varios servidores disponibles para el sistema operativo de nuestra máquina.
* Introducir en nuestro servidor los archivos que le permitan la comprensión de PHP.
IMPORTANTE: Para conocer la forma de instalar PHP sobre cada servidor de cada sistema operativo podemos dirigirnos a la documentación de la página oficial de PHP, la cual dipone de un manual en HTML, donde se explican minuciosamente y entre otras cosas los pasos a seguir para cada caso particular.
Aqui se te ofrece algunas ayudas para configurar PHP en los sistemas más habituales.
Estas serían algunas posibilidades de sistemas operativos y soluciones que funcionan bien.
Si sos principiante, podría ser recomendable utilizar el servidor Personal Web Ser.
* Personal Web Server de Microsoft como servidor el cual sirve para el aprendizaje en ASP.
* Una instalación autoextraible de la versión más reciente de PHP que además de tardar menos en descrgarse, es una guía paso a paso en el proceso de instalación.
También resulta útil explicar las pautas principales a seguir para incluir PHP en el código de nuestra página, la forma de introducir comentarios.
PHP se escribe dentro de la propia pagina web, junto con el código HTML y, como para cualquier otro tipo de lenguaje incluido en un código HTLL, en PHP necesitamos espacificar cuales son las partes constitutivas del código escritas en este
lenguaje. Esto se hace, como en otros casos delimitando nuestro código por etiquetas.
El modo de funcionamiento de una página PHP, a grandes rasgos, no difiere del clásico para una página dinamica de lado servidor: El servidor va a reconocer la extension correspondiente a la página PHP, y antes de enviarla al navegador va a engancharse a interpretar y ejecutar todo aquello que se encuentre entre las etiquetas correspondientes al lenguaje PHP.
El resto lo enviará, asumirá que se trata de código HTML absolutamente comprensible por el navegador.
Otra caracteristicas general de los scripts en PHP es la forma de separar las distintas instrucciones . Para hacerlo, hay que acabar cada instrucción con un punto y coma ";".
Es la interfaz propuesta por Microsoft como una alternativa más rápida que el CGI, y ya está incluida en el Servidor Microsoft Internet Information (IIS).
Así como los escritos CGI, los programas escritos usando ISAPI habilitan un usuario remoto para ejecutar un programa, busca información dentro de una base de datos, o intercambia información con otro software localizado en el servidor.
Los programas escritos usando la interfaz ISAPI son compilados como bibliotecas de enlace dinámico (DLL - Dynamic Link Library), ya que son cargados por el servidor Web cuando éste se inicia. Dichos programas se vuelven residentes en memoria, por lo que se ejecutan mucho más rápido que las aplicaciones CGI, debido a que requieren menos tiempo de uso de CPU al no iniciar procesos separados.
Uno de los programas ISAPI más usados es el HTTPODBC.DLL que se usa para enviar y/o devolver información hacia y desde las bases de datos, a través de ODBC.
Además, ISAPI permite realizar un procesamiento previo de la solicitud y uno posterior de la respuesta, con lo cual manipula la solicitud/respuesta HTTP. Los filtros ISAPI pueden utilizarse para aplicaciones tales como autenticación, acceso o apertura de sesión.
Java ofrece un ambiente de programación muy sencillo, robusto, dinámico, de propósito general, orientado a objetos y múltiples plataformas, creado por Sun MicroSystems.
Es tanto un compilador como un lenguaje intérprete. El código fuente de Java es convertido en instrucciones binarias simples, y compilado con un formato universal.
El Compilador realiza todas las actividades de un procesador real en un ambiente virtual más seguro. Es decir, ejecuta instrucciones, crea y manipula información, carga y hace referencia a bloques de código nuevos.
El Intérprete, que es pequeño y muy útil, es capaz de ser implantado en cualquier forma que se desee para un sistema operativo particular. Este puede correr como una aplicación independiente, o como una parte de otro software, tal como el Web Browser.
El concepto de Java es diferente al de CGI, ya que el CGI se ejecuta en el servidor, mientras que Java se ejecuta en el cliente.
Los programadores pueden desarrollar pequeñas aplicaciones, las cuales permiten tener sitios Web con una gran funcionalidad en cuanto a: animación, actualización en vivo, interacción bidireccional y más.
Al integrarse en una página Web, las aplicaciones de Java tienen acceso a:
*Recreación de gráficos expertos.
*Interacción en tiempo real con los usuarios.
*Actualización en vivo de la información.
*Interacción instantánea con los servidores a través de la red.
Las aplicaciones de Java pueden obtenerse en cualquier servidor con esta tecnología y funcionan de forma segura bajo cualquier plataforma o arquitectura de CPU, permitiendo introducirlas en páginas HTML.
Las aplicaciones son programas independientes, tales como el browser HotJava.
Procesamiento Cliente/Servidor
Por lo general, las aplicaciones Web son procesadas completamente en el lado del servidor, lo cual no es precisamente lo más apropiado, ya que significa un uso excesivo de memoria, manteniendo al usuario en la espera mientras termina de ejecutarse. Pero los browser Java (del lado del usuario) pueden ejecutar aplicaciones, y no sólo desplegar documentos HTML, poniendo a correr el proceso en el lugar apropiado.
Las aplicaciones clásicas proveen de información acerca de los tipos de formato (tipos MIME). Los browser del Web rápidos serán capaces de aprender cómo tratar con nuevos protocolos y dar formato dinámicamente a los datos.
Seguridad
Java está diseñado para proveer la máxima seguridad posible en redes públicas, con múltiples formas de seguridad ante virus, posibles invasiones o accesos incorrectos, archivos basura, etc. Java es como una versión de C++, en la cual se puede causar cualquier daño. Es funcional como C y modular como C++.
Conectividad de Bases de Datos de Java (JDBC)
Se considera el primer producto estándar de Java con DBMS, creado y ofrecido por primera vez en marzo de 1996.
Crea una interfaz con un nivel de programación que le permite comunicarse con las bases de datos mediante un concepto similar al de componentes ODBC, el cual se ha convertido en el estándar que se utiliza en computadoras personales o en redes locales
El estándar de JDBC está basado en un nivel de interfaz con instrucciones SQL X/Open, que es básicamente lo mismo que en ODBC.
Las clases de objetos para iniciar la transacción con la base de datos, están escritas completamente en Java, lo cual permite mantener la seguridad, robustez y portabilidad de este ambiente.
El puente JDBC-ODBC manipula la traducción de llamadas JDBC a aquellas que puedan ser entendidas por el cliente ODBC a un nivel de lenguaje C.
JavaScript
*Es un lenguaje muy poderoso y especialmente diseñado para la creación de escritos, que se alojan dentro de un documento HTML. Dicho lenguaje es propiedad de Netscape.
*Es un API programable que permite crear escritos de eventos, objetos y acciones, bajo cualquier plataforma. Gracias a que JavaScript es parte de la conexión en vivo, se puede usar para crear interacciones entre documentos HTML, Plug-ins (aplicaciones que corren dentro del browser del Web) y Java.
*Las conexiones en vivo habilitan
*Navegación con Plug-ins, que se carga en una página para interactuar con JavaScript, que se encuentra activo dentro de la misma página.
*Aplicaciones de Java cargados en la misma página para comunicarse con los escritos JavaScript activos dentro de la misma página, y viceversa.
*Mediante el uso de JavaScript se pueden enviar respuestas ante una variedad de eventos, objetos y acciones, permitiendo cambiar imágenes o activar sonidos ante determinados eventos, tales como entrar o salir de una página, presionar el ratón, etc.
*Es un lenguaje de escritos compacto, basado en objetos, para el desarrollo de aplicaciones Internet Cliente/Servidor. Las sentencias JavaScript que reconocen y responden ante eventos, pueden ser introducidas directamente en una página Web. Por ejemplo, se puede escribir una función JavaScript que verifique la correcta entrada de datos a una forma, sin necesidad de transmisión de datos a través de la red. Así, una página HTML con código JavaScript puede interpretar el texto introducido y alertar al usuario si el dato es inválido.
Para la interconexión de una base de datos con el Web, se pueden construir escritos CGI en lenguajes de programación adecuados, tales como C o Perl. Estos escritos se mantendrán cargados en memoria a la espera de requisiciones o llamadas del servidor, y realizando las conexiones con la base de datos.
Algo un poco más complejo es crear un servidor personal, tal como APACHE, y agregarle los servicios que se consideren necesarios, a través de módulos. Para ello, se puede obtener el código fuente de los servidores ya existentes y que se encuentren disponibles en Internet, tal como el anteriormente mencionado, luego compilarlo y modificarlo según conveniencias.
La idea de esta page es exponer someramente la tematica de las bases de datos en la Web a la fecha verano del 2007.
Por qué utilizar Bases de Datos en el Web, seguridad,Integración de Bases de Datos en el Web, cómo funciona la Integración de Bases de Datos en el Web ,categorización de Interfaces Web/DBMS y Tecnologías para la Integración de Bases de Datos en el Web .
De manera de conceptualizar por que es necesario uitilizar Bases de Datos en la Web
Conocer nociones sobre las tecnologias para la Integración de Bases de Datos en el Web para uitilizar las que mas conveniente para cada caso
El Web es un medio para localizar/enviar/recibir información de diversos tipos, aun con las bases de datos. En el ámbito competitivo, es esencial ver las ventajas que esta vía electrónica proporciona para presentar la información, reduciendo costos y el almacenamiento de la información, y aumentando la rapidez de difusión de la misma.
Internet provee de un formato de presentación dinámico para ofrecer campañas y mejorar negocios, además de que permite acceder a cada sitio alrededor del mundo, con lo cual se incrementa el número de personas a las cuales llega la información.
Alrededor de 14 millones de personas alrededor del mundo hacen uso de Internet, lo cual demuestra el enorme potencial que esta red ha alcanzado, con lo cual se puede decir que en un futuro no muy lejano, será el principal medio de comunicación utilizado para distintos fines.
Pero, no sólo es una vía para hacer negocios, sino también una gran fuente de información, siendo éste uno de los principales propósitos con que fue creada.
Una gran porción de dicha información requiere de un manejo especial, y puede ser provista por bases de datos.
En el pasado, las bases de datos sólo podían utilizarse al interior de las instituciones o en redes locales, pero actualmente el Web permite acceder a bases de datos desde cualquier parte del mundo. Estas ofrecen, a través de la red, un manejo dinámico y una gran flexibilidad de los datos, como ventajas que no podrían obtenerse a través de otro medio informativo.
Con estos propósitos, los usuarios de Internet o Intranet pueden obtener un medio que puede adecuarse a sus necesidades de información, con un costo, inversión de tiempo, y recursos mínimos. Asimismo, las bases de datos serán usadas para permitir el acceso y manejo de la variada información que se encuentra a lo largo de la red.
La evaluación de este punto es uno de los más importantes en la interconexión del Web con bases de datos.
A nivel de una red local, se puede permitir o impedir, a diferentes usuarios el acceso a cierta información, pero en la red mundial de Internet se necesita de controles más efectivos en este sentido, ante posible espionaje, copia de datos, manipulación de éstos, etc.
La identificación del usuario es una de las formas de guardar la seguridad. Las identidades y permisos de usuarios están definidas en los Archivos de Control de Acceso.
Pero la seguridad e integridad total de los datos puede conservarse, permitiendo el acceso a distintos campos de una base de datos, solamente a usuarios autorizados para ello.
En este sentido, los datos pueden ser presentados a través del Web de una forma segura, y con mayor impacto en todos los usuarios de la red mundial.
Para la integración de bases de datos con el Web es necesario contar con una interfaz que realice las conexiones, extraiga la información de la base de datos, le dé un formato adecuado de tal manera que puede ser visualizada desde un browser del Web, y permita lograr sesiones interactivas entre ambos, dejando que el usuario haga elecciones de la información que requiere.
En la actualidad, muchas instituciones se han dado cuenta de la importancia que el Web tiene en el desarrollo de sus potencialidades, ya que con ello pueden lograr una mejor comunicación con personas o instituciones situadas en cualquier lugar del mundo.
Gracias a la conexión con la red mundial Internet, poco a poco, cada individuo o institución va teniendo acceso a mayor cantidad de información de las diversas ramas de la ciencia con distintos formatos de almacenamiento.
La mayor parte de información es presentada de forma estática a través de documentos HTML, lo cual limita el acceso a los distintos tipos de almacenamiento en que ésta pueda encontrarse.
Pero, en la actualidad surge la posibilidad de utilizar aplicaciones que permitan acceder a información de forma dinámica, tal como a bases de datos, con contenidos y formatos muy diversos.
Una de las ventajas de utilizar el Web para este fin, es que no hay restricciones en el sistema operativo que se debe usar, permitiendo la conexión entre si, de las páginas Web desplegadas en un browser del Web que funciona en una plataforma, con servidores de bases de datos alojados en otra plataforma. Además, no hay necesidad de cambiar el formato o estructura de la información dentro de las bases de datos.
Para realizar una requisición de acceso desde el Web hasta una base de datos no sólo se necesita de un browser del Web y de un Servidor Web, sino también de un software de procesamiento (aplicación CGI), el cual es el programa que es llamado directamente desde un documento HTML en el cliente. Dicho programa lee la entrada de datos desde que provienen del cliente y toma cierta información de variables de ambiente. El método usado para el paso de datos está determinado por la llamada CGI.
Una vez se reciben los datos de entrada (sentencias SQL o piezas de ellas), el software de procesamiento los prepara para enviarlos a la interfaz en forma de SQL, y luego ésta procesa los resultados que se extraen de la base de datos.
La interfaz contiene las especificaciones de la base de datos necesarias para traducir las solicitudes enviadas desde el cliente, a un formato que sea reconocido por dicha base. Además, contiene toda la información, estructuras, variables y llamadas a funciones, necesarias para comunicarse con la base de datos.
El software de acceso usualmente es el software distribuido con la base de datos, el cual permite el acceso a la misma, a través de solicitudes con formato. Luego, el software de acceso recibe los resultados de la base de datos, aún los mensajes de error, y los pasa hacia la interfaz, y ésta a su vez, los pasa hasta el software de procesamiento.
Cualquier otro software (servidor HTTP, software de redes, etc.) agrega enlaces adicionales a este proceso de extracción de la información, ya que el software de procesamiento pasa los resultados hacia el servidor Web, y éste hasta el browser del Web (ya sea directamente o a través de una red).
Tradicionalmente en el Web se han utilizado documentos HTML estáticos para los cuales se creaban las posibles respuestas ante requisiciones del cliente. Este método requiere de un gran desarrollo de aplicaciones y de mantenimiento de las mismas. Al interactuar con las bases de datos, este proceso se complica aún más.
Como la necesidad de acceder a bases de datos desde el Web se ha incrementado, han sido creadas también interfaces que manipulan sus escritos para procesar la información, teniendo como punto común la ejecución de sentencias SQL para requerir datos a la base.
Aplicaciones de interfaz para la interacción de bases de datos con el Web han surgido ya. Los productos iniciales son simplemente modelos del ambiente cliente/servidor, con una capa adicional para crear resultados HTML que pueden ser vistos a través del Web, por medio de un procesamiento de los datos de la forma introducidos por el cliente. Además, al usar estas interfaces se puede crear el programa principal de la aplicación. Como puede observarse, estas herramientas permiten construir poderosas aplicaciones en el Web, pero se requiere que programadores experimentados logren un desarrollo a gran escala. También, el mantenimiento de las mismas es significativamente más complejo y extenso.
Una de las estrategias más famosas para la creación de aplicaciones de interacción con el Web, es la de descargar del Web, aplicaciones o componentes funcionales que se ejecutarán dentro del browser. Con ellas se realizará un procesamiento complejo del lado del cliente, lo cual requiere un gran esfuerzo para crear las piezas de la aplicación. Estas estrategias poseen dos características principales: garantizan la seguridad tanto en los sistemas de distribución como en la comunicación que se establece con tales aplicaciones, a través de Internet.
También han aparecido bibliotecas que incluyen motores propios de servidor que corren de forma conjunta con el Servidor Web, lo cual facilita el desarrollo de nuevas aplicaciones.
Una aplicación que posibilita interconectar al Web con una base de datos tiene muchas ventajas, además de que las funciones que cumplen actualmente los Servidores Web y las herramientas de desarrollo de aplicaciones Web, hacen más fácil que nunca la construcción de aplicaciones más robustas. Tal vez el mayor beneficio del desarrollo de estas aplicaciones en el Web sea la habilidad de que sean para múltiples plataformas, sin el costo de distribuir múltiples versiones del software.
Cada una de las interfaces para comunicar al Web con bases de datos, ha sido creada basándose en una tecnología de integración especial, a través de procesos de interconexión especiales, que serán descritos en el siguiente apartado.
Actualmente, ésta es la solución que más se está utilizando para la creación de interfaces Web/DBMS. Fue probada por primera vez en el servidor NCSA.
Se ha comprobado que si el Servidor Web recibe un URL con una llave, para devolver un documento HTML como respuesta, tendrá que cargar el servicio (programa) que le indique las variables de ambiente y de la forma HTML. La mayoría de las veces dicha llave es el "cgi-bin".
Entre las ventajas de la programación CGI, se tiene su sencillez, ya que es muy fácil de entender, además de ser un lenguaje de programación independiente, ya que los escritos CGI pueden elaborarse en varios lenguajes.
También es un estándar para usarse en todos los servidores Web, y funcionar bajo una arquitectura independiente, ya que ha sido creado para trabajar con cualquier arquitectura de servidor Web.
Como la aplicación CGI se encuentra funcionando de forma independiente, no pone en peligro al servidor, en cuanto al cumplimiento de todas las tareas que éste se encuentre realizando, o al acceso del estado interno del mismo.
Pero el CGI presenta cierta desventaja en su eficiencia, debido a que el Servidor Web tiene que cargar el programa CGI y conectar y desconectar con la base de datos cada vez que se recibe una requisición. Además, no existe un registro de el estado del servidor, sino que todo hay que hacerlo manualmente.
Es un conjunto de rutinas, protocolos y herramientas para construir aplicaciones de interfaz. Una buena API hace más fácil el trabajo de desarrollo de un programa, ya que debe proveer todos los bloques para construirlo. El programador lo único que hace es poner todos los bloques juntos.
API está diseñado especialmente para los programadores, ya que garantiza que todos los programas que utilizan API, tendrán interfaces similares. Asimismo, esto le facilita al usuario aprender la lógica de nuevos programas.
Cuando se realiza una requisición, el servidor llamará al API, brindando la ventaja de disponer de una mayor cantidad de servicios.
Es la interfaz propuesta por Microsoft como una alternativa más rápida que el CGI, y ya está incluida en el Servidor Microsoft Internet Information (IIS).
Así como los escritos CGI, los programas escritos usando ISAPI habilitan un usuario remoto para ejecutar un programa, busca información dentro de una base de datos, o intercambia información con otro software localizado en el servidor.
Los programas escritos usando la interfaz ISAPI son compilados como bibliotecas de enlace dinámico (DLL - Dynamic Link Library), ya que son cargados por el servidor Web cuando éste se inicia. Dichos programas se vuelven residentes en memoria, por lo que se ejecutan mucho más rápido que las aplicaciones CGI, debido a que requieren menos tiempo de uso de CPU al no iniciar procesos separados.
Uno de los programas ISAPI más usados es el HTTPODBC.DLL que se usa para enviar y/o devolver información hacia y desde las bases de datos, a través de ODBC.
Además, ISAPI permite realizar un procesamiento previo de la solicitud y uno posterior de la respuesta, con lo cual manipula la solicitud/respuesta HTTP. Los filtros ISAPI pueden utilizarse para aplicaciones tales como autenticación, acceso o apertura de sesión.
Java ofrece un ambiente de programación muy sencillo, robusto, dinámico, de propósito general, orientado a objetos y múltiples plataformas, creado por Sun MicroSystems.
Es tanto un compilador como un lenguaje intérprete. El código fuente de Java es convertido en instrucciones binarias simples, y compilado con un formato universal.
El Compilador realiza todas las actividades de un procesador real en un ambiente virtual más seguro. Es decir, ejecuta instrucciones, crea y manipula información, carga y hace referencia a bloques de código nuevos.
El Intérprete, que es pequeño y muy útil, es capaz de ser implantado en cualquier forma que se desee para un sistema operativo particular. Este puede correr como una aplicación independiente, o como una parte de otro software, tal como el Web Browser.
El concepto de Java es diferente al de CGI, ya que el CGI se ejecuta en el servidor, mientras que Java se ejecuta en el cliente.
Aplicaciones Java
Los programadores pueden desarrollar pequeñas aplicaciones, las cuales permiten tener sitios Web con una gran funcionalidad en cuanto a: animación, actualización en vivo, interacción bidireccional y más.
Al integrarse en una página Web, las aplicaciones de Java tienen acceso a:
Recreación de gráficos expertos.
Interacción en tiempo real con los usuarios.
Actualización en vivo de la información.
Interacción instantánea con los servidores a través de la red.
Las aplicaciones de Java pueden obtenerse en cualquier servidor con esta tecnología y funcionan de forma segura bajo cualquier plataforma o arquitectura de CPU, permitiendo introducirlas en páginas HTML.
Las aplicaciones son programas independientes, tales como el browser HotJava.
Procesamiento Cliente/Servidor
Por lo general, las aplicaciones Web son procesadas completamente en el lado del servidor, lo cual no es precisamente lo más apropiado, ya que significa un uso excesivo de memoria, manteniendo al usuario en la espera mientras termina de ejecutarse. Pero los browser Java (del lado del usuario) pueden ejecutar aplicaciones, y no sólo desplegar documentos HTML, poniendo a correr el proceso en el lugar apropiado.
Las aplicaciones clásicas proveen de información acerca de los tipos de formato (tipos MIME). Los browser del Web rápidos serán capaces de aprender cómo tratar con nuevos protocolos y dar formato dinámicamente a los datos.
Seguridad
Java está diseñado para proveer la máxima seguridad posible en redes públicas, con múltiples formas de seguridad ante virus, posibles invasiones o accesos incorrectos, archivos basura, etc. Java es como una versión de C++, en la cual se puede causar cualquier daño. Es funcional como C y modular Como C++.
Conectividad de Bases de Datos de Java (JDBC)
Se considera el primer producto estándar de Java con DBMS, creado y ofrecido por primera vez en marzo de 1996.
Crea una interfaz con un nivel de programación que le permite comunicarse con las bases de datos mediante un concepto similar al de componentes ODBC, el cual se ha convertido en el estándar que se utiliza en computadoras personales o en redes locales.
El estándar de JDBC está basado en un nivel de interfaz con instrucciones SQL X/Open, que es básicamente lo mismo que en ODBC.
Las clases de objetos para iniciar la transacción con la base de datos, están escritas completamente en Java, lo cual permite mantener la seguridad, robustez y portabilidad de este ambiente.
El puente JDBC-ODBC manipula la traducción de llamadas JDBC a aquellas que puedan ser entendidas por el cliente ODBC a un nivel de lenguaje C.
JavaScript
Es un lenguaje muy poderoso y especialmente diseñado para la creación de escritos, que se alojan dentro de un documento HTML. Dicho lenguaje es propiedad de Netscape.
Es un API programable que permite crear escritos de eventos, objetos y acciones, bajo cualquier plataforma. Gracias a que JavaScript es parte de la conexión en vivo, se puede usar para crear interacciones entre documentos HTML, Plug-ins (aplicaciones que corren dentro del browser del Web) y Java.
Las conexiones en vivo habilitan:
Navegación con Plug-ins, que se carga en una página para interactuar con JavaScript, que se encuentra activo dentro de la misma página.
Aplicaciones de Java cargados en la misma página para comunicarse con los escritos JavaScript activos dentro de la misma página, y viceversa.
Mediante el uso de JavaScript se pueden enviar respuestas ante una variedad de eventos, objetos y acciones, permitiendo cambiar imágenes o activar sonidos ante determinados eventos, tales como entrar o salir de una página, presionar el ratón, etc.
Es un lenguaje de escritos compacto, basado en objetos, para el desarrollo de aplicaciones Internet Cliente/Servidor. Las sentencias JavaScript que reconocen y responden ante eventos, pueden ser introducidas directamente en una página Web. Por ejemplo, se puede escribir una función JavaScript que verifique la correcta entrada de datos a una forma, sin necesidad de transmisión de datos a través de la red. Así, una página HTML con código JavaScript puede interpretar el texto introducido y alertar al usuario si el dato es inválido.
El primer paso es crear las bases de datos que vamos a usar en
nuestros ejemplos.
Vamos a probar los ejemplos usando dos bases de datos
relacionales en distinto formato para demostrar que no influye el
tipo de servidor de bases de datos que usemos, si los conectamos
mediante el ODBC de Windows 9x. Las dos base de datos tendrán las
mismas tablas que son las siguientes:
Tabla de clientes:
Tabla de proveedores:
Obtener un DSN
DSN: Data Source Name. Es un identificador único de la
base de datos en el sistema. Al definir un DSN hay que especificar
tanto la ruta completa del archivo de base de datos como el
controlador adecuado a la misma (MSAccess, FoxPro, DBase etc). Una
vez creado, es todo lo que necesitamos saber acerca de la base de
datos para poder abrirla, consultarla, modificarla, etc.
Una vez que tenga preparado su archivo de bases de datos (por
ejemplo ejemplo1.mdb) colóquelo en el directorio Data de su dominio.
Después vaya al panel de control de su dominio y obtenga un DSN para
dicho archivo. El DSN será el identificador con el que podrá
conectar con su base de datos.
Esto se hace así:
Abrimos Panel de Control y abrimos ODBC.
Selecciona la pestaña System DSN. Aparecerá vacía si no se
ha definido antes ningún otro DNS de sistema. Pulsa el botón
Add .
Escoge el driver para Microsoft Access ( en este caso ) y pulsa
el botón finish.
En la etiqueta Data Source Name, introduce el nombre con
el cual llamaras a tu base de datos. Para el ejemplo debes
introducir Ejemplo1 . Finalmente, pulsa el botón
Select y busca el nombre y path completo de la base de datos
que habíamos creado (Data/Ejemplo1.mdb). Y esto es todo. Ya esta
accesible tu base de datos mediante ODBC.
Personal Web Server es uno de los servidores WEB de Microsoft.
Viene en el CD de Windows 98 aunque es necesario instalarlo después
de la instalación de Windows. Para instalarlo hacemos:
Si tienes suerte y todo va bien ya tienes instalado el PWS y al
reiniciar el equipo tendrás en la barra de tareas el icono de PWS.
Pulsando en Avanzada crear tus directorios y darles los permisos
de ejecución para poder guardar en el los scripts o bien utilizar el
directorio que él crea por defecto.
También vamos a instalar otro servidor Web para que veas como
hacerlo y las diferencias entre uno y otro.Este otro servidor es el
Sambar web Server que pueden bajaros gratuitamente desde http://www.winfiles.com/
.
Una vez que tengan el fichero .zip de Sambar server lo
descomprimes en un directorio tmp y ejecutas el setup.exe, Ya está ,
nada más que hacer, aunque tiene muchas más posibilidades pero para
nuestros propósitos no nos interesa en este momento.
Otro paso para nuestro propósito es instalar los lenguajes
que vamos a utilizar y configurar nuestro servidor para que los sepa
usar.
Para ASP no hay problema porque como es de Microsoft y el
servidor tambien, no tenemos que hacer nada.Para C tampoco porque
nuestro CGI en C va a ser un ejecutable compilado y no necesitamos
el compilador en el servidor. La cosa se complica un poco más para
los demas lenguajes.
PHP3
Si todo ha ido bien ya tienes tu PWS funcionando con PHP3.
PERL
No es tan difícil como PHP3. Lo primero que debes hacer es
bajarte la versión de Perl 5 de http://www.perl.com/ o desde http://www.shareware.com/ y
descomprime el .zip que te has bajado en un directorio de tu
servidor. Por ejemplo c:\perl5. Para terminar sólo debes añadir el
directorio bin de perl a tu variable PATH dentro del
autoexec.bat
El sistema de acceso a bases datos a través de la web utilizando
la tecnología Microsoft, se denomina ADO (ActiveX Data Objects).
ADO: ActiveX Data Objects. Es una familia de objetos
componentes dedicados a facilitar el acceso a bases de datos. El
ProgID de cada uno de ellos se forma combinando ADODB. con el nombre
del objeto (por ejemplo ADODB.Recordset, ADODB.Connection,
ADODB.Command, etc). Por tanto, en VBScript los objetos se crean con
sentencias tipo Set mirst = Server.CreateObject("ADODB.Recordset"),
etc
Todo el sistema ADO se basa en una serie de objetos cuyas
propiedades y métodos hay que utilizar. Estos objetos están
registrados en el sistema, sin embargo no están predefinidos. Es
decir, hay que crearlos utilizando Server.CreateObject.
Como valores de muchas de las propiedades de los objetos ADO se
utilizan constantes, como adOpenForwardOnly,
adOpenKeySet, etc. Todas estas constantes empiezan por ad y
están definidas en un archivo llamado adovbs.inc para
Visual Basic script y adojavas.inc para Javascript. Estos
archivos los podrá encontrar en su instalación local de ADO. Para
incluirlos en las páginas ASP es necesario utilizar un código de
este tipo al comienzo de cada página ASP que use las constantes: Para que esta inclusión funcione el archivo adovbs.inc debe estar
en el mismo directorio que la página ASP que lo incluye. Representa una conexión a una base de datos. Este es el primer
objeto que debemos crear para poder conectar con la base de datos.
Tanto el objeto ADO que nos permite acceder a los datos (Recordset)
como el que nos permite realizar consultas (Command) disponen de una
propiedad llamada ActiveConnection que es una referencia al objeto
connection que enlaza con la base de datos a la que queremos atacar.
De ahí que el primer paso sea crear la conexión. ConnectionString Es una cadena de caracteres con la información necesaria para
establecer una conexión con la fuente de datos. Por tanto, es la
propiedad básica de este objeto. Aunque hay hasta 7 argumentos
distintos que se pueden suministrar en esta cadena, los básicos son
el DSN que identifica al archivo de base de datos y el login y
password si existen. Los argumentos se separan con punto y coma. Ejemplo: "DSN=midsn; UID=milogin; PWD=micontraseña" Open Abre la conexión con la base de datos. Si antes hemos asignado la
propiedad ConnectionString, este método no necesita parámetros. Close Cierra la conexión con la base de datos. <%
Set miconexion = Server.CreateObject("ADODB.Connection")
miconexion.ConnectionString = "DSN=midsn"
miconexion.Open
' .......
'........
miconexion.Close
%>
Este es el objeto ADO más importante ya que es con el que
accederemos directamente a los datos de las tablas, tanto para
leerlos como para modificarlos. Un objeto Recordset representa una tabla, que puede ser una tabla
física de la base de datos o bien una obtenida mediante una
operación como un filtrado o sentencia SQL. En cualquier caso, el
objeto representa a la tabla con todos sus registros, aunque sólo
uno de ellos es el activo. El registro activo es en el que podemos
leer o modificar los valores de los campos. También se le llama
cursor.
Para una mejor compresión y puesto que son numerosos, los hemos
dividido por categorías de utilidad. Propiedades que hacen referencia al origen de los
datos: Estas dos propiedades deben ser asignadas a todo Recordset, pues
le dicen la base de datos y la tabla de la que obtener sus
datos. ActiveConnection A esta propiedad se le debe asignar un
objeto connection que se haya creado previamente. Indicará al
Recordset la base de datos en la que buscar su tabla. Source Indica al objeto Recordset la tabla a la que representará. A la
propiedad Source se le asigna normalmente una cadena de caracteres
con el nombre de la tabla. Sin embargo, también es posible asignarle
una sentencia SQL y entonces el objeto Recordset referenciará al
resultado de aplicar dicha sentencia. LockType Indica el tipo de bloqueo que se realiza sobre la base de datos.
Por defecto toma el valor adLockReadOnly que como su nombre
indica sólo sirve para leer datos. Si deseamos editar o añadir
registros, tendremos que cambiar esta propiedad por otro valor. El
más usado es adLockOptimistic que permite editar la base de
datos o añadir registros realizando un bloqueo optimista (sólo
cuando sea estrictamente necesario). CursorType El tipo de cursor que se utiliza para recorrer los registros de
un recordset. Por defecto toma el valor adOpenForwardOnly
que como su nombre indica sólo permite moverse hacia adelante. Por
ello si queremos utilizar libremente todos los métodos de movimiento
de un recordset (MoveFirst, MoveTo, MoveNext, MovePrevious, etc)
tendremos que cambiar el cursor por uno más potente. Esto puede
hacerse asignando a esta propiedad el valor
adOpenKeyset Ejemplo
Aquí creamos en primer lugar un objeto Connection y luego un
Recordset al que se asigna dicho objeto. Este ejemplo es una especie
de esqueleto para los demás que sigan: Se supone que debe hacerse
algo parecido a esto para abrir el Recordset. Es decir, en los
restantes ejemplos escribimos sólo el código que iría en el lugar de
los puntos suspensivos de este script (NOTA: Recuerde que si hay que
añadir registros es necesario cambiar el LockType antes de
inicializar el recordset). Propiedades que hacen referencia al número de
registros: RecordCount Número de registros de la tabla a la que representa el objeto
recordset. Ejemplo: EOF Acrónimo de End Of File. Vale TRUE si estamos en el último
registro y FALSE si no. Se usa mucho como condición en bucles while,
los cuales se ejecutan hasta llegar al último registro. BOF Acrónimo de Begin Of File. Vale TRUE si estamos en el primer
registro y FALSE si no. Métodos para mover el cursor (registro activo): Estos métodos pueden funcionar todos o no dependiendo del tipo de
cursor creado. El tipo de cursor se asigna en la propiedad
CursorType. Por ejemplo, para asignar un cursor
adOpenKeySet que permita moverse hacia adelante o hacia atrás: Nótese que la asignación de propiedades al recordset debe hacerse
antes de invocar el método open que es el que lo inicializa con
registros. MoveFirst Mueve el cursor al primer registro de la tabla MoveLast Mueve el cursor al último registro de la tabla MoveNext Mueve el cursor al siguiente registro. MovePrevious Mueve el cursor al registro anterior. Ejemplo de un bucle que recorre todos los registros de una
tabla Lectura y modificación de los campos del registro
activo La sintaxis para acceder a los datos de un campo del registro
activo de un recordset es: Esto se usa tanto para leer como asignar valores. En nuestro
ejemplo, el objeto mirecordset representa a una tabla uno de cuyos
campos tiene el nombre "Domicilio". Así, con la expresión Leemos el valor del campo domicilio del registro activo y se lo
asignamos a la variable dom. Con la expresión asignamos un valor al campo Domicilio del registro activo. Tras
la edición del registro, es necesario llamar al método Update. El
motivo es que los cambios en el registro activo se realizan sobre un
buffer (espacio de almacenamiento intermedio) y no sobre el registro
propiamente dicho. Ejemplo: El recordset rstClientes representa a nuestra tabla de clientes
que, entre otros, tiene los campos Provincia e IVA . El siguiente
bucle recorre todos los clientes, comprueba su provincia y le asigna
el IVA correspondiente: 0 para Canarias y 16 para los demás Métodos para agregar o eliminar registros de la tabla Delete Eliminar el registro activo es muy fácil. Basta con invocar este
método. Por ejemplo, este bucle elimina todos los clientes morosos
de nuestra base de datos: AddNew y Update
Crear un nuevo registro involucra dos métodos: Primero AddNew
crea un nuevo registro en blanco. Después asignamos valores a los
distintos campos del registro. Por último invocamos el método Update
para que se haga efectiva la incorporación del nuevo registro con
los valores asignados. En este ejemplo incorporamos un nuevo cliente a nuestra base de
datos Recuerde que para que esto funcione hay que asignar un tipo de
bloqueo que permita la edición de la base de datos. Esto se hace
asignando a la propiedad LockType del recordset uno de estos
valores: adLockOptimistic, adLockPessimistic o
adLockBatchOptimistic. Este objeto es la representación de un comando que se envía a la
base de datos. Este comando puede ser una de estas 3 cosas: ActiveConnection Es una referencia al objeto connection que enlaza con la base de
datos. es imprescindible asignar esta propiedad antes de invocar el
método command.execute para ejecutar el comando. CommandText Este es el texto del comando. Si se trata de una consulta SQL (lo
habitual), esta propiedad es simplemente una cadena con el texto de
la consulta. Execute El método que ejecuta la consulta. El resultado de la ejecución
del comando normalmente será un recordset. En el ejemplo, obtenemos un recorset con un filtrado de la tabla
Clientes en el que se toma sólo aquellos clientes cuya provincia es
Navarra. En nuestro ejemplo PWS y la base de datos Ejemplo1 en formato
Access. Como casi todos los script que vamos a desarrollar en este
turorial, primero nos presenta el estado actual de la tabla Clientes
y un formulario para añadir un nuevo registro en la BD. Llamando al scripts desde el browser cliente con
http://127.1.1.1/sie/asp/bd.asp
Para Perl 5 y su librería DBI ( Database
Independent Interface ) para crear un script CGI que nos permita
conectar con nuestra base de datos. Esta librería viene gratuita con
la distribución normal de Perl5.
En este caso vamos a utilizar la otra base de datos de la que
disponíamos. Es decir vamos a utilizar la base de datos en formato
DBase III. En
particular con el DBI de Perl podemos acceder a cualquier base de
datos OBDC tan sólo con modificar unas pocas líneas de código.
El módulo DBI es de increíble utilidad porque nos abstrae de cómo
comunicarnos con cualquier tipo de bases de datos . El módulo DBI
nos facilita una interfaz para que podamos enviar comandos SQL a
cualquier Base de Datos. Escribimos un código standard que nos sirve
para todas sin tener que reescribir ni una sola línea. El secreto está en la librería DBD (Database Dependent) que viene
con la distribución standard de Perl 5. Esta librería permite al DBI
comunicarse con cualquier base de datos que necesite.
El CGI habla con el módulo DBI y este lo hace con DBD que tiene
un driver para comunicarse con la base de datos. Aunque para
nosotros que vamos a programar en Windows 9x no nos importa mucho
mientras tenga el driver para OBDC ya que el sistema operativo se
encargará de lo demás. Esto si es muy útil para los que programen en
Linux o Unix.
¿ Cómo se usa el módulo DBI?. Aquí
vamos a ver las características y métodos más comunes que nos hacen
falta para nuestra aplicación . Lo primero es cargar el módulo DBI. Esto se hace con la directiva
USE de perl. Después el objeto conexión con la base de datos dándole el nombre
de la base de datos, el del usuario, el password y el driver a usar.
En nuestro ejemplo se haría como sigue: Donde el nombre de la base de datos es Ejemplo2 y el driver es el
ODBC. El usuario y el password no hacen falta si en el ODBC no lo
configuraste. Lo que queremos hacer normalmente con la base de datos ( en
adelante BD ) después de conectar con ella suele ser consultarla.
Para ello preparamos la sentencia sql y la ejecutamos. Esto se hace
: Ya hemos ejecutado la consulta pero no hemos recogido los datos.
Para esto vamos a utilizar un array. El método fetchall_arrayref() nos devuelve todas las
filas devueltas por la consulta en un array. Para acabar sólo tenés que desconectar con el método
disconnet(); Como estamos usando el Sambar Web Server tenemos que situar
nuestro cgi el el directorio cgi-bin de nuestro servidor y llamarlo
desde nuestro navegador con una llamado como esta: "
http://127.1.1.1/cgi-bin/dbi_demo.cgi "
El PHP3 es otro lenguaje de script que nos permite programar
aplicaciones que se ejecutarán en nuestro servidor. Es uno de los
lenguajes más utilizados en el mundo Unix con el servidor Apache
aunque también se puede ejecutar bajo Windows.
En este caso vamos a utilizar la base de datos en formato Access de
nuevo junto con el PWS.
Lo primero que le indicamos al browser es que vamos a ejecutar
código PHP3. Esto lo hacemos con la directiva <?php para
que sepa cómo interpretarlo. Lo demás es bastante parecido a perl o a asp. Se trabaja con
objetos. Primero creamos el objeto conexión: Después definimos la sentencia sql: Lo ejecutamos: Obtenemos los resultados en un objeto cursor y se los mandamos al
cliente en una tabla. Cerramos la conexión. Para las demás opciones de la base de datos ( insertar, Borrar,
modificar ...) tan sólo tenemos que modificar le sentencia sql y
volver a hacer un select * para devolver la nueva tabla al usuario,
como se ve en el ejemplo: Hemos Creado dos ficheros php3 uno es el que nos enseña el estado
actual de la base de datos y nos presenta un formulario por si
queremos añadir un registro a ella.
El segundo fichero es la respuesta a la inserción que hemos
realizado y nos presenta el estado de la BD antes de insertar y
después.
Debes copiar los dos en un directorio de tu servidor con permiso
de ejecución.
Desde los ochenta aparece la tendencia de sustituir la documentación impresa del software,
dirigida al usuario, por la documentación electrónica llamada en línea.
El diseñador de aplicaciones debe suministrar al usuario final un sistema de ayuda en línea con varios niveles y así:
El diseñador de aplicaciones se empeña en crear interfaces de usuario claras y amigables,
sin embargo no todos los usuarios finales responden de la misma manera y para algunos la
operación y conocimiento de las aplicaciones ofrece mayor grado de dificultad.
La ayuda en línea es un poderoso auxiliar para resolver dudas, conocer la operación
básica de las aplicaciones, determinar errores que se cometen frecuentemente al operarlas
y la manera de corregirlos.
En las herramientas de desarrollo integrado de software, la ayuda en línea es casi
imprescindible.
En cualquier caso, la proporción del espacio en el disco duro ocupado por la ayuda en
línea con respecto al volumen completo de la aplicación asociada varía según su naturaleza.
En la máquina del autor se muestra un caso típico con diversas aplicaciones, la siguiente
tabla presenta para cada aplicación el espacio en megabytes ocupado por los archivos de
ayuda y el total ocupado por la aplicación así como el porcentaje de la ayuda.
A continuación se muestran los pasos generales para construir un Sistema de Ayuda en Línea.
El primer paso es quizás el más difícil en la mayoría de los sistemas de ayuda en línea. Es un paso pleno de creatividad y que exige del autor del sistema, talento e imaginación.
La estructura lógica del sistema de ayuda en línea se basa en los contenidos y sus relaciones entre sí. Para un buen diseño, es crucial establecer la correspondencia entre la ayuda y los diversos entornos y situaciones que se le presentarán al usuario al operar la aplicación asociada. Los tópicos (temas) de ayuda deberán ser, de preferencia, breves y su relación con otros deberá permitir una navegación fácil y productiva. El balance entre extensión y profundidad de los temas es difícil de establecer y no se puede generalizar. La propia aplicación asociada y la experiencia del autor de la ayuda determinarán el alcance de cada tópico.
El contexto para el que se proyecten los temas será un factor importante para su definición. Si el autor considera conveniente "hilvanar" algunas ideas deberá seleccionar los enlaces con otros temas relacionados y sugerir al usuario su revisión.
Los sistemas de ayuda en línea no presentan la información en forma secuencial, como en un libro normal, sino que están diseñados para navegar a través de los temas y, aunque su naturaleza es fragmentaria, se pueden establecer relaciones convenientes entre los temas para que el usuario los consulte siguiendo una ruta lógica que le permita aclarar sus dudas y mejorar su conocimiento sobre la aplicación asociada para un mejor aprovechamiento.
La estructura lógica es la disposición de los tópicos o temas de ayuda que facilita al usuario acceder a la información que le permite conocer mejor la aplicación asociada, o que le aclare las dudas naturales que surgen al operar cualquier producto de software.
Al igual que la tabla de contenidos de un libro, el tema de entrada en la estructura lógica debe ser el denominado tópico de contenidos. En un diagrama jerárquico, el nodo raíz sería el tópico de contenidos y en el desarrollo arborescente aparecerían los temas principales en los primeros niveles. Luego habría un cúmulo de temas relacionados unos con otros formando una red más o menos compleja. A continuación se muestra una estructura lógica en Delphi 7:
WinHelp opera los archivos de ayuda *.HLP de tal manera que las ligas son bidireccionales, lo que permite ir de un tópico a otro y regresar al anterior. Obviamente el tópico de contenidos no tiene liga hacia atrás.
Los tópicos son unidades completas de información que expresan una idea. El conjunto de tópicos constituyen la materia prima del sistema de ayuda en línea. Cada tópico proporciona diversos controles para la navegación en hipertexto, permitiéndole al usuario saltar de un tópico a otro.
Los tópicos se crean utilizando un procesador de palabras que facilite la inserción de notas al pie de página, que pueda guardar los archivos en formato de texto enriquecido *.RTF; WordXP de Microsoft tiene las características necesarias para crear los archivos fuente de los tópicos de ayuda.
Normalmente los tópicos incluyen los siguientes elementos:
Además el tópico puede incluir gráficos y ligas para saltar a otros tópicos. En la nomenclatura especializada se les denomina hotspots. Un hotspot es un texto o gráfico sobre el que el usuario puede con una pulsación del botón izquierdo del ratón (clic) iniciar alguna acción. Por ejemplo, saltar a otro tópico, desplegar un tópico en una ventana diferente o ejecutar una o varias macros (una macro es una rutina independiente). Las notas al pie de página se utilizan para insertar los códigos de control en los archivos de ayuda. A continuación se presentan los códigos predefinidos, aunque se pueden crear otros con la opción Multikey en el archivo del proyecto; éste se describe después.
El título del tópico normalmente aparece en la primera línea. WinHelp no requiere que los temas tengan un título; sin embargo, los títulos tienen el mismo propósito en la ayuda en línea que en los documentos impresos. Sirven para identificar el tema (o capítulo) y describen su contenido.
Además WinHelp ofrece diversas maneras para que el usuario busque los temas que existen en otra parte de la ayuda. La mejor manera de identificar el tema es por el título. El código ‘$’ especifica el título que se despliega en el historial, la caja de dialogo Buscar y en el menú del marcador. El archivo de ayuda contiene los controles que opera el programa WinHelp. Para hacer el título, se puede usar un formato como se haría con un título impreso: tamaño diferente al del texto, negrita o en color. El texto debe ser breve, claro y conciso. Normalmente cabe en una ventana o dos. Se escribe abajo del título, tal como se haría con un documento impreso. Cuando WinHelp despliega el texto, se desarrolla hacia abajo y se ajusta de manera automática, independientemente del ancho de la ventana. Por lo tanto, el autor de la ayuda no debe preocuparse por la longitud de cada línea al momento de crear el archivo fuente. Al final del texto se debe insertar un salto de página para que WinHelp lo trate como un tópico separado en el archivo compilado *.HLP.
Al escribir el tópico se pueden emplear las facilidades de formato que brindan los procesadores de palabra como WordXP de Microsoft: diversas fuentes, tamaños, colores estilos, líneas cajas, etc. Se sugiere utilizar una fuente de 10 puntos, NonSerif, tales como Arial o Helvética para la mayor parte del texto.
WinHelp utiliza los caracteres especiales que se insertan en el tópico como notas al pie de página, tanto para identificarlo como para agregar los controles de navegación: botones y otros controles que permiten el desplazamiento fácil a través del archivo de ayuda. Los botones de Indice, Buscar, Atrás, Historial, << (Anterior), >> (Siguiente), son buenos ejemplos de controles de navegación.
La mayoría de los tópicos incluyen en su texto hotspots, los cuales funcionan como enlaces para acceder a otros tópicos. Cuando el hotspot es una cadena de caracteres, ésta aparece en el archivo de ayuda compilado como una cadena de color verde y con un subrayado sencillo.
WinHelp utiliza notas al pie de página para identificar los tópicos y proporcionar algunos controles de navegación. En general se utilizan cuatro caracteres como nota al pie de página: #, $, K, +. Con el procesador WordXP, las notas al pie de página se insertan de la siguiente manera:
WinHelp utiliza la cadena contextual para identificar cada tópico. El usuario final nunca ve esas cadenas. Pero sirven para especificar el salto a un tópico. La cadena contextual no debe ser mayor a 255 caracteres. Se aceptan las letras (mayúsculas y minúsculas), los dígitos decimales, el punto y el subrayado, pero no el espacio en blanco. Para definir la cadena contextual se deberá utilizar el carácter # como marca de nota al pie de página.
Para el nombre del tópico (título) deberá utilizarse el carácter $ como marca de nota al pie. Para asignar un título al tópico:
Para añadir palabras y frases a la lista de Buscar, se utiliza el carácter K como marca de nota al pie de página.
Como ya se mencionó, un hotspot es texto o un gráfico sobre el que el usuario da un clic con el botón izquierdo del ratón para iniciar una acción. Un hotspot pude ejecutar un salto a otro tópico, desplegar un tópico en una ventana diferente, o ejecutar una o varias macros. El uso más frecuente es que una o varias palabras se designen como hotspot para que el usuario pueda saltar a otro tópico.
Para crear un hotspot que permita el salto a otro tópico:
El tópico de contenidos se crea como un tópico que contiene los títulos de los tópicos de segundo nivel. Cada título se convierte en hotspot que permite el salto al tópico correspondiente. No olvidar que los tópicos deberán separarse en el archivo fuente con saltos de página (en WordXP Ctl+Enter). El archivo fuente deberá salvarse en formato de texto enriquecido (.RTF). En WordXP utilizar la opción Archivo/Guardar como, y Seleccionar Guardar como tipo: Formato RTF. El compilador de WinHelp solamente puede compilar archivos RTF.
El formato RTF, es un archivo ASCII que contiene instrucciones de formato (tales como fuentes, salto de página, estilos, etc.) además del propio texto.
El archivo del proyecto del sistema de ayuda
El archivo del proyecto es del tipo texto con la extensión .HPJ. Contiene la información que utiliza el compilador del archivo de ayuda. El archivo del proyecto puede incluir muchas instrucciones que controlan diversos aspectos del archivo de ayuda.
Para escribir el archivo del proyecto utilizar un editor de textos:
[OPTIONS]
CONTENTS=CadenaContextual ;(para el tópico de contenidos)
TITLE=Título ;(este es el nombre de la barra del título de la ventana de ayuda)
COMPRESS=NivelCompresión ;(FALSE,MEDIUM,HIGH,0,1,NO,TRUE,YES)
ERRORLOG=ArchivoErrores ;(nombre del archivo de errores de la compilación)
[CONFIG]
[FILES]
ArchivoRTF1 ;(archivo fuente en formato RTF)
ArchivoRTF2 ;(archivo fuente en formato RTF)
ArchivoRTF3 ;(archivo fuente en formato RTF)
...
...
Guardar el archivo como texto.
Cabe recordar que al inicio de este trabajo se estableció que la metodología descrita correspondía a la construcción de archivos de ayuda *.HLP operados con el programa WinHelp a 16 bits y que por la compatibilidad se pueden operar perfectamente con la versión de WinHelp a 32 bits. Así que para la compilación se propone el uso del compilador de ayuda HCP.EXE o el H31:EXE. Para el caso de archivos *.HLP a 32 bits deberá utilizarse la herramienta WorkShop con prestaciones más avanzadas.
Antes de una compilación conviene asegurarse que se tiene lo siguiente:
La mayor parte de las interfaces actuales incluyen, normalmente, para la ayuda en línea del
usuario los siguientes recursos:
Búsquedas y Ayudas a comandos de Nero Burning ROM 6.0
Ayuda contextual con un asistente (Microsoft Word) Mensajes de texto, que se generan al pasar por encima de un icono y no se mueve de encima
durante un instante, lo que permite en el sistema inferir que el usuario no conoce el
significado de la imagen del icono. Este mensaje de ayuda que aparece bajo el icono
permite reforzar el modelo mental del usuario respecto de la aplicación.
Ayuda icónica de Microsoft Windows XP
Para insertar un archivo de ayuda en DELPHI debemos Seleccionar del menú Project la opción Options…
Una vez seleccionada esta opción se desplegará la siguiente ventana:
En esta seleccionamos el archivo de ayuda de nuestro software. Al hacer clic en OK quedará automaticamente registrado el archivo de ayuda deseado.
Luego se debe utlizar un procedimiento para llamar el archivo de ayuda con el comando de un boton o presionando la tecla F1. El procedimiento será el siguiente:
procedure TForm1.Ayuda1Click(Sender: TObject);
begin
messagedlg('clickea en help para ver la ayuda',mtConfirmation, [mbcancel,mbhelp], 1);
end;
Para insertar un archivo de ayuda en C++ Builder debemos Seleccionar del menú Project la
opción Options…
Una vez seleccionada esta opción se desplegará la siguiente ventana:
En esta seleccionamos el archivo de ayuda de nuestro software. Al hacer clic en OK quedará automaticamente registrado el archivo de ayuda deseado.
A continuacíon adjuntaré, como complemento, la informión necesaria para la “Generación de Archivos de Ayuda en formato CHM, pero esta vez utilizando HTML Help Workshop. El objeto de este documento es servir de guía para la generación de archivos de ayuda de aplicaciones desarrolladas bajo sistemas operativos Windows (versiones 95 y superior). Este documento debería aplicar a aquellos proyectos software que sean desarrollados para ser ejecutados bajo sistemas operativos Microsoft Windows (versiones 95 y superior). Existen dos formatos de ayuda disponibles para ejecutarse en sistemas operativos de la familia Microsoft Windows: HLP y CHM.
Es el estándar tradicional por excelencia de Microsoft Windows. Desde sus primeras versiones adoptó este formato, (RTF y Word), y extensión de archivo HLP para sus ayudas. Con el tiempo, hizo público este formato y proporcionó un compilador, (bajo MS-DOS), para generar esta clase de ayudas. El compilador evolucionó hasta llegar al actual HTML Help WorkShop con el que es posible compilar los dos formatos actuales: HLP y CHM.
Para generar este tipo de ayudas son necesarias las siguientes herramientas:
Con la aparición de Windows 98, Microsoft creó un nuevo estándar de ayudas. Los archivos CHM son un nuevo sistema de ayudas cuya principal diferencia con su antecesor, el HLP, es que no utiliza el formato RTF para generar los cuerpos de la ayuda sino que, claro está, utiliza HTML (Hyper Text Markup Language, o Lenguaje de Marcas de Hipertexto conocido por ser la base de las páginas web de internet).
Para crear archivos de ayuda CHM son necesarias las siguientes herramientas:
CHM utiliza un lenguaje de marcas (el popular lenguaje de de marcado de hipertexto o HTML, usado para generar páginas web).
Una vez creados los diferentes capítulos de nuestra ayuda en diferentes archivos HTM ( o HTML), estos son aglutinados en un archivo de proyecto con extensión HHP. A este proyecto se le añaden:
Con todo esto, compilamos el proyecto y obtenemos un archivo de ayuda con extensión CHM.
La versión del Help WorkShop recomendada para este tipo de ayudas es la 4.7 del año 1.999. Esta aplicación contiene un conversor de proyectos para ayudas HLP a CHM. Por lo tanto, y en teoria, es posible utilizar esta aplicación para ambos tipos de ayudas.
A continuación se mostrarán los pasos básicos para crear una ayuda CHM. Crear el contenido de la ayuda (archivos HTM,HTML). El primer paso es crear el contenido de la ayuda. Para ello generaremos archivos con extensión HTM (o HTML). Es recomendable crear una página HTML por cada topic de la ayuda. Se puede usar cualquier editor de páginas web, el bloc de notas e incluso Microsoft Word (guardando los archivos con la extensión correspondiente).
En el ejemplo que se presenta se han desarrollado 3 páginas webs: principal.htm, capitulo1.htm y capitulo2.htm (que han sido guardados en el directorio c:\ayudahtml\paginas). En estos documentos HTML se pueden insertar texto, imágenes, hipervínculos a otras páginas de ayuda y sitios web, e incluso código de lenguajes de script (JavaScript o VBScript). Es decir, tal y como fueran páginas web normales. Crear el archivo de proyecto (HHP). Un proyecto de ayuda CHM es un archivo de extensión HHP que aglutina todos los demás archivos que conforman la ayuda CHM. Para crear este y los demás archivos podemos utilizar la aplicación HTML Help Workshop o un editor de textos sencillo como el bloc de notas, aquí se hará con el primero.
Un archivo de proyecto HHP es un archivo de texto estructurado por secciones que se referencian entre los caracteres
“[“ y “]”.
Las secciones mas importantes son :
Para crear un nuevo proyecto arrancamos Microsoft HTML Help Workshop y pulsamos en el botón New de la barra de herramientas (o en la opción New del menú File). En la ventana que aparece elegimos Project y pulsamos OK, en la ventana siguiente nos pregunta si deseamos convertir un archivo de ayuda en formato HLP a formato CHM, pulsar en Siguiente porque no se quiere hacer esto. Y a continuación pedirá el nombre que se quiere dar al proyecto (en nuestro caso, lo hemos colocado en el directorio C:\ayudahtml\ejemplo.hhp). Luego pregunta si tenemos archivo de contenido, índice y páginas web ya creados. Como no lo tenemos no marcamos nada y pulsamos en Siguiente.
Una vez terminado se visualiza la pantalla del proyecto.
Haciendo click en el botón de la ventana Project podemos indicar las páginas html que tendrá nuestra ayuda (esto nos servirá para poder vincular más tarde el archivo de contenido con las páginas).
En la pantalla Topic Files se hace click en el botón Add ... y se seleccionan los archivos htm y html que compondrán nuestra ayuda.
Veamos a continuación los valores de los parámetros para las distinas secciones.
OPTIONS En esta sección damos a conocer al compilador de ayudas informaciones tales como:
Para poder establecer estos valores hay que hacer click en el botón Change project options de la pestaña Project. Antes de establecer valores como el archivo de contenido o de índice, será necesario crearlos previamente (para ello hacer click en la pestaña Contents e Index respectivamente). Ejemplo:
[OPTIONS]
Compatibility=1.1
Compiled file=EJEMPLO.chm
Contents file=EJEMPLO.hhc
Default topic=paginas\principal.htm
Display compile progress=No
Index file=EJEMPLO.hhk
Language=Español (alfabetización internacional)
Title=Ayuda de ejemplo en formato HTML
Un ejemplo para esta sección seria : [OPTIONS]
Compatibility=1.1
Compiled file=EJEMPLO.chm
Contents file=EJEMPLO.hhc
Default topic=paginas\principal.htm
Display compile progress=No
Index file=EJEMPLO.hhk
Language=Español (alfabetización internacional)
Title=Ayuda de ejemplo en formato HTML
ALIAS Cada archivo HTM de nuestra ayuda puede identificarse por un alias, (nombre o variable), que lo identifica y relaciona con un ID que es utilizado posteriormente en nuestras aplicaciones Visual Basic.
Para poder establecer estos alias hay que hacer click en el botón HTML Help API Information de la pestaña Project y en la sección ALIAS.
Por ejemplo :
[ALIAS]
ID_topic0=paginas\principal.htm
ID_topic1=paginas\capitulo1.htm
ID_topic2=paginas\captiulo2.htm
MAP Relación de archivos H en el que se definen los ALIAS descritos en la sección anterior y se relacionan con un ID que se utilizará posteriormente en nuestras aplicaciones Visual Basic.
Al igual que la anterior se accede haciendo click el botón HtmlHelp API Information de la pestaña Project y en la sección MAP.
Por ejemplo :
[MAP]
#include Ejemplo.h
Crear el archivo de contenido (HHC). En un archivo HHC se define la estructura del libro de contenidos de nuestra ayuda.
El proceso es ir añadiendo carpetas y páginas para ir generando los libros de la ayuda. Una carpeta es un contenedor de carpetas y de páginas.
En la ventana Table of Contents Entry (entrada de la tabla de contenido), se solicitará el texto que se desea visualizar (Entry title), así como el archivo html al que se desea vincular ese tópico de la ayuda (para vincularlo hacer click en el botón Add y seleccionar la página correspondiente). Crear el archivo de índice (HHK) [opcional]. La creación de un archivo de índice es opcional. En él referenciamos todas las cadenas de búsqueda para cada capítulo. Para crear un nuevo archivo pulsar en la pestaña correspondiente (Index) o bien en la opción New del menú File elegir Index.
Este apartado es similar a los anteriores de manera que se visualizan una serie de botones para insertar una nueva clave y vincularla con diferentes páginas.
Si pulsamos en el icono aparecerá una ventana en la que se podrán Añadir páginas y vincularlas con determinadas palabras clave. Por ejemplo si en un tópico de la ayuda hablamos del entorno gráfico de nuestra aplicación podemos poner como palabras clave entorno, gráfico, menús o lo que se desee y vincularlo con la/las páginas deseadas mediante la opción Add de la ventana que aparezca cuando se hace click en el icono correspondiente.
Crear el archivo de cabecera, declaración de ID de contexto (H).
En un archivo con extensión H definimos, (con el comando #define), los alias que referenciaremos a cada capítulo, (archivos HTM/L), de nuestra ayuda.
En nuestro ejemplo, se crea el archivo EJEMPLO.H con el siguiente contenido: #define ID_topic0 0
#define ID_topic1 1
#define ID_topic2 2
Compilar con HTML Help Workshop es una tarea extremadamente sencilla. Simplemente hemos de cargar el archivo de proyecto, (HHP o HPJ dependiendo del formato de nuestra ayuda), e ir a la opción Compile del menú File.
Aparecerá una ventana en que se nos pedirá confirmación del proyecto a compilar, (por defecto ofrece el que esté cargado en ese momento). En el proceso de compilación aparece una ventana de log en la que se nos informa del estado de dicha compilación. Si ocurre un error aparece reflejado en esta ventana.
Otra utilidad práctica de Help WorkShop es la opción de View Compiled Help File del menú View. Con está opción vemos cualquier archivo de ayuda; sea este CHM o HLP una vez compilado.
En nuestras aplicaciones en Visual Basic es posible referenciar un archivo de ayuda en cualquira de los formatos explicados, (HLP o CHM). La potencia de esta relación estriba en que en un control de nuestro formulario, (o en el propio formulario), es posible referenciar un capítulo concreto de nuestra ayuda. De esta forma se muestra la ayuda concreta sobre el tema referenciado para ese control.
Debido a que la implementación actual de la ayuda HTML no permite la inserción de la misma en un formulario y pulsar F1 para visualizarla, se hace necesario el uso de la llamada a una API. El nombre de esta API es HtmlHelp
A pesar de que al pulsar la tecla F1 no se lanza la ayuda automáticamente, la propiedad HelpContextID de los controles de VB puede seguir siendo utilizada, para que, en función del formulario en el cual estemos, se lance un capítulo de la ayuda u otro.
En primer lugar debemos tener una variable en la cual almacenar el path del archivo de ayuda CHM (en nuestro ejemplo: c:\ayudahtml\ejemplo.chm).
En un módulo de código debemos copiar la siguiente declaración del API y dos constantes públicas:
Declare Function HtmlHelp Lib “HHCtrl.ocx” Alias “HtmlHelpA” _
(ByVal hwndCaller As Long, ByVal pszFile As String, _
ByVal uCommand As Long, dwData As Any) As Long
Public Const HH_DISPLAY_TOPIC = &H0
Public Const HH_HELP_CONTEXT = &HF
Los argumentos de la función HtmlHelp y su respectiva funcionalidad son los siguientes:
Entre las propiedades del formulario o de cualquier control contenido en él hay una de nombre HelpContextID. Esta propiedad acepta cualquier valor numérico entero que indica el ID del tópico al que se hará referencia si se llama al sistema de ayuda en ese momento con la tecla F1, como ya se ha dicho, con la ayuda HTML y Visual Basic 5 es imposible que funcion este sistema.
En el archivo H de la ayuda CHM o en la sección MAP de la ayuda HLP referenciamos estos números con los capítulos de la ayuda que deseemos.
Para lanzar la ayuda correspondiente a un formulario únicamente hay que hacer una llamada a la función HtmlHelp con los parámetros deseados. En nuestro ejemplo, se hizo en el evento Click del botón cmdAyuda (dado que no puede ser lanzada pulsando la tecla F1), pero claro está puede hacerse la llamada desde el evento que se desee.
Private Sub cmdAyuda_Click()
Call HtmlHelp(0, "c:\ayudahtml\ejemplo.chm", HH_HELP_CONTEXT, _
ByVal Me.HelpContextID)
End Sub
Para instalar el compilador de ayuda HTML gratuito de Microsoft hay que ejecutar el archivo
HTMLHELP.EXE que se puede descargar de la página oficial de microsoft.
Haciendo doble click se arranca automáticamente el programa de instalación
y se visualiza la siguiente imagen indicando que se están extrayendo los archivos
de instalación:
Una vez se ha terminado de extraer los archivos aparece el programa de instalación que nos pide que aceptemos la Licencia de uso, en la pantalla titulada License Agreement pulsar el botón Accept.
Una vez aceptado el acuerdo de licencia se visualiza el asistente de instalación de Microsoft HTML Help Workshop (ver siguiente imagen), pulsar Next >.
A continuación aparece otra pantalla que solicita que seleccionemos el directorio de destino de instalación del programa. Podemos seleccionar uno existente pulsando en Browse ... o bien escribir una ruta deseada (por ejemplo c:\Archivos de programa\HTML Help Whorkshop. Y pulsar Next > cuando se haya seleccionado/escribo el directorio de destino.
Se visualizará a continuación la siguiente pantalla:
Que solicita que seleccionemos el tipo de instalación deseada. Elegir la instalación
Complete y pulsar el botón Next >
A continuación pide que seleccionemos el grupo de programas donde deseamos que sean creados los iconos de acceso al programa o bien si queremos que se cree un grupo de programas nuevo. Elegir lo deseado (preferiblemente crear un grupo de programas que se llame Microsoft HTML Help Workshop). Y pulsar Next >.
Por último se pide un nombre para personalizar la copia que se va a instalar del programa. Escribir lo que se desee y pulsar Next > .
Se comienzan a copiar los archivos de instalación y cuando esta termina mostrará el siguiente mensaje:
Pulsar OK para terminar.
Se habrá creado un grupo de programas denominado Microsoft HTML Help Workshop, desde el cual se puede arrancar el programa haciendo click en el elemento HTML Help Workshop.
Icon=c:\windows\moricons.dll,11
Indicamos que haga uso del icono n° 11 del archivo de iconos .dll
Icon= mariposa.exe,2
Con lo cual indicamos que use el icono con índice 2
Este indica cual será la ruta en la cual encontraremos el archivo de instalación o aplicación cuando se introduzca el CD en la lectora, o también cuando haga click derecho sobre la unidad del CD y aparezca Reproducción Automática
Open = < programa con el que se abrira > < nombre del archivo a abrir >
open = explorer.exe mipagina.html
Lo que hará será intentar abrir un fichero aunque no sea una aplicación, siempre y cuando el archivo tenga una aplicación asociada que el S.O reconozca, de lo contrario no la abrirá. Si el archivo a ejecutar tiene espacios debe colocarse entre comillas “”
Lo que hará será especificar cual será la etiqueta que aparecerá al ejecutarse el CD, la cual representara al mismo cuando sea reconocido.
shellexecute=[ < ruta >\]archivo.exe[param1, [param2]...]
shellexecute=< archivo no ejecutable >
Shell\identificador = < texto que debe aparecer en el menu>
Shell\ identificador\command = < nombre de la aplicación que deberá ejecutarse>
Shell\Identificador=Texto_a_mostrar
[autorun]
Shell\calculadora= Abrir la &Calculadora
Shell\calculadora\command=calc.exe
[autorun]
Shell\Fuente=Ver Código &Fuente
Shell\fuente=fuente\winword.exe codigofuente
[Autorun]
Shell\BlocDeNotas= &Abrir Bloc de Notas
Shell\BlocDeNotas\Command=Notepad.exe
Shell\Identificador\command=Aplicación
esto solo funciona para unidades tradicionales de disquete, no para unidades ZIP o Superdisk LS-120.
Una gran porción de dicha información requiere de un manejo especial, y puede ser provista por bases de datos.
forma de poder ingresar datos, es necesario presionar el botón New, para habilitarlo.
• Una vez presionado New aparecen unos datos ya predefinidos,
lo único que
tenemos que cambiar es nuestro usuario y contraseña.
Create Database…
• Hay que ingresar el nombre de la base de datos, podemos crear
ya la base
que utilizaremos en nuestros ejemplos de PHP, así que pongámosle
de
nombre basecurso.
seleccionamos la nueva base y de nuevo vamos al menú Extra solo que, ahora seleccionamos Create Table…
• En la ventana que aparece ponemos el nombre de la tabla el cual será la tablacurso, en esa misma pantalla crearemos los campos, los cuales serán
id
(con propiedades de primario y auto incremento), nombre, direccion,
telefono, email e imagen (todos de tipo varchar), ya que los agregamos
presionamos Create!
• Nos mostrará la tabla creada con sus respectivos campos
y propiedades.
desde el mismo MySQL Front, pero este no es el caso.
Ahora que si nosotros deseamos usar el método de línea
de comandos del MySQL la
información de la tabla es esta:
CREATE TABLE tablacurso (
id tinyint(3) unsigned NOT NULL auto_increment,
nombre varchar(30) DEFAULT '0' ,
direccion varchar(30) DEFAULT '0' ,
telefono varchar(30) DEFAULT '0' ,
email varchar(30) DEFAULT '0' ,
imagen varchar(30) DEFAULT '0' ,
PRIMARY KEY (id)
);
Después de tanta información sobre MySQL ya es tiempo
de iniciar a hacer programas
PHP para manejo de bases de datos de MySQL.
Las bases de datos con las que trabaja PHP son muy variadas y en distintos casos podemos utilizar una u otra, por lo que los modos de subir la base de datos también pueden variar.
En este caso se necesita:
Podemos utilizar distintos modelos de etiquetas en función de nuestras preferencias y costumbres. Hay que tener sin embargo en cuenta que no necesariamente todas estan configuradas inicialmente y que otras, como es el caso de que sólo están disponibles a pattir de una determinada versión.
WEB: ¿Por qué Utilizar Bases de Datos? | Integrar Bases de Datos | Tecnologías de Integracion | Creando BD |
Instalando Personal Web Server y Sambar Server | Instalando Perl y PHP3 | ASP | PERL | PHP3 |
Nombre de la fila
Tipo de la fila
dni
Texto (8), Primary Key
Nombre
Texto (20)
Apellido1
Texto (20)
Apellido2
Texto (20)
Nombre de la fila
Tipo de la fila
cif
Texto (9), Primary Key
Empresa
Texto (20)
NombreContacto
Texto (20)
Teléfono
Numérico
Introducción
Terminología
Los objetos componentes de ADO
<!--#INCLUDE FILE="adovbs.inc"-->
Connection
Propiedades y métodos más relevantes
Recordset
<%
Set miconexion = Server.CreateObject("ADODB.Connection")
miconexion.ConnectionString = "DSN=midsn"
miconexion.Open
Set mirecordset = Server.CreateObject("ADODB.Recordset")
mirecordset.ActiveConnection = miconexion
mirecordset.Source = "Clientes"
mirecordset.Open
........ ' Operaciones con los datos
........' de la tabla Clientes.
mirecordset.Close
miconexion.Close
%>
<h3>
Tenemos <%= rstClientes.RecordCount%>
clientes registrados en nuestra base de datos
</h3>
<%
Set miconexion = Server.CreateObject("ADODB.Connection")
miconexion.ConnectionString = "DSN=midsn"
miconexion.Open
Set mirecordset = Server.CreateObject("ADODB.Recordset")
mirecordset.ActiveConnection = miconexion
mirecordset.Source = "Clientes"
mirecordset.CursorType = adOpenKeySet
mirecordset.Open
........ ' Operaciones con los datos
........' de la tabla Clientes.
mirecordset.Close
miconexion.Close
%>
<%
mirecordset.MoveFirst
do while not mirecordset.EOF
..... ' Tratamiento
..... ' de datos
mirecordset.MoveNext
loop
%>
mirecordset("Domicilio")
dom = mirecordset("Domicilio")
mirecordset("Domicilio") = "C/ Bretón de los Herreros 19, 1º M"
mirecordset.Update
<%
rstClientes.MoveFirst
do while not rstClientes.EOF
if rstClientes("Provincia") =
"Las Palmas" or rstClientes("Provincia") = "Tenerife"
Then
rstClientes("IVA") = 0
else
rstClientes("IVA") = 16
end if
rstClientes.Update
rstClientes.MoveNext
loop
%>
<%
rstClientes.MoveFirst
do while not rstClientes.EOF
if rstClientes("Deuda") > 0 Then
rstClientes.Delete
end if
rstClientes.MoveNext
loop
%>
<%
rstClientes.AddNew
rstClientes("Nombre") = "Pepe Gotera"
rstClientes("Direccion") = "Rue del Percebe, 13"
rstClientes("Localidad") = "Sildavia"
rstClientes("Profesion") = "Chapuzas a domicilio"
rsClientes.Update
%>
Command
<%
Set miconexion = Server.CreateObject("ADODB.Connection")
miconexion.ConnectionString = "DSN=midsn"
miconexion.Open
Set SqlCommand = Server.CreateObject("ADODB.Command")
SqlCommand.ActiveConnection = miconexion
SqlCommand.CommandText =
"SELECT * FROM Clientes WHERE Provincia = 'Navarra'"
Set rstNavarros = SqlCommand.execute
' .......
'........
miconexion.Close
%>
Nuestro Ejemplo
¿Qué usamos?
El Módulo DBI
API DBI
use DBI;
$dbHandle = (DBI->connect('DBI:ODBC:Ejemplo2',
'Alejandro",
'12mw_l'));
use DBI;
$dbHandle = (DBI->connect('DBI:ODBC:Ejemplo2',
'Alejandro",
'12mw_l'));
$sql = "SELECT * FROM Clientes";
$statementHandle = $dbHandle->prepare($sql);
$statementHandle->execute() ||
die $statementHandle->errstr;
use DBI;
$dbHandle = (DBI->connect('DBI:ODBC:Ejemplo2',
'Alejandro",
'12mw_l'));
$sql = "SELECT * FROM Clientes";
$statementHandle = $dbHandle->prepare($sql);
$statementHandle->execute() ||
die $statementHandle->errstr;
$arrayRef = $statementHandle->fetchall_arrayref;
$dbh->disconnect();
Ejecutando el CGI
Introducción
Qué utilizamos?
El Lenguaje PHP3
$cnx = odbc_connect( 'Ejemplo1' , 'Alejandro', 'pasword' );
if (!$cnx) {
Error_handler( "Error al conectar odbc" , $cnx );
}
$SQL_Exec_String = "select * from Clientes";
$cur= odbc_exec( $cnx, $SQL_Exec_String );
if (!$cur) {
Error_handler( "Error en odbc_exec( ) " , $cnx );
}
echo "<table border=1><tr><th>Dni</th><th>Nombre</th>".
"<th>Apellido1</th><th>Apellido2</th></tr>\n";
$nbrow=0; //Variable local para contar el nº de filas
while( odbc_fetch_row( $cur ) ) {
$nbrow++;
$Dni= odbc_result( $cur, 1 );
$Nombre= odbc_result( $cur, 2 );
$Apellido1= odbc_result( $cur, 3 );
$Apellido2= odbc_result( $cur, 4 );
echo "<tr><td>$Dni</td><td>$Nombre</td>".
"<td>$Apellido1</td><td>$Apellido2</td></tr>\n";
}
echo "<tr><td colspan=2>$nbrow entradas en la bd </td></tr></table>";
odbc_close( $cnx);
Insertar, borrar...
function Enter_New_Entry($Dni,$Nombre,$Apellido1,$Apellido2) {
$cnx = odbc_connect( 'Ejemplo1' , 'Alejandro', 'Password' );
if (!$cnx) {
Error_handler( "Error en odbc_connect" , $cnx );
}
$SQL_Exec_String =
"Insert Into Clientes (dni, Nombre, Apellido1, Apellido2)
Values ('$Dni', '$Nombre', '$Apellido1', '$Apellido2')";
$cur= odbc_exec( $cnx, $SQL_Exec_String );
if (!$cur) {
Error_handler( "Error en odbc_exec( ) " , $cnx );
}
odbc_close( $cnx);
}
Ejecutando el CGI
¿Que es ayuda en línea? | Etapas de ayuda en línea | Interfaz de ayuda
Generemos ayudas en linea | Más ayuda en linea
Los medios de almacenamiento y la memoria principal de los sistemas de cómputo han crecido formidablemente, fomentando con ello que los fabricantes de software prefieran los manuales electrónicos a los manuales impresos, en beneficio del medio ambiente natural, motiva que se utilice menos papel para la conservación de los bosques.
CÓDIGO PROPÓSITO
# Define una cadena contextual.
$ Para el título del tópico.
+ Para secuencia de tópicos.
K Define una palabra clave para búsqueda.
* Etiqueta para exclusión de tópicos.
¡ Referencia de macro.
@ Comentario.
Argumento Descripción
HwndCaller Es un manejador de una ventana de aplicación o Null. Este manejador debe ser usado como el propietario o el contenedor de la ayuda HTML, dependiendo como sea usado. En VBA, en vez de usar vbNullString establecer este parámetro a 0.
PszFile Es el string que se corresponde con el path del archivo de ayuda. Opcionalmente puede especificar en que tipo de ventana se ha de visualizar.
UCommand Es la acción a realizar, o como mostar tópicos de ayuda. Pude ser usado con cualquiera de los dos comandos declarados como constantes HH_HELP_CONTEXT o HH_DISPLAY_TOPIC. Sólo se ha llegado a probar con éxito HH_HELP_CONTEXT.
DwDataCommand Especifica el topic ID.
Para lograr un sólido Diseño en nuestra interfaz, es necesaria implementar algunas estrategias que ayuden a la conversación en línea con el usuario. Entre unas de ellas podemos mencionar: “Archivo de Ayuda”.
HelpScribble es un authoring tool completamente equipado, fácil de utilizar para crear archivos de la ayuda,desde comienzo hasta el final.
Usted puede crear los archivos de WinHelp (hlp) , los archivos de la ayuda del HTML (chm) , una documentación manual y en línea impresa (en un Web site) toda del mismo proyecto usando HelpScribble.
Antes debemos aclarar que un archivo de Ayuda consiste en una serie de asuntos. Un asunto es una sola pagina en el archivo de ayuda. Cuando usted presiona F1 en una aplicación, le mostrará un asunto de su archivo de ayuda. Cada asunto explica generalmente un aspecto especifico del uso: un articulo de menú, una caja de dialogo pequeña, etc. La mayoría de los asuntos contiene vínculos a otros asuntos que proporciona información sobre los aspectos relacionados al uso.
En HelpScribble, usted puede crear nuevos asuntos seleccionando “asuntos nuevos” del menú. Entonces si usted utiliza el procesador de texto incorporado HelpScribble para mecanografiar adentro del texto del asunto. Para crear un vinculo a otro asunto simplemente hacemos clic derecho en ese asunto de la lista en la izquierda, y seleccionamos “crean acoplamiento” del menú pop-up. Eso es todo hasta aquí para crear un archivo de ayuda!
Un estrategia útil esta a primero crear todos los asuntos usando “asunto nuevo “. Escribir adentros sus títulos , pero no escriba adentro el texto real con todo, hasta que no se hayan creado todos los asuntos. De esta manera, creando asuntos vacíos, usted puede centrarse en la estructura general del archivo de ayuda. Además puede centrarse en el contenido de los asuntos individuales. Que a su vez facilita la creación de vínculos entre los asuntos mientras escribe el cuerpo del texto, puesto que usted habrá creado todos los asuntos.
Usted puede construir fácilmente el contenido de su archivo de ayuda usando el redactor del contenido del “built-in”. Haga Clic sobre "Header", escriba adentro el "título" y seleccione el botón de la adición (botón de signo más verde) para agregar un jefe. La adición de asuntos es incluso más fácil. El doble-clic en ellos en la lista que demuestra todos los asuntos en su ayuda se archiva simplemente.
HelpScribble construirá automáticamente el índice para su archivo de ayuda. Todo lo que usted tiene que hacer es especificar las palabras claves apropiadas para cada asunto. Usted puede hacer esto directamente en la rejilla del asunto de la ventana principal de HelpScribble, o usando el redactor conveniente del índice de HelpScribble.
Con el redactor de la secuencia, usted puede crear listas de los asuntos que pueden ser seleccionados utilizando los botones en WinHelp. Seleccionar las secuencias es lo más útil si su archivo de ayuda contiene una sección de referencia. Usted podría crear una secuencia con todos los asuntos de la referencia en orden alfabético.
Usted sabe del proverbio chino que dice que un buen cuadro vale más que mil palabras. Mientras que cualquier authoring tool de la ayuda permite que usted inserte enlaces de la pantalla y otros cuadros, con el redactor de “SHG” de HelpScribble usted puede hacer que sus cuadros tengan mayor alcance. Usted puede agregar regiones “clickable” a sus imágenes que, cuando están seleccionadas, para que muestren un asunto de la ayuda con más información sobre el área que fue seleccionada. Los nuevos usuarios no sabrán el nombre de todas las características en su uso, sino que sabrán señalar en un cuadro.
El redactor de “SHG” de HelpScribble hace esto muy fácil. Si usted ha hecho ya el enlace de la pantalla (o a cualquier imagen que usted desea utilizar), abra simplemente el archivo a memoria de imagen en el redactor de SHG. Si usted todavía no ha hecho el enlace de la pantalla, presione la pantalla de Alt+Print (capturar la ventana activa) o la pantalla de impresión (capturar la pantalla entera). Entonces cambie al redactor de “SHG” de HelpScribble y el uso corrige “Inserte La BITMAP”.
Para agregar un hotspot (región clickable), dibuje simplemente un rectángulo en la BITMAP con el mouse. Justo como usted haría en un paint. Entonces usted puede fijar
las características de los hotspot en la sección derecha del redactor de SHG. Generalmente, usted solamente dará a hotspot un nombre para la referencia fácil más adelante y
seleccionará el asunto del vinculo de la lista drop-down.
Una de las razones por las que HelpScribble es popular entre los reveladores de Delphi y de C++Builder, es la manera que integra con esas herramientas de desarrollo. Esta integración es proporcionada por el redactor de la característica de HelpContext que se incluye con HelpScribble.
Agregar una ayuda sensible al contexto del uso dentro de Delphi o C++Builder puede ser un poco una tarea. Pero el redactor de la característica de HelpContext de HelpScribble permite ligar encima del archivo de la ayuda a su uso un broche de presión. Primero usted necesita tomar un minuto para instalar el paquete del redactor de la característica en Delphi o C++Builder. Entonces usted puede hacer doble- clic en cualquier característica de HelpContext en el inspector del objeto demostrar el redactor de la característica de HelpContext. En el lado izquierdo del redactor de la característica, usted verá un árbol de todos los componentes en la forma actual. En el lado derecho, usted verá una lista de todos los asuntos en el proyecto actual de HelpScribble. (HelpScribble debe funcionar en el fondo.) Para enganchar encima de un asunto con un control, selecciona encendido el control y entonces el doble-clic en el título del asunto. ¡Fácil! No más de algo de voluntad de su parte.
Si usted desea utilizar el nuevo formato de la ayuda del HTML que Microsoft quisiera que usted utilice, usted puede todavía emplear el redactor de la característica de HelpContext. En las opciones del proyecto de Delphi, seleccione el archivo del chm en vez del archivo del hlp. Desde Delphi (más específicamente: el VCL) apoya solamente WinHelp fuera de la caja, usted necesita agregar un cierto código adicional a su uso. Si no, las peticiones de la ayuda causarán un mensaje de error que su archivo del chm que no sea un archivo válido de la ayuda (de WinHelp).
Las unidades libres de UseHTMLHelp y de HTMLHelpViewer se cercioran de que Delphi sepa utilizar ayuda del HTML. Agregue UseHTMLHelp.pas a la cláusula de las aplicaciones de su archivo de proyecto del dpr si usted está utilizando Delphi 3, 4 o 5.
Ayuda del HTML con Delphi 6 y 7
Utilice HTMLHelpViewer.pas si usted está utilizando Delphi 6 o 7. Delphi 6 tiene totalmente una nueva arquitectura de la ayuda para permitir utilizar más de un sistema de ayuda. Desafortunadamente, Borland no hizo uso que la arquitectura para apoyar ayuda del chm archiva. La unidad de HTMLHelpViewer.pas toma el cuidado de esto. Observe que no es semejante de un cierto código de fuente que esté libremente disponible en el Internet para hacer el trabajo de Delphi 6 con ayuda del HTML.
HelpScribble está solamente disponible para Windows, pero funciona muy bien debajo de Linux si usted utiliza VMware o Win4Lin. No hay formato estándar de la ayuda en Linux como hay en Windows. La mayoría de los usos de Linux proporcionan un manojo de archivos del HTML como documentos. Con El Proyecto De HelpScribbleExportación a la ayuda de la tecla F1, usted puede crear fácilmente archivos en HTML de su proyecto de ayuda. Si usted hace el desarrollo de la cruz-plataforma, usted puede utilizar los archivos de WinHelp en Windows, y el HTML se archiva en Linux, creando todo del mismo proyecto de HelpScribble.
Para realizar la activación de la página WEB se utiliza la API ShellExecute que se encuentra contenida en el archivo Shell32.dll, que permite mediante los parámetros que se le pasan, ejecutar cualquier programa en el entorno Windows. Mediante los parámetros adecuados se utiliza el API para abrir una página WEB con el explorador de Internet configurado por defecto. Se incluyen ejemplos en los siguientes lenguajes de uso común:
Descripción
Algoritmos
Option Explicit
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (
ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String,
ByVal lpParameters As String, ByVal lpDirectory As String,
ByVal nShowCmd As Long) As Long
Private Sub cmdSalir_Click()
      ' Sale del sistema al hacer click en salir
      End
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      ' Cambia color del Label al pasar mouse sobre el formulario
      lblURL.ForeColor = QBColor(9)
End Sub
Private Sub lblURL_Click()
      ' Llama a Procedimiento para abrir explorador al hacer click sobre el Label
      AbrirBrowser Me, lblURL
End Sub
Private Sub lblURL_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      ' Cambia color del Label al pasar mouse sobre el mismo
      lblURL.ForeColor = QBColor(12)
End Sub
Sub AbrirBrowser(F As Form, URL As String)
      ' Si no tiene http:// le agrega
      If Left(URL, 7) <> "http://" Then
          URL = "http://" + URL
      End If
      ' Mediante API de Windows ejecuta Internet Explorer
      ShellExecute F.hWnd, vbNullString, URL, vbNullString, vbNullString, vbNormalFocus
End Sub
Dentro del módulo que contiene el procedimiento ABRIR BROWSER se declara la función que hace el llamado al API ShellExecute.
A continuación se agrega el prefijo HTTP:// al CAPTION del LABEL de manera de convertirlo en una dirección URL.
Por último se llama a la función API con la dirección URL como parámetro.
* lblURL.click
AbrirBrowser(THISFORM.lblURL.Caption)
Se crea una función llamada ABRIR BROWSE, la cual agrega el prefijo HTTP:// delante del texto del LABEL.
* lblURL.MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord
* Cambia color del Label al pasar mouse sobre el mismo
THISFORM.lblURL.ForeColor = RGB(255,0,0)
* Form1.MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord
* Cambia color del Label al pasar mouse sobre el formulario
THISFORM.lblURL.ForeColor = RGB(0,0,255)
FUNCTION AbrirBrowser
LPARAMETERS lcLink, lcAction, lcParams
* Si no tiene http:// le agrega
IF LEFT(lcLink,7) <> "http://"
      lcLink = "http://" + lcLink
ENDIF
lcAction = IIF(EMPTY(lcAction), "Open", lcAction)
lcParams = IIF(EMPTY(lcParams), "",lcParams)
DECLARE INTEGER ShellExecute ;
      IN SHELL32.dll ;
      INTEGER nWinHandle, ;
      STRING cOperation, ;
      STRING cFileName, ;
      STRING cParameters, ;
      STRING cDirectory, ;
      INTEGER nShowWindow
DECLARE INTEGER FindWindow ;
      IN WIN32API ;
      STRING cNull, STRING cWinName
RETURN ShellExecute(FindWindow(0,_SCREEN.Caption), ;
      lcAction, lcLink, ;
      lcParams, SYS(2023), 1)
Dentro de la función se usa la instrucción DECLARE haciendo referencia al API ShellExecute.
También necesita en este caso declarar la referencia al API FindWindow porque se le debe pasar al ShellExecute el puntero a la ventana que hace el llamado.
Por último se llama al ShellExecute como primer parámetro a FindWindow y luego otros parámetros entre los cuales está la dirección URL de la página.
En este caso también se agrega el prefijo http:// al texto del LABEL para transformarlo en una dirección URL.
unit browser;
interface
uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Shellapi, StrUtils;
type
   TForm2 = class(TForm)
      lblTitulo: TLabel;
      lblURL: TLabel;
      Label1: TLabel;
      Button1: TButton;
      procedure Button1Click(Sender: TObject);
      procedure lblURLClick(Sender: TObject);
      procedure lblURLMouseMove(Sender: TObject; Shift:TShiftState; X,Y: Integer);
      procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
   private
     { Private declarations }
   public
     { Public declarations }
end;
var
     Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
     form2.close
end;
procedure TForm2.lblURLClick(Sender: TObject);
var lcLink:string;
begin
     if leftstr(form2.lblURL.Caption,7) <> 'http://'
     then lcLink := 'http://'+form2.lblURL.Caption
     else lcLink := form2.lblURL.Caption ;
     ShellExecute(0, 'open', Pchar(lcLink), nil, nil, SW_SHOWNORMAL);
end;
procedure TForm2.lblURLMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
     Form2.lblURL.Font.Color := clRed;
end;
procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
     Form2.lblURL.Font.Color := clBlue;
end;
end.
Luego de utiliza la declaración del API ShellExecute que se encuentra realizada en la unidad ShellAPI que viene con el DELPHI.
Se hace el llamado a la función pasando como parámetro la dirección URL.
En este caso también se agrega el prefijo http:// al texto del LABEL para transformarlo en una dirección URL.
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "Unit1.h"
#include "ShellApi.h" // Incluye la funcion ShellExecute
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::lblURLClick(TObject *Sender)
{
AnsiString lcLink;
if (lblURL->Caption.SubString(1,6) == "http://")
     lcLink = lblURL->Caption;
else
     lcLink = "http://"+lblURL->Caption;
ShellExecute(this->Handle,"open",lcLink.c_str(),0,0,SW_NORMAL);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::lblURLMouseMove(TObject *Sender, TShiftState Shift,int X, int Y)
{
    lblURL->Font->Color = clRed;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,int X, int Y)
{
    lblURL->Font->Color = clBlue;
}
//---------------------------------------------------------------------------
Luego de utiliza la declaración del API ShellExecute que se encuentra realizada en ShellAPI.h que viene con el C++ Builder.
Se hace el llamado a la función pasando como parámetro la dirección URL.
En este caso también se agrega el prefijo http:// al texto del LABEL para transformarlo en una dirección URL.
Imports System.Diagnostics
Public Class Form1
     Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
#End Region
Private Sub lblURL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblURL.Click
     Dim lcLink As String
     If lblURL.Text.Substring(1, 7) = "http://" Then
         lcLink = lblURL.Text
     Else
         lcLink = "http://" + lblURL.Text
     End If
     Dim sInfo As New ProcessStartInfo(lblURL.Text)
     Process.Start(sInfo)
End Sub
Private Sub lblURL_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lblURL.MouseMove
     lblURL.ForeColor = System.Drawing.Color.Red
End Sub
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
     lblURL.ForeColor = System.Drawing.Color.Blue
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     MessageBox.Show("Oprimir el Boton Salir")
End Sub
End Class
En el caso de este lenguaje en vez de utilizar el API ShellExecute se utiliza la clase Process del .NET Framework. System.Diagnostics. Con esta clase se emula la funcionalidad del API
Se hace el llamado al método de la clase con el parámetro que contiene la dirección URL.
En este caso también se agrega el prefijo http:// al texto del LABEL para transformarlo en una dirección URL.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Diagnostics;
namespace WindowsApplication6
{
   ///
   /// Summary description for Form1.
   ///
   public class Form1 : System.Windows.Forms.Form
   {
     private System.Windows.Forms.Label lblTitulo;
     private System.Windows.Forms.Label lblTitulo2;
     private System.Windows.Forms.Label lblURL;
     private System.Windows.Forms.Button button1;
     ///
     /// Required designer variable.
     ///
     private System.ComponentModel.Container components = null;
     public Form1()
     {
       //
       // Required for Windows Form Designer support
       //
       InitializeComponent();
       //
       // TODO: Add any constructor code after InitializeComponent call
       //
     }
     ///
     /// Clean up any resources being used.
     ///
     protected override void Dispose( bool disposing )
     {
       if( disposing )
       {
         if (components != null)
         {
         components.Dispose();
         }
       }
       base.Dispose( disposing );
       }
  
   #region Windows Form Designer generated code
  
   #endregion
   ///
   /// The main entry point for the application.
   ///
   [STAThread]
   static void Main()
   {
     Application.Run(new Form1());
   }
  
   private void Form1_Load(object sender, System.EventArgs e)
   {
  
   }
  
   private void lblURL_Click(object sender, System.EventArgs e)
   {
     string lcLink;
     if (lblURL.Text.Substring(1,6)=="http://")
         lcLink = lblURL.Text;
     else
         lcLink = "http://"+lblURL.Text;
     ProcessStartInfo sInfo = new ProcessStartInfo(lblURL.Text);
     Process.Start(sInfo);
   }
   private void lblURL_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
   {
     lblURL.ForeColor = System.Drawing.Color.Red;
   }
  
   private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
   {
     lblURL.ForeColor = System.Drawing.Color.Blue;
   }
  
   private void button1_Click(object sender, System.EventArgs e)
   {
     Form1.ActiveForm.Close();
   }
   }
}
En el caso de este lenguaje en vez de utilizar el API ShellExecute se utiliza la clase Process del .NET Framework. System.Diagnostics. Con esta clase se emula la funcionalidad del API
Se hace el llamado al método de la clase con el parámetro que contiene la dirección URL.
Muchas veces nuestros Sistemas pueden tener su propia Pagina Web. Te invito a conocer una manera fácil y eficaz de ejecutar tu Página Web desde un sistema base, en los distintos lenguajes que ya conocemos.
Las API ("aplication programing interface" o "interfaz de programación de la aplicación") de Windows son un conjunto de funciones propias del sistema operativo que puedes usar en tus programas, como por ejemplo, la función que analizaremos en esta oportinad: "ShellExecute" que permite ejecutar un programa, archivo, Página Web, etc, desde nuestro sistema. Esta función es la misma en todos los lenguajes pero ojo! que hay algunos detalles a tener en cuenta.
Para ejecutar una Pagina Web desde un sistema base podemos utilizar la función ShellExecute. Al utilizarlo su sintaxis es susceptible a Mayúsculas y minúsculas.
Debemos tener en cuenta que ShellExecute se encuentra declarada en la unidad ShellAPI.
La sintaxis es:
ShellExecute (Manejador, Operación, NombreFichero, Parámetros, Carpeta, Mostrar);
* Manejador (HWND) es el manejador (window handle) de la ventana madre, por ejemplo el manejador del formulario principal de nuestra aplicación.
* Operación (PChar) es un puntero a una cadena terminada en nulo conteniendo el nombre de la operación a realizar, en este caso como deseo abrir una Pagina Web utilizo 'open'(ejecuta o abre el archivo con la aplicación asociada), este parámetro también puede ser nil y en tal caso se asumirá la opción 'open' (abrir).
* NombreFichero (PChar) es un puntero a una cadena terminada en nulo conteniendo el camino y el nombre de la aplicación asociada, en nuestro caso la Pagina Web.
* Parámetros (PChar) es un puntero a una cadena terminada en nulo conteniendo los parámetros que se pasan a la aplicación indicada en NombreFichero. Si NombreFichero no es especificaba un ejecutable sino un documento, entonces Parámetros debe ser nil.
* Carpeta (PChar) es un puntero a una cadena terminada en nulo conteniendo el camino de la carpeta que se tomará como directorio por omisión de la aplicación. Se corresponde con el cuadro de texto "Iniciar en:" de las propiedades de los accesos directos. Este parámetro puede ser nil.
* Mostrar (Integer) especifica la forma en que se mostrará la aplicación especificada en NombreFichero. Hay varios valores posibles:
-SW_RESTORE: activa y muestra la ventana. Si la ventana está maximizada o minimizada, Windows restaura a esta a su tamaño y posición original.
-SW_SHOW: activa y muestra la ventana en su tamaño y posición actual.
-SW_SHOWNA: muestra la ventada en su estado actual.
-SW_SHOWNORMAL: activa y muestra una ventana en su estado y posición original.
-SW_MAXIMIZE: maximiza la ventana especificada.
-SW_MINIMIZE: minimiza la ventana especificada
-SW_SHOWMAXIMIZED: activa la venta y la muestra como una ventana maximizada.
-SW_SHOWMINIMIZED: activa la ventana y la muestra como una ventana minimizada.
-SW_SHOWMINNOACTIVE: muestra la ventana como una ventana minimizada.
-SW_SHOWNOACTIVATE: muestra la ventana en su tamaño y posición mas reciente.
La documentación indica que si el NombreFichero se refiere a un documento Mostrar debería ser 0, sin embargo si prueban otros valores igualmente funcionan.
Valor devuelto: si la función tiene éxito, ShellExecute devuelve un valor tipo INST con el manejador (handle) de la aplicación que se ejecutó. Si la función fracasa se obtiene un código de error.
Ejemplo:
Uses ShellAPI;
....
ShellExecute(Handle,'open','Tabaco.html','','',SW_ShowMaximized); //ejecuta la Pagina Web Tabaco.html en una ventana maximizada
Nota: Una aplicación llamada por ShellExecute correrá asincrónicamente, es decir, la ejecución de nuestra aplicación continua sin esperar el final de la aplicación llamada que correrá simultáneamente.
Debemos tener en cuenta que ShellExecute se encuentra declarada en archivo de cabecera shellapi.h de la librería shell32.lib
La sintaxis es:
ShellExecute(Manejador, Operación, NombreFichero, Parámetros, Carpeta, Mostrar);
· Manejador: manejador de la ventana madre, por ejemplo el manejador del formulario principal de una aplicación.
· Operación: es un puntero a una cadena que especifica la operación a realizar.
· NombreFichero: es un puntero que contienen el camino de la aplicación a ejecutar.
· Parámetros: puntero a una cadena que especifica los parámetros del archivo a ejecutar, en este caso la Pagina Web.
· Carpeta: es un puntero a una cadena que especifica el camino de la carpeta que se tomara como directorio por omisión de la aplicación.
· Mostrar: cual será la forma en que se mostrara la aplicación.
Valor devuelto: si la función tiene éxito, ShellExecute devuelve un valor tipo INST con el manejador (handle) de la aplicación que se ejecutó. Si la función fracasa se obtiene un código de error.
Ejemplo:
#include ...
ShellExecute(Handle,'open','Tabaco.html','','',SW_ShowMaximized); //ejecuta la Pagina Web Tabaco.html en una ventana maximizada
La Sintaxis es:
ShellExecute(Manejador, Operación, NombreFichero, Parámetros, Carpeta, Mostrar);
Observe que la sintaxis es la misma de los lenguajes anteriores.
Debemos tener en cuenta que ShellExecute se encuentra declarada en la librería "shel32.dll"
Ejemplo:
'Código para el Modulo
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
'Código para el procedimiento
'Definimos las variables
Dim CadenaResultante As Long
'Abre una página Web en el navegador por defecto del sistema
CadenaResultante = ShellExecute(hwnd, "open", "Tabaco.html", "", "", 1)
La sintaxis es:
Debemos tener en cuenta que ShellExecute se encuentra declarada en la librería "shel32.dll"
ShellExecute(Manejador, Operación, NombreFichero, Parámetros, Carpeta, Mostrar);
Observe que la sintaxis es la misma de los lenguajes anteriores.
Ejemplo:
DECLARE INTEGER ShellExecute IN shell32.dll ;
INTEGER hndWin, STRING cAction, STRING cFileName, ;
STRING cParams, STRING cDir, INTEGER nShowWin
...
ShellExecute(0, " open ", " tabaco.html ", "", "",1);
En el caso de los lenguajes .NET utilizamos la clase Process del .NET Framework namespace System.Diagnostics. Esta clase emula la función ShellExecute del API Win32, haciendo más simple la ejecución.
Debemos tener en cuenta que es necesario declarar el uso de Namespace mediante la siguiente instrucción:
Imports System.Diagnostics
Luego se declara y llama a la clase:
Dim sInfo AS New ProcessStartInfo("tabaco.html")
Process.Start(sInfo)
En el caso de este lenguajes, al igual que en Visual Basic .NET utilizamos la clase Process del .NET Framework namespace System.Diagnostics.
Debemos tener en cuenta que es necesario declarar el uso de Namespace mediante la siguiente instrucción:
using System.Diagnostics;
Luego se declara y llama a la clase:
ProcessStartInfo sInfo = new ProcessStartInfo("tabaco.html");
Process.Start(sInfo);
GetUserName (Devuelve en nombre del usuario)
GetComputerName (Devuelve en nombre del computador)
GetDiskFreeSpace (Devuelve información sobre el disco duro)
GetDiskFreeSpaceEx (Devuelve la capacidad de un disco mayor de 2Mb.)
GetVolumeInformation (Nombre del Disco, tipo de formato y numero de disco)
GetLogicalDriveStrings (Devuelve las unidades disponibles en un ordenador)
GetLocalTime (Devuelve la fecha y hora del ordenador)
GetCursorPos (Devuelve la posición del cursor en la pantalla)
GetDriveType (Devuelve el tipo de Unidad)
SetWindowPos (Formulario Siempre Visible)
GlobalMemoryStatus (Información sobre la memoria física disponible)
ShellExecute (Ejecutar)
GetVersionEx (Devuelve la versión del Windows)
SystemParametersInfo (Cambia el fondo de pantalla del Windows)
SHFileOperation (Enviar un archivo a la papelera de reciclaje)
GetWindowsDirectory (Muestra la ruta del Windows)
GetSystemDirectory (Muestra la ruta del directorio System de Windows)
sndPlaySound (Ejecutar sonidos .WAV)
FindExecutable (Busca el archivo ejecutable asociado a un archivo, y muestra el icono)
GetKeyboardStateByString - SetKeyboardStateByString (Seleccionar y Deseleccionar el Bloque Numérico del teclado)
FindWindow (Indica si una aplicación determinada esta en ejecución)
SystemParametersInfo (Activa/Desactiva las teclas de Escape - CTRL+ALT+SUB - ALT+TAB - CRTL+ESC)
GetSysColor (Devuelve los colores del Windows)
GetACP (Determina la página de código ANSI vigente)
SetWindowPos (Esconder y mostrar la barra de tareas del Windows)
ExitWindowsEx (Apaga o Reinicia el Windows 95/98)
GetSystemInfo (Información sobre el Hardware)
SystemParametersInfo (Devuelve y establece parámetros del sistema de Windows)
Amor | Sano | Asado | Alegria | Extasis |
---|
Te espero en: wilucha@gmail.com
Esta page está en: www.wilocarpio.com.ar
15/03/2002