Thread: PostgreSQL -> ODBC -> MS ACCESS

PostgreSQL -> ODBC -> MS ACCESS

From
Frodo Larik
Date:
Dear Reader,

This is my first post to this list. I just hope this is the right one
:-)

i'm having a problem with the ODBC connection from PostgreSQL to Access,
this is what I'm using:

PostgreSQL: 7.02 (Debian/GNU Linux binary)
MS Access: 97
ODBC: PostgreSQL ODBC driver on Win32 

This is how the table fields looks like this:

=======================
helpdesk=# \d storingen                               Table "storingen"   Attribute     |  Type   |

Modifier                       
------------------+---------+-----------------------------------------------------sid              | integer | not null
default
nextval('storingen_sid_seq'::text)gemeld_by        | text    | not nulldatum            | date    | not nulltijd
    | time    | not nullruimte           | text    | not nullomschrijving     | text    | not nullaktie_door       |
text   | response         | text    | afgehandeld      | text    | afgehandeld_door | text    | 
 
Indices: storingen_idx,        storingen_sid_key
=======================

This is what is happening:

With Access I enter data into the table via an form, this works all ok
when only entering new data. When afterwarts I want to change data in a
already made record OR try to delete the record I get this:

(I see this as a pop-up window in access or on the console of the
postgresql-server running linux)

ERROR:  Unable to identify an operator '=' for types 'xid' and 'int4'       You will have to retype this query using an
explicitcast (#1)
 

Well I don't know how to fix it, Looked through mailinlists, newsgroups
etc.., but I can't find a proper solution.


I would appreciate If anyone has an solution for this problem, or a
suggestion ...

Sincerly,

Frodo Larik


-- 
You plan things that you do not even attempt because of your extreme
caution.


Re: PostgreSQL -> ODBC -> MS ACCESS

From
Jamie Walker
Date:
In article <3A30D821.6729EFE2@diedenoort.nl>, Frodo Larik
<Frodo.Larik@diedenoort.nl> writes
>
>ERROR:  Unable to identify an operator '=' for types 'xid' and 'int4'
>        You will have to retype this query using an explicit cast (#1)
>
>Well I don't know how to fix it, Looked through mailinlists, newsgroups
>etc.., but I can't find a proper solution.
>
>
>I would appreciate If anyone has an solution for this problem, or a
>suggestion ...

---=---
How do I use the row versioning -OR- why do I get a message about no
operator for xid and int4? 
(from the ODBC faq):

Some of the operators are missing in the current release of Postgres so
in order to use row versioning, you must overload the int4eq function
for use with the xid type.  Also, you need to create an operator to
compare xid to int4.  You must do this for each database you want to use
this feature on.  This will probably not be necessary in Postgres 6.4
since it will be added.  Here are the details: 

[WJB: As of 7.0, it has not been added, so you still have to do this.]

create function int4eq(xid,int4)    returns bool    as ''    language 'internal'; 

create operator = (    leftarg=xid,    rightarg=int4,    procedure=int4eq,    commutator='=',    negator='<>',
restrict=eqsel,   join=eqjoinsel 
 
);
---=---

HTH,
-- 
Jamie Walker              "While there are no known bugs in it, it might 
jamie@sagaxis.co.uk        destroy your filesystems, eat your data and
http://www.sagaxis.co.uk/  start World War III. You have been warned."