
Por Amby
(Ejemplo 1 del artículo "Interoperabilidad VFP y .NET")
Este escrito tiene como objetivo servir de guía paso a paso sobre cómo realizar la conexión entre estas dos herramientas para desarrollo de aplicaciones que son: Visual FoxPro y VS.NET
Desde el VS.NET, creamos una Aplicación Web.
Desde el diseñador, activamos Herramientas - Datos y arrastramos OleDbConnection
![]()
En la ventana Propiedades – Connection String - Agregar conexión

Seleccionamos OLE DB Provider for VFP, luego seleccionamos la DBC de VFP que vamos a utilizar y en nuestro caso empleamos la Base de datos NorthWind que viene incorporada desde la versión 8.0.

Verificamos la conexión y es exitosa.

Nos muestra una pregunta para saber si queremos incluir contraseña, le decimos que si, aunque en una aplicación real no es la mejor solución; pero a efectos de Demo está bien.
Como vemos en la ventana propiedades ahora aparece toda la cadena de conexión

Ya tenemos la conexión, ahora necesitamos el Adaptador de datos. Parra ello, arrastramos el OleDbDataAdapter y muestra un Asistente para configuración de Adaptador de datos


Podemos escoger la misma conexión que tenemos o escoger otra. Elegimos el modo de acceso


En opciones avanzadas desmarcamos la primera opción y se desmarca también la segunda. Esto lo hacemos en caso de no querer crear los procedimientos almacenados. En este ejemplo Demo, es así.


Llamamos al Generador de consultas o escribimos directamente la sentencia SELECT SQL.



![]()
Pues ya tenemos el DataAdapter, ahora sólo nos queda crear el DataSet. Para crear el Dataset en la ventana Propiedades - Generar conjunto de datos


Ya tenemos todo el acceso a datos preparado.
Para probar su correcto funcionamiento, arrastramos un DataGrid (Grid en VFP). Modificamos dos propiedades del Datagrid para vincularlo a los datos
DataSource (como el RowSource) se presenta un cuadro desplegable y seleccionamos DataSet11 y en DataMember seleccionamos el nombre de la tabla – Categories.
La idea es que el DataGrid se llene automáticamente al cargar el WebForm, por eso hemos incluido el código en el evento Page_Load, este código se muestra en negrita.
En la ventana código queda escrito de la siguiente manera, nótese el texto inclinado que muestra como se ha establecido la conexión con VFP.
Public Class WebForm1
Inherits System.Web.UI.Page
#Region " Código generado por el Diseñador de Web Forms "
'El Diseñador de Web Forms requiere esta llamada.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.OleDbConnection1 = New System.Data.OleDb.OleDbConnection
Me.OleDbDataAdapter1 = New System.Data.OleDb.OleDbDataAdapter
Me.OleDbSelectCommand1 = New System.Data.OleDb.OleDbCommand
Me.DataSet11 = New WebApplication3.DataSet1
CType(Me.DataSet11, System.ComponentModel.ISupportInitialize).BeginInit()
'
'OleDbConnection1
'
Me.OleDbConnection1.ConnectionString = _
"User ID=;DSN=;Collating Sequence=MACHINE;Data Source=""C:\ARCHIVOS DE PROGRAMA\MIC" & _
"ROSOFT VISUAL FOXPRO 9\SAMPLES\NORTHWIND\NORTHWIND.DBC"";Password=;Provider=""VFPO" & _
"LEDB.1"";Cache Authentication=False;Mask Password=False;Mode=Share Deny None;Exte" & _
"nded Properties=;Encrypt Password=False"
'
'OleDbDataAdapter1
'
Me.OleDbDataAdapter1.SelectCommand = Me.OleDbSelectCommand1
Me.OleDbDataAdapter1.TableMappings.AddRange(New System.Data.Common.DataTableMapping() _
{New System.Data.Common.DataTableMapping("Table", "Categories", _
New System.Data.Common.DataColumnMapping() _
{New System.Data.Common.DataColumnMapping("categoryname", "categoryname"), _
New System.Data.Common.DataColumnMapping("description", "description"), _
New System.Data.Common.DataColumnMapping("categoryid", "categoryid")})})
'
'OleDbSelectCommand1
'
Me.OleDbSelectCommand1.CommandText = "SELECT categoryname, description, categoryid FROM Categories"
Me.OleDbSelectCommand1.Connection = Me.OleDbConnection1
'
'DataSet11
'
Me.DataSet11.DataSetName = "DataSet1"
Me.DataSet11.Locale = New System.Globalization.CultureInfo("es-ES")
CType(Me.DataSet11, System.ComponentModel.ISupportInitialize).EndInit()
End Sub
Protected WithEvents OleDbConnection1 As System.Data.OleDb.OleDbConnection
Protected WithEvents OleDbDataAdapter1 As System.Data.OleDb.OleDbDataAdapter
Protected WithEvents OleDbSelectCommand1 As System.Data.OleDb.OleDbCommand
Protected WithEvents DataSet11 As WebApplication3.DataSet1
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
'NOTA: el Diseñador de Web Forms necesita la siguiente declaración del marcador de posición.
'No se debe eliminar o mover.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Init
'CODEGEN: el Diseñador de Web Forms requiere esta llamada de método
'No la modifique con el editor de código.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
OleDbDataAdapter1.Fill(DataSet11)
DataGrid1.DataBind()
End Sub
End ClassSi deseamos definir la cantidad de líneas que queremos mostrar en el DataGrid, debajo de la ventana propiedades vemos Generador de Propiedades. Me coloco en la ficha Paginación y marco la casilla Permitir paginación e indicamos la cantidad de líneas por página.

Ejecutamos la solución y obtenemos el siguiente resultado:

Espero haya resultado de utilidad,
Saludos,
Ana María Bisbé York
www.amby.net [3]
| Consumir en NET datos VFP con OLE DB | Entrar/Crear una cuenta [4] | 1 Comentario | |
|
| |
| Los comentarios son propiedad de sus respectivos autores. No somos responsables de su contenido. |
Re: Consumir en NET datos VFP con OLE DBpor frankymaza en 26 Jul, 2005 - 01:28 (Información del usuario [5] | Enviar un mensaje [6] |
| Excelente articulo, una pregunta he querido hacer lo mismo con tablas libres pero tengo errores, solo se pueden utilizar archivos de labse de datos de vfp DBC y no tablas libreas, gracias por tu ayuda. |