Man Linux: Main Page and Category List

NAME

       PX_insert_record — Inserts a new record in the Paradox file

SYNOPSIS

       #include <paradox.h>

       int PX_insert_record(pxdoc_t *pxdoc, pxval_t **dataptr)

DESCRIPTION

       Inserts a new record stored in the array dataptr         into a Paradox
       file. The position of the record will be  determined  by  the  function
       itself, starting at the beginning of the file and searching towards the
       end for a free slot. A free slot can be the result of former  calls  of
       PX_delete_record(3)  or  not completely filled data blocks in the input
       file. If there is no free slot within the file, then a new record  will
       be added at the end.

       Blobs  will  be  automatically  written  if  a  blob  file was set with
       PX_set_blob_file(3).

       The memory for  dataptr  and  the  field  values  can  be  freed  after
       PX_insert_record has been called.

       Each  single  element in the array of pointers to pxval_t can be easily
       created    with    MAKE_PXVAL(pxdoc_t     *pxdoc,     pxval_t     *val)
                      and  setting the actual value afterwards. A quite common
       way to build up the record is the following:

       dataptr = (pxval_t **) malloc(PX_get_num_fields(pxdoc)*sizeof(pxval_t *));
       MAKE_PXVAL(pxdoc, dataptr[0]);
       dataptr[0]->type = pxfLong;
       dataptr[0]->value.lval = 45;
       dataptr[1]->type = pxfAlpha;
       dataptr[1]->value.str.val = "test";
       dataptr[1]->value.str.len = 4;
       PX_insert_record(pxdoc, dataptr);
       free(dataptr[0]);
       free(dataptr[1]);
       free(dataptr);

       There is currently no need to set the type, though it is recommended.

       The  field  types  pxfMemoBLOb  and  pxfFmtMemoBLOb  are  treated  like
       strings.

       Fields of type pxfAutoInc are automatically incremented if its value is
       set to NULL. In such a case the value is taken from the header  of  the
       database. You should not have more than one field of type pxfAutoInc in
       your database, otherwise the automatic incrementation will not work.

RETURN VALUE

       Returns the record number on success or -1 on failure.  The  number  of
       the first record is 0.

SEE ALSO

       PX_retrieve_record(3),     PX_delete_record(3),     PX_update_record(3)

AUTHOR

       This manual page was written by Uwe Steinmann uwe@steinmann.cx.