Consumir en NET datos VFP con OLE DB [1]

Enviado por : amby en 26 Jul, 2005 - 04:02
GEN [2]
(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. En este caso utilizamos OLE DB.

Consumir en .NET a datos VFP con OLE DB

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 Class

Si 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 DB


por 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.

Enlaces
  [1] http://www.portalfox.com/index.php?name=News&file=article&sid=1875
  [2] http://www.portalfox.com/index.php?name=News&catid=&topic=10
  [3] http://www.amby.net
  [4] http://www.portalfox.com/user.php
  [5] http://www.portalfox.com/user.php?op=userinfo&uname=frankymaza
  [6] http://www.portalfox.com/index.php?module=Messages&func=compose&uname=frankymaza