Archive for the ‘VFPServer’ Category

VFPServer Open Source

16 septiembre, 2009

Para los interesados, aquí están los archivos fuentes del VFPServer. La clave para expandir los archivos es: 1234.

Excepto por la licencia de la librería de comunicaciones, todo el código fuente del VFPServer se encuenta aquí. en una próxima entrada mostraré las soluciones a dos pequeños problemitas que encontré, especialmente el de la trístemente famosa variable que no regresa ningún valor.

Hasta pronto, y que lo disfruten.

VFPServer Open Source

Israel antisemita…¡Patético caso!

30 diciembre, 2008

Esta vaina sólo se ve en Venezuela. Con razón les dicen “chaburros”.

¡Patético caso!

¡Patético caso!

Open Source

13 diciembre, 2008

Ya fue liberado el código del VFPServer. Un pequeño vistazo por encima, y se ven algunas cosas interesantes.

En enero, cuando esté mas desocupado, a meterle mano.

¡NO mas farc!

4 febrero, 2008

No mas farc

Respuesta a Horacio

13 diciembre, 2007

Preguntaba Horacio, desde Argentina, sobre cómo hacer una consulta de la información de ciertos clientes que se seleccionan desde un grid.

Aunque no es un caso exactamente igual al descrito por Horacio, creo que es una buena aproximación a la respuesta que buscaba Horacio.

Tengo esta consulta en un archivo de texto (sql_DocsCobrar003.sql), la cual me trae, para un cierto cliente seleccionado, algunos tipos de documentos (curBase.doc_presup, curBase.doc_ordenc y curBase.doc_pendie):

SELECT ccVentac.doc_codigo      ,;
       empDocumentos.doc_nombre ,;
       ccVentac.doc_numero      ,;
       ccVentac.doc_emisio      ,;
       ccVentac.doc_totgen       ;
  FROM ccVentac,empDocumentos    ;
 WHERE ccVentac.cli_rif=#1       ;
   AND ccVentac.doc_codigo$#2    ;
   AND EMPTY(ccVentac.doc_cancel);
   AND EMPTY(ccVentac.doc_anula) ;
   AND empDocumentos.doc_codigo=ccVentac.doc_codigo;
   AND empDocumentos.doc_modulo='CXC';
 ORDER BY 1,3

Entonces, el código del evento BUSCAR de mi formulario, queda de esta manera:

lSelect=FILETOSTR(gRutaSQL+'sql_DocsCobrar003.sql')
lSelect=oFun.ParaToStr(lSelect,curBase.cli_rif,lDocPresup+lDocOrden+lDocPend)
lCursor="curPresupuesto"
oVFPSclient.SelectToCursor(lSelect,lCursor)
IF !EMPTY(doc_codigo)
    DO FORM buscaPresupuestos TO lOk
    IF lOk
        ***
        ***
        ***
    ENDIF
ENDIF

En el caso de la consulta de Horacio, debería encadenar todas las combinaciones CLIENTES+DOCUMENTOS seleccionadas y, entonces, realizar la sustitución con el evento oFun.ParaToStr.

Variables dentro de los SelectToXX

12 diciembre, 2007

Hay momento en los cuales necesitamos realizar consultas SQL al VFPServer utilizando como filtro algunas variables. Por supuesto, esto nos genera un cierto problemita, ya que las consultas se envían al servidor como cadenas de textos.

Afortunadamente, tenemos el evento ParaToStr del objeto oFun. Este evento nos permite incluir fácilmente los valores deseados dentro de las cadenas de textos que definen las consultas.

Por ejemplo, si necesitamos consultar la información de un cliente X, podemos tener la siguiente consulta en un archivo de texto:

SELECT ccClient.cli_rif   ,;
	ccClient.cli_nit   ,;
	ccClient.cli_nombre,;
	ccClient.cli_dir   ,;
	ccClient.cli_email ,;
	ccClient.cli_criter,;
	ccClient.cli_dcredi,;
	ccClient.cli_limite,;
	ccClient.cli_precio,;
	ccClient.cli_iva   ,;
	ccClient.cli_descto,;
	ccClient.ven_codigo,;
	ccVendedor.ven_nombre ;
  FROM ccClient,ccVendedor;
 WHERE ccClient.cli_rif=#1;
   AND ccVendedor.ven_codigo=ccClient.ven_codigo

Entonces, en nuestro evento de búsqueda, podemos tener el siguiente código:

lSelect=FILETOSTR('\solprotec\sql\sql_Clientes002.sql')
lSelect=oFun.ParaToStr(lSelect,THIS.Value)
lCursor1="curClientes"
=oVFPSclient.SelectToCursor(lSelect,lCursor1)

Con este evento ParaToStr, podemos hacer hasta 50 sustituciones dentro de una misma cadena de texto.

Luego de las vacaciones…mas VFPServer!

31 agosto, 2007

vfpserver.jpg

Saludos Democráticos para todos, desde lo que queda de Venezuela!

No estabamos muertos, sólo de vacaciones. Ahora que ya recargamos las baterías, a ponernos al día. Estoy por subir un ejemplo mas grande para los nuevos usuarios (claro que los hay, en varios lugares de este lado del gran charco) del VFPServer.

Ya estoy corriendo una versión BETA 1 del sistema. Los problemas que he experimentado con las conexiones a la base de datos se deben, casi exclusivamente, al router inalámbrico de la red del cliente. El VFPServer se ha comportado como lo espera: de maravillas. He trabajado con el sistema desde mi casa sin ningún tipo de problemas.

El lunes tuve un pequeño desastre con la base de datos. Se sobreecribieron varias tablas con un respaldo viejo. Afortunadamente, el VFPServer lleba un control de las transacciones efectuadas y pude recomponer las tablas recreando algunas de estas transacciones. La cuestión se resolvió mas fácil de lo que me parecía a primera vista. Otra ventaja de utilizar el VFPServer. ¡Me salvé de tener que pasar la facturación de un mes y medio!

El server está corriendo en una máquina nueva, sobre Windows Vista.

VFPServer, ¿el retorno del Jedi?

26 mayo, 2007

Escrito por Fermín Fernández (Tona, España), en el foro de VFPServer:

Soy programador independiente. Mis clientes no suelen tener mas de 15-20 puestos de trabajo, pero algunos manejan cantidades considerables de datos. Hace ya tiempo que barajaba la posibilidad de cambiarme a Cliente servidor,
pero no quería enredarme con paquetes tan potentes como SQL Server, MySQL y otros. Además, tendría que aprender nuevos lenguajes de programación, pelearme con nuevos errores, etc. Lei algo sobre VFPServer pero el hecho de que fuera mas lento en búsquedas de menos de 100 registros me hizo dejarlo de lado. Me plantee hacer un mix, acceso directo para pocos registros, acceso vía winsock e IP para consultas o trabajos. Y asi comencé el proyecto microServer, a partir de programas de chat vía Winsock. Por falta de tiempo, por estar yo solo, por historias familiares, el proyecto sigue a medias.
Y ahora he vuelto a mirar VFPServer con otros ojos. El tema de la seguridad se ha hecho mas importante, no es cuestión de que un operario de taller te pueda borrar alguna tabla. Además, tengo una aplicación a entregar a final de año con la central en Barcelona, y 3 almacenes en diferentes poblaciones de España accediendo vía VPN, para los que hay que minimizar el trafico de datos.

Por eso, ahora estoy chequeando VFPServer, con la intención de que para Septiembre pueda haber migrado una aplicación de producción que ya funciona, pero cuyos datos están creciendo mas de lo previsto. Estoy dispuesto a apostar fuerte, a pasar mis aplicaciones a VFPServer y a vender la idea a los 4 o 5 programadores que conozco en la provincia. Pero al leer los posts parece que, hoy por hoy, tiene mas fé en el producto el amigo Mijhail que el TEAM de desarrollo. Y eso es letal para el futuro de las ventas. Sin un entusiasmo claro, sin un compromiso decidido del equipo en el futuro del proyecto, la gente no se arriesgara. Si no se arriesga, no compra y si no compra, se acabó.

Entiendo que todos comenzamos proyectos con mucha ilusión y tendemos a crearnos unas expectativas ideales. Luego la realidad nos muestra nuestros limites. Puede ser que no sea el momento, que los medios no sean los adecuados, que no sea etc. Sin embargo, yo creo que es una buena idea, que era un buen producto, que tiene un mercado, no para hacerse rico pero si importante. Los productos buenos siempre se abren paso.

También entiendo que hasta que este producto les dé para vivir, tienen que repartir su tiempo entre él y sus trabajos actuales de programación. Para sacarlo adelante, les propongo crear un pequeño circulo de colaboradores, gente que podríamos ayudarles a hacer la documentación, a chequearles el producto, a crear aplicaciones de demostración, a colaborar en partes del código, etc. Como reza el dicho, la unión hace la fuerza.

Seria una unión de intereses, entre unos que tienen una idea y un producto valido y necesitan mercado, y otros que necesitamos un servidor sencillo para nuestras aplicaciones, basado en lo que ya sabemos y nos es familiar.

Piensenlo, y digannos algo. Para mi, el tiempo corre y he de entregar una aplicación en Septiembre. Necesito decidir ya si será con VFPServer (como me gustaría) o tendré que buscarme otra cosa.

Salu2

PD: considero que el hecho de que MS haya dejado VFP es una bendición. Nunca le dedicó mucho entusiasmo. Lo que para MS era un mercado secundario, para otras empresas mas pequeñas y mas dinámicas, puede ser su producto estrella. Además, nadie podía/quería competir contra el nombre de MS. En cambio, ahora ya he comenzado a ver ofertas en foros de VFP de lenguajes compatibles, hechos por empresas que ven la oportunidad que se abre. Y dentro de esta ola que viene, la idea detrás de VFPServer tendrá un futuro interesante. Si no sale adelante aquí, saldrá adelante en otra parte.

Fermín, apoyo en un 100% lo que dices en este post. Y me comprometo a ampliar y mejorar la documentación del VFPServer. Tal vez no sea un aporte muy grande, pero por algún lado tenemos que comenzar.

Debo confesar que el principal motivo por que que trato de ayudar a los nuevos usuarios que se acercan al VFPServer, es un poco de “egoísmo”. No me gustaría que este producto desapareciera, porque es muy fácil de usar; quiero que mis
aplicaciones tengan seguridad en los datos y que le pueda ofrecer a mis cliente la posibilidad de correr sus aplicaciones desde cualquier lugar, utilizando una conexión a internet. Y todo esto sin tener que estar aprendiendo nuevos lenguajes de programación; sin tener que estar averiguándo como funcionan otros manejadores de bases de datos. En pocas palabras, producir mas y trabajar menos, sin muchas complicaciones. Todo esto lo ofrece el VFPServer.

Una muestra de la facilidad que provee el VFPServer es una aplicación que desarrolló el amigo Simón Villagran. Un Sistema de facturación que está instalado en una ferretería de la ciudad de La Paz, en México. Creo que son 2 o 3 sucursales, conectadas al servidor vía internet. Y todo lo hizo siendo un programador novato y autodidacta. Ya comenté en un post anterior que me pude conectar desde aquí (Puerto Ordaz, Venezuela) al servidor de la ferretería y la conexión es muy rápida, en verdad que no se nota la diferencia con respecta de una conexión local.

Para terminar solo me queda dar unas palabras de aliento a los panas del TEAM con dos frases que usamos bastante aquí en Venezuela: Pa’trás ni pa’ coger impulso! y Pa’lante es pa’llá!

Saludos para todos!

IP dinámica/IP fija

18 mayo, 2007

Tenemos el siguiente problema: necesitamos una IP fija para poder utilizar el VFPServer, pero nuestro servidor tiene una IP dinámica provista por un servidor DHCP .

1.- Instala un ruteador. Este va manejar el tráfico hacia internet y podrás tener una IP fija en tu servidor. Según me dijo el pana Simón Villagran (La Paz, BCS. México), no es muy dificil configurar el ruteador (hay dos maneras de configurarlo. DZM es la más fácil). Y si necesitas tener accseso al VFPServer vía internet, puedes utilizar el servicio gratuito de NO-IP
(http://www.no-ip.com)

2.- Si no deseas instalar un ruteador, puedes tener dos tarjetas de red en el servidor, asignándole una IP fija a una de ellas.

3.- Puedes utilizar directamente el servicio NO-IP, pero todos los usuarios necesitarán estar conectado a internet siempre.

Anoche me pude conectar al VFPServer que instaló Simón en una ferretería en la ciudad de La Paz, en México, desde Puerto Ordaz, Venezuela (mas de 5mil kilómetros!!!) y la conexión fue perfecta. La velocidad de respuesta es muy rápida, parece una conexión local.

¿Cómo obtengo la ruta de mi instalación de VFPServer?

8 mayo, 2007

Si por alguna razón necesito conocer la ruta de mi instalación de VFPServer simplemente ejecuto el comando SYS(2004) desde un procedimiento de mi APPLICATION.EXE. Este me va a señalar la ruta desde donde ejecuté mi instancia de VFP, que en este caso en particular, será la de mi instalación de VFPServer:

lRuta=SYS(2004)