Thread: Incorrect import of timestamp fields in MS Access with 7.2.x
Hi, After switching from PostgreSQL 7.1.3 to 7.2, I'm having trouble with timestamp fields in ODBC-linked tables in MS Access (both '97 and XP). The problem is that MS Access somehow thinks these are 'Text' fields instead of 'Date/Time' fields. It worked fine when using the 7.1.3 server, but not with 7.2 and 7.2.1. I tried different ODBC driver versions, but 7.1.0007, 7.1.0010 and 7.2.0001 all show the same problem. As this seems to be an ODBC driver related problem, I hope this question is appropriate on this mailing list. If not, feel free to direct me to another one. Edwin
Edwin Woudt wrote: > > Hi, > > After switching from PostgreSQL 7.1.3 to 7.2, I'm having trouble with > timestamp fields in ODBC-linked tables in MS Access (both '97 and XP). > > The problem is that MS Access somehow thinks these are 'Text' fields > instead of 'Date/Time' fields. It worked fine when using the 7.1.3 server, > but not with 7.2 and 7.2.1. What kind of problem do you have concretely ? regards, Hiroshi Inoue
Hiroshi Inoue <Inoue@tpf.co.jp> wrote: >> After switching from PostgreSQL 7.1.3 to 7.2, I'm having trouble with >> timestamp fields in ODBC-linked tables in MS Access (both '97 and XP). >> >> The problem is that MS Access somehow thinks these are 'Text' fields >> instead of 'Date/Time' fields. It worked fine when using the 7.1.3 >> server, but not with 7.2 and 7.2.1. > > What kind of problem do you have concretely ? Apologies if I was not clear. I want MS Access to recognize the timestamp field as a Date/Time field and not as a Text field. This has some advantages as access can then handle formatting and input itself. I did some more debugging and found in de psqlodbc log file that in 7.1.3 the field has type 1184 (PG_TYPE_DATETIME), while in 7.2.x the field has type 1114 (PG_TYPE_TIMESTAMP_NO_TMZONE). This led me to the untested patch below against pgtypes.c version 1.46. I'd be willing to test this myself, if only I knew how to build the driver. Edwin --- pgtypes.c.orig Tue Apr 16 13:06:36 2002 +++ pgtypes.c Tue Apr 16 13:08:25 2002 @@ -311,10 +311,11 @@ #endif /* ODBCVER */ return SQL_TIME; case PG_TYPE_ABSTIME: case PG_TYPE_DATETIME: case PG_TYPE_TIMESTAMP: + case PG_TYPE_TIMESTAMP_NO_TMZONE: #if (ODBCVER >= 0x0300) if (EN_is_odbc3(env)) return SQL_TYPE_TIMESTAMP; #endif /* ODBCVER */ return SQL_TIMESTAMP;
Edwin Woudt wrote: > > Hiroshi Inoue <Inoue@tpf.co.jp> wrote: > > >> After switching from PostgreSQL 7.1.3 to 7.2, I'm having trouble with > >> timestamp fields in ODBC-linked tables in MS Access (both '97 and XP). > >> > >> The problem is that MS Access somehow thinks these are 'Text' fields > >> instead of 'Date/Time' fields. It worked fine when using the 7.1.3 > >> server, but not with 7.2 and 7.2.1. > > > > What kind of problem do you have concretely ? > > Apologies if I was not clear. > > I want MS Access to recognize the timestamp field as a Date/Time field and > not as a Text field. This has some advantages as access can then handle > formatting and input itself. > > I did some more debugging and found in de psqlodbc log file that in 7.1.3 > the field has type 1184 (PG_TYPE_DATETIME), while in 7.2.x the field has > type 1114 (PG_TYPE_TIMESTAMP_NO_TMZONE). Oh I see. I would fix it. > --- pgtypes.c.orig Tue Apr 16 13:06:36 2002 > +++ pgtypes.c Tue Apr 16 13:08:25 2002 > @@ -311,10 +311,11 @@ > #endif /* ODBCVER */ > return SQL_TIME; > case PG_TYPE_ABSTIME: > case PG_TYPE_DATETIME: > case PG_TYPE_TIMESTAMP: > + case PG_TYPE_TIMESTAMP_NO_TMZONE: > #if (ODBCVER >= 0x0300) > if (EN_is_odbc3(env)) > return SQL_TYPE_TIMESTAMP; > #endif /* ODBCVER */ > return SQL_TIMESTAMP; I'm suspicious if the above is sufficeient. regards, Hiroshi Inoue http://w2422.nsk.ne.jp/~inoue/
I wrote: > > I did some more debugging and found in de psqlodbc log file that in 7.1.3 > > the field has type 1184 (PG_TYPE_DATETIME), while in 7.2.x the field has > > type 1114 (PG_TYPE_TIMESTAMP_NO_TMZONE). > > Oh I see. I would fix it. Try the snapshot dll at http://w2422.nsk.ne.jp/~inoue/. regards, Hiroshi Inoue http://w2422.nsk.ne.jp/~inoue/
>>> I did some more debugging and found in de psqlodbc log file that in >>> 7.1.3 the field has type 1184 (PG_TYPE_DATETIME), while in 7.2.x the >>> field has type 1114 (PG_TYPE_TIMESTAMP_NO_TMZONE). >> >> Oh I see. I would fix it. > > Try the snapshot dll at http://w2422.nsk.ne.jp/~inoue/. Thanks. That fixed the problem. Edwin