miércoles, 29 de abril de 2009

Como conectar FiveWin con MySQL

Como con todas las bases de datos SQL, la conexión con MySQL se hace por medio de ADO (ActiveX Data Objects)

En el blog de mi amigo Armando Estrada SQLCmd, encontrarás toda la información para acceder a MySQL desde FiveWin y en general desde cualquier programa basado en xHarbour, ya sea desde modo consola, MinGUI, Xailer, etc.

Como puedo abrir DBFs por Internet

Sí es posible abrir un DBF por internet incluso con Clipper.

No es necesario tener una VPN o algún tipo de enlace dedicado, pero si un enlace de banda ancha ya sea ADSL, Cable o 3G.

Para acceder a los datos via internet, es necesario utilizar un componente de Advantage Database Server (ADS), llamado Advantage Internet Server (ó AIS), que viene incluído con el servidor de datos.

El proceso no es complejo pero sí laborioso, una lista de los paso básicos son:

En el servidor de datos:
  • Instalar el servidor de ADS en el equipo
  • Configurar en la configuración del servidor ADS los puertos para uso de internet.
  • "Abrir" el puerto correspondiente en el router y hacer el "forward" al equipo que tiene instalado el servidor ADS
  • Crear un diccionario de datos ADS para establecer los usuarios y los passwords de los mismos que podrán acceder a los datos vía internet.
En el cliente (programa en [x]Harbour):
  • Usar el RDDADS en el código fuente
  • Linkar las librerías correspondientes (RDDADS.LIB y ACE32.LIB)
  • Utilizar el tipo de servidor 4
  • Configurar el archivo ADS.INI con la IP publica del servidor y el puerto al cual conecgtar.
  • Conectar con el equipo remoto usando la función AdsConnect60()
  • Abrir los archivos DBF con el comando USE de toda la vida o con la función que comúnmente usas
Aquí puedes descargar algunos ejemplos y se incluye el código fuente de cada uno de ellos:

Ejemplo en xHarbour modo consola
Ejemplo en Xailer
Ejemplo en FiveWin

Estos programas se conectan a nuestro servidor en la Ciudad de México y te permiten hacer cosas como Altas, Bajas, modificaciones e imprimir reportes.

Manual de TOleAuto

TOleAuto es una clase nativa de xHarbour que se utiliza para manejar componentes COM como si fueran objetos nativos de xHarbour.

Esta clase fue desarrollada originalmente para FiveWin 16 bits por José Gimenez, quien es parte del equipo Xailer y posteriormente se integró nativamente a xHarbour (en Harbour existe como una LIB externa no nativa), y se puede utilizar directamente desde aplicaciones para modo consola y para Windows con cualquier GUI.

TOleAuto no tiene un manual como tal, porque lo único que hace es "instanciar" un objeto COM y lo carga dentro de una variable xHarbour, luego para manipular las propiedades y métodos del objeto COM, es necesario el manual del componente COM que hemos instanciado, no de TOleAuto.

xHarbour cuenta con una función llamada CreateObject() (muchos lenguajes de programación tienen esta función con el mismo nombre), se puede utilizar indistintamente TOleAuto o CreateObject().

Por ejemplo si queremos trabajar con Excel, haríamos algo como esto:

objExcel = TOleAuto():New("Excel.Application")

objExcel:Visible := .T.
objExcel:Workbooks:Add()
objExcel:Cells(1, 1):Value := "Prueba"

Es necesario saber el "ProgID" o nombre del servicio COM que queremos usar, en este caso: "Excel.Application".

Las propiedades ::Visible, ::Workbooks, ::Value y los métodos ::Add() y ::Cells() están documentados en la AYUDA DE VISUAL BASIC PARA APLICACIONES que se instala (o deberías de instalar) al momento de instalar el paquete OFFICE.

Por lo tanto, no hay un manual de la clase TOleAuto, si quieres manipular un objeto COM creado a partir de instanciar un objeto de esta clase, deberás contar con el manual de ayuda correspondiente de cada servicio COM que quieras manipular.

Nota: Los componentes COM requieren estar instalados localmente en la computadora que los vaya a utilizar.

jueves, 23 de abril de 2009

DBUs Visuales

Las herramientas DBU (DataBase Utilities) son bastante populares para manejo de tablas DBFs, hoy en día hay varias opciones muy buenas, la mayoría de los productos soportan DBFs, tanto indices NTX como CDX, y algunos de ellos hasta ADTs de Advantage Database Server.

martes, 21 de abril de 2009

Como meter un formulario en una pestaña de un folder con Xailer

Sí es posible meter un formulario dentro de una pestaña de un folder, hay que proceder así:

1) Crea un formulario nuevo, agrega tus controles, pero cambia la clase padre (FROM TFORM) y cámbialo por TFolderPage (FORM TFOLDERPAGE).

2) Crea en otro formulario un folder SIN PESTAÑAS, sólo el folder.

3) Usando el evento ON INITIALIZE de este formulario, crea las pestañas, y llama al formulario creado en el paso (1), al momento de llamarlo pásale como parámetro EL OBJETO FOLDER contenedor Tform():New(::oFolder).

El ejemplo DBFData6 utiliza esta técnica para meter formularios en folders, puedes revisarlo para tener un ejemplo funcional.

¿ Cómo verifico que una dirección de correo es válida ?

Dentro del protocolo SMTP existe el comando VRFY, el cual se utiliza para preguntarle a servidor de correo si una dirección de correo existe en dicho servidor.

Por ejemplo si tu quieres saber si la dirección info@ciber-tec.com existe, entonces tienes que realizar un enlace al servidor ciber-tec.com y preguntar si la cuenta "info" existe.

Si utilizas Funcky 6.0 para enviar tus mensajes de correo, el objeto SMTP de Funcky tiene el método Verify que te permite verificar si existe la dirección de correo antes de enviarlo:

WITH OBJECT TOleAuto():New("FunckySmtp")

IF :Validate("ciber-tec.com","info@ciber-tec.com")
...
...
...
ENDIF

END WITH

Si usas FiveWin con su clase TSMTP, tienes que modificar el código fuente de la clase para que realice el envío del comando VRFY al servidor.

Nota: No todos los servidores de correo soporta la verificación de direcciones, esta tiene que estar configurada en el servidor, si el servidor de correo no soporta el comando VRFY, entonces el uso de este comando siempre devolverá FALSE.

Conectar con base de datos en red

La pregunta de la semana:

Instalé una base de datos SQL en mi computadora con Windows XP o Vista y ahora quiero que todos los usuarios de la red local se conecten con mi computadora para que puedan ver los datos.

Pasos a seguir:

1) Asegúrate que el servidor de base de datos se esté ejecutando en el equipo que será el servidor
2) Asegúrate que el equipo servidor tenga una dirección IP, preferentemente FIJA
3) Asegúrate que los equipos en el resto de la red puedan ver a tu equipo en el entorno de red

y el mas importante de todos:

4) DESBLOQUEA EL PUERTO QUE USA EL SERVIDOR DE DATOS EN EL FIREWALL DE WINDOWS, de lo contrario NUNCA te vas a poder conectar.