Thread: Query returned unhandled type 16411

Query returned unhandled type 16411

From
"Roger Merritt"
Date:
Hi,



I have tried several installs of postgresql-8.1.3-1 and postgresql-8.1.4-1,
with psqlodbc-08_02_0002.zip and PgOleDb-1.0.0.20.zip.



After each uninstall I delete the entire contents of the C:\Program
Files\PostgreSQL directory.



I am using VB6 SP6b.



My 'Connection' string is:



Provider=PostgreSQL OLE DB Provider;Password=xxxxxx;User ID=postgres;Data
Source=127.0.0.1;Location=spatial;Extended Properties=""



When the following code runs against a table with a geometry column I get
the following error:

Query returned unhandled type 16411



The code generated the string :

select the_geom from singleton limit 1;



If I change the code to be:

select asText(the_geom) from singleton limit 1;

there is no error produced.



If I run the query against any non-spatially enabled table like"

select * from pg_stat_user_tables;

there is no error produced.



I.E. I am sure it relates to the geometry field:



All my other queries work, including inserting geometry although I do use
the ascii version for the geometry.



Regards

Roger Merritt



PS:



Here is the source code from my VB6 project:



  Set PGSConnection = New ADODB.Connection

  With PGSConnection

    Call .Open(GetPostgresConnectionString(txt_Server_IP, txt_Database,
txt_PortNo, txt_LoginName, txt_Password), txt_LoginName, txt_Password)

  End With

  If PGSConnection.State <> 1 Then

    MsgBox "Connection String is: " +
GetPostgresConnectionString(txt_Server_IP, txt_Database, txt_PortNo,
txt_LoginName, txt_Password), vbOKOnly, AppName + " Database did not open?"

    Set PGSConnection = Nothing

    Exit Function

  End If



  Dim PGS_RecSet As ADODB.Recordset, RecCount As Long, Cntr As Long,
PGSField As ADODB.field

  Set PGS_RecSet = New ADODB.Recordset

  With PGS_RecSet

    .ActiveConnection = PGSConnection

    .CursorLocation = adUseClient

    .CursorType = adOpenKeyset

    .LockType = adLockReadOnly

    .Open Source:="select the_geom from " + TableName + " limit 1;"

    '.Open Source:="select * from pg_stat_user_tables;"

  End With

Re: Query returned unhandled type 16411

From
Richard Huxton
Date:
Roger Merritt wrote:
> Hi,
>
> I have tried several installs of postgresql-8.1.3-1 and postgresql-8.1.4-1,
> with psqlodbc-08_02_0002.zip and PgOleDb-1.0.0.20.zip.
>
> After each uninstall I delete the entire contents of the C:\Program
> Files\PostgreSQL directory.
>
> I am using VB6 SP6b.
>
> My 'Connection' string is:
> Provider=PostgreSQL OLE DB Provider;Password=xxxxxx;User ID=postgres;Data
> Source=127.0.0.1;Location=spatial;Extended Properties=""
>
> When the following code runs against a table with a geometry column I get
> the following error:
>
> Query returned unhandled type 16411

It looks like the odbc/ole-db drivers don't know anything about the
geometry types. That's not terribly surprising, since I don't know of
any MS-standard modeling polygons circles etc. as database objects.
Presumably any custom types you design will have the same problem too.

Hmm - it's presumably non-trivial to add type handling for the Windows
drivers without a C compiler and associated tools. Your best bet is to
contact the odbc/ole-db mailing lists and see if they have any bright
ideas. An option to handle unrecognised types as text could make sense.

It might be you can work-around the problem for the moment by accessing
a view that does the cast-to-text for the geometry columns.

--
   Richard Huxton
   Archonet Ltd