Re: [gnome-db] append row to data model.



On Thu, 2006-01-26 at 19:55 +1000, Bas Driessen wrote:
On Thu, 2006-01-26 at 10:49 +0100, Vivien Malerba wrote:
2006/1/26, Bas Driessen <bas driessen xobas com>:
[...]
>
>  I agree with the concept to address this issue, but I don't believe this
> code above will work OK. If I append a row with values to the datamodel, it
> returns the line number of the new row and it exits. At that point I also
> want to append it to the database. In the code above, you try to add the row
> to the database if appending to the datamodel fails, but that is the other
> way around if I read it correctly.  I will do a some testing.

Calling the gda_data_model_row_append_values() will (because the
GdaPostgresRecordset object does not implement the GdaDataModelRow's
append_value() virtual function):
* create a new GdaRow object initialized with the correct values
* call the GdaDataModelRow's append_row() virtual function which is
defined in gda-postgres-recordset.c:208, and will do the job.
* return the row number of the new row.

Tell me if it works

If I change the gda_data_model_row_append_values as below, it works OK. I just tested it.

static gint
gda_data_model_row_append_values (GdaDataModel *model, const GList *values, GError **error)
{
        GdaRow *row;

        g_return_val_if_fail (GDA_IS_DATA_MODEL_ROW (model), -1);
        g_return_val_if_fail (CLASS (model)->append_values != NULL, -1);

        row = CLASS (model)->append_values (GDA_DATA_MODEL_ROW (model), values, error);
        if (row)
        {
                CLASS (model)->append_row (GDA_DATA_MODEL_ROW (model), row, error);
                return gda_row_get_number (row);
        }
        else
                return -1;
}

Well ... it works OK in the database, but it is adding the row twice now in the datamodel.

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]