Re: [INTERFACES] MSAccess problem deleting rows - Mailing list pgsql-interfaces

From Byron Nikolaidis
Subject Re: [INTERFACES] MSAccess problem deleting rows
Date
Msg-id 374AAD7A.B2611D44@solipsys.com
Whole thread Raw
In response to [INTERFACES] MSAccess problem deleting rows  (leif@danmos.dk)
List pgsql-interfaces
leif@danmos.dk wrote:

>    Hello,
>
>     I have a problem running M$Access on a PostgreSQL database,
> deleting rows from 'raw' Access, i.e. doing an open on a table
> selecting a hole row and then deleting this row. The problem
> arises when the table includes a float:
>
> create table effektivitet
>   (
>     id serial ,
>     value float,
>     primary key (id)
>   );
> create unique index ix_effekt_uniq on effektivitet (id);
>
>     Consider a row with the following values:
> id  |  value
> 5   |  1.1666666666666666666....
>
> Depending on how wide my float column is displayed, M$Access will
> do something like: 'DELETE FROM effektivitet WHERE id = 5 AND
> value = 1.6667;'. Of course there is no such row and M$Access
> displays some (stupid) message like "Others have been changing ...."
> and aborts the operation. This also goes for an update on such a
> table. I can of course manually delete the row by doing a
> 'delete from effektivitet where id = 5;' either in the SQL creator
> within Access or directly on the Linux box.
>
>    This also happens with following piece of VB code:
>
> Set rstEffective = UT32_recordset("Select * From [Effektivitet] Where [Id] = '" & Employee & "' ;")
> With rstEffective
>     .Edit
>     !Value = rstEffective!Value + NewValue
>     .Update
> End With
>
>    How can I make M$Acess use the unique index column for pointing
> out this specific row in stead of generating a where clause containing
> all fields in the table?
>

Just have a unique index on the table and have the "recognize unique index" flag on in the driver
settings.    You could even use the "oid" as the unique index, by turning on that flag in the driver
settings.

If you don't have an actual index, Access should ask you what fields are unique.

***** BUT, I think if I recall you may need to use the "row versioning" feature.  I think Access will
always use all the fields in an update unless you use this.

You can check the faq on this too.

Byron




pgsql-interfaces by date:

Previous
From: Michael Meskes
Date:
Subject: Re: [INTERFACES] ECPG feature
Next
From: Alex Turner
Date:
Subject: Re: [INTERFACES] Retreiving Table info