_DBAppend( ) (Rutina de biblioteca API)

Intenta anexar un nuevo registro a la tabla abierta en el área especificada por el parámetro workarea.

int _DBAppend(int workarea, int carryflag)
int workarea;               /* Work area number. */
int carryflag;               /* SET CARRY setting. */

Observaciones

El área de trabajo actual se representa con – 1. _DBAppend( ) devuelve 0 si la rutina acaba con éxito. Si la rutina falla, _DBAppend( ) devuelve un entero negativo cuyo valor absoluto es el número de error de Visual FoxPro.

Valores para carryflag

Valor Efecto
1 Copia la información del registro previo en el nuevo registro.
0 Crea un nuevo registro en blanco.
– 1 Utiliza la configuración de SET CARRY para determinar si la información del registro anterior se copia en el nuevo registro.

_DBAppend( ) realiza automáticamente cualquier bloqueo que sea necesario. Si no puede bloquear el encabezado del archivo, _DBAppend( ) falla y devuelve un número negativo cuyo valor absoluto corresponde a un número de error de Visual FoxPro.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo utiliza _DBAppend( ) para anexar un registro a una tabla abierta en el área de trabajo actual.

Código Visual FoxPro

SET LIBRARY TO DBAPPEND
DO CreateTest

SET CARRY ON
= DBAPPEND(-1)   && SET CARRY is ON, so carry
SET CARRY OFF
= DBAPPEND(1)   && carry regardless of SET CARRY
= DBAPPEND(-1)   && SET CARRY is OFF, so no carry

PROCEDURE CreateTest
   CREATE TABLE test (ABC C(20))
   APPEND BLANK
   REPLACE ABC WITH "Golly month of"
   APPEND BLANK
   REPLACE ABC WITH "A twelfth of"
   APPEND BLANK
   REPLACE ABC WITH "Hello, world"
   APPEND BLANK
   REPLACE ABC WITH "When in the"
   GO TOP
RETURN

Código C

#include <pro_ext.h>

FAR Example(ParamBlk FAR *parm)
{
   int RetCode;
   if ((RetCode = _DBAppend(-1, (int) parm->p[0].val.ev_long)) < 0) {
      _Error(-RetCode);
   }
}

FoxInfo myFoxInfo[] = {
   {"DBAPPEND", (FPFI) Example, 1, "I"},
};
FoxTable _FoxTable = {
   (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBLock( ) (Rutina de biblioteca API) | _DBUnlock( ) (Rutina de biblioteca API) | Anexar datos a una tabla existente | SET CARRY (Comando) | APPEND (Comando)