sábado, marzo 26, 2011

VFP: De vuelta a casa

Luego de un par de anos trabajando principalmente con .NET en todos sus sabores (ASP.NET, WinForms, Compact Framework), el mes pasado empece un proyecto que me ha llevado de nuevo a utilizar VFP como ambiente principal de desarrollo.

Y la verdad, ha sido como volver a casa. Una casa renovada, eso si, pues el proyecto esta basado en VFP 9 por lo que he podido hacer uso de varias de las nuevas opciones que vinieron en esa excelente versión.

Paradójicamente, cada vez mas me encuentro a mi mismo aplicando en VFP conceptos que aprendí en .NET y específicamente en C#. En lugar de constantes he simulado enumeraciones usando la clase Empty y la función ADDPROPERTY, en lugar de usar una variable global donde almacenar el handle de conexión devuelto por SQLEXEC() me encontré representando la conexión con una clase llamada SqlConnection. Asi que, cuando antes hacia:

LOCAL nConn,nResult
nConn = 0

TRY
nConn = SQLSTRINGCONNECT(cConnStr)
nResult = SQLEXEC(nConn,cSQL,cCursor)

CATCH TO ex

FINALLY
IF nConn <> 0
SQLDISCONNECT(nConn)
ENDIF

ENDTRY

ahora hago:

LOCAL oConn
oConn = CREATEOBJECT("SqlConnection",cConnStr)

TRY
oConn.Open()
oConn.Send(cSQL,cCursor)

CATCH TO ex

FINALLY
IF oConn.State = connectionState.Opened
oConn.Close()
ENDIF

ENDTRY

Cómico verdad? pero lo cierto es que no solamente yo me siento mas cómodo con la 2da versión, supongo que porque me recuerda a lo que he venido usando en los últimos anos, sino que ademas creo que el código final es mas legible y mucho mas reusable y encapsulado también.

Por cierto, si alguien sabe como simular el concepto de Interfaces en VFP, que me avise, porque esa es una de las cosas de .NET que quisiera tener en VFP !!


VFP + SQL: Cuidado al instalar el OLEDB Provider de VFP

Haciendo algunas pruebas con Linked Servers en SQL Server, necesite instalar el OLE DB Provider de VFP 9.0, el cual descargue directamente desde el sitio oficial de Microsoft.

Sin embargo, luego de haber descargado el instalador y haberlo corrido sin problemas, la opción de OLE DB Provider para VFP no aparecía en la lista de Providers de SQL Server (32 bits).

Luego de varios minutos de búsquedas en San Google, encontré un post donde indicaban que por alguna razón el instalador no registraba la librería correctamente, y que la misma debía ser registrada manualmente para que funcionara (aunque para el autor del post esto no soluciono del todo su problema, pero esa es otra historia).

Así que abrí una sesión de comandos y ejecute:

CD \Windows\System32
REGSVR32 vfpoledb.dll

Y efectivamente el problema se soluciono y la opción apareció en la lista de providers de SQL Server. Asi que ya saben; si necesitan instalar el provider de OLE DB de VFP, luego de instalado deben registrarlo manualmente para que funcione.

Y si alguien tiene idea de porque demonios el instalador de M$ no hace el registro automáticamente como uno esperaría, que por favor nos ilumine con su sabiduría.