4 de abril de 2006

OLEDB/ADO, el ODBC de VFP y los registros eliminados

El driver ODBC y el OLEDB Provider se comportan diferente en cuestión de los registros borrados, veremos la forma de trabajar en ambos...

El ODBC de VFP tiene un parámetro dentro de su cadena de conexión, la cuál permite establecer la configuración de SET DELETE para la sesión:

Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:myvfpdb.dbc;Exclusive=No;NULL=NO;
Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO"
Puedes cambiar a YES o NO según sean su requerimientos, para el OLDB Provider de VFP no existe tal parámetro, por lo que tendríamos que hacerlo "manualmente":

Si se desea hacer desde VFP...
TEXT TO lcConnString NOSHOW TEXTMERGE PRETEXT 8
Provider=vfpoledb.1;
Data Source=<>;Collating Sequence=machine
ENDTEXT
*** Creamos la conexión ADO con la cadena de conexión del OLEDB Provider de VFP.
loConnection = CREATEOBJECT("ADODB.Connection")
loConnection.Open(lcConnString)

*** Creamos el comando ADO
loCommand = CREATEOBJECT("ADODB.Command")
*** Establecemos el comando a ejecutar
loCommand.CommandText = "SET DELETED ON"
*** Establecemos la conexión con la que se ejecutará el comando
loCommand.ActiveConnection = loConnection
*** Ejecutamos
loCommand.Execute()

Esto aplica para cualquier lenguaje de programación que se esté utilizando, por ejemplo, este sería el código para el Microsoft C# (uno de los lenguajes soportados por Microsoft .NET Framework):

OleDbConnection loConn = new OleDbConnection("Provider=vfpoledb.1;" + 
             @&amp;quot;Data Source=D:SamplesDatatestdata.dbc;" + 
              "Exclusive=false;Nulls=false");
try {
            loConn.Open();
            OleDbCommand locmd =loConn.CreateCommand();
            locmd.CommandText = "set deleted on";
            locmd.ExecuteNonQuery();
         }
         catch(Exception ex) 
         {
            this.lblErrorMsg.Text = ex.Message;
            return false;
         }
Espero les sea de utilidad.

Espartaco Palma Martínez

No hay comentarios. :

Publicar un comentario

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.