Provided by: pxlib-dev_0.6.7-1_amd64 bug

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.

                                                                              PX_INSERT_RECORD(3)