From: Alistair Leslie-Hughes leslie_alistair@hotmail.com
The current conversion is converting ODBC 2 to 3 which is backwards. --- dlls/odbc32/proxyodbc.c | 56 ++++++++++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 12 deletions(-)
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c index 26f38d63b63..b0a7bf498e6 100644 --- a/dlls/odbc32/proxyodbc.c +++ b/dlls/odbc32/proxyodbc.c @@ -989,16 +989,32 @@ static SQLRETURN col_attribute_win32_a( struct statement *stmt, SQLUSMALLINT col
switch (field_id) { - case SQL_COLUMN_COUNT: - field_id = SQL_DESC_COUNT; + case SQL_DESC_COUNT: + field_id = SQL_COLUMN_COUNT; break;
- case SQL_COLUMN_NAME: - field_id = SQL_DESC_NAME; + case SQL_DESC_TYPE: + field_id = SQL_COLUMN_TYPE; break;
- case SQL_COLUMN_NULLABLE: - field_id = SQL_DESC_NULLABLE; + case SQL_DESC_LENGTH: + field_id = SQL_COLUMN_LENGTH; + break; + + case SQL_DESC_PRECISION: + field_id = SQL_COLUMN_PRECISION; + break; + + case SQL_DESC_SCALE: + field_id = SQL_COLUMN_SCALE; + break; + + case SQL_DESC_NULLABLE: + field_id = SQL_COLUMN_NULLABLE; + break; + + case SQL_DESC_NAME: + field_id = SQL_COLUMN_NAME; break;
case SQL_COLUMN_TYPE: @@ -6175,16 +6191,32 @@ static SQLRETURN col_attribute_win32_w( struct statement *stmt, SQLUSMALLINT col
switch (field_id) { - case SQL_COLUMN_COUNT: - field_id = SQL_DESC_COUNT; + case SQL_DESC_COUNT: + field_id = SQL_COLUMN_COUNT; break;
- case SQL_COLUMN_NAME: - field_id = SQL_DESC_NAME; + case SQL_DESC_TYPE: + field_id = SQL_COLUMN_TYPE; break;
- case SQL_COLUMN_NULLABLE: - field_id = SQL_DESC_NULLABLE; + case SQL_DESC_LENGTH: + field_id = SQL_COLUMN_LENGTH; + break; + + case SQL_DESC_PRECISION: + field_id = SQL_COLUMN_PRECISION; + break; + + case SQL_DESC_SCALE: + field_id = SQL_COLUMN_SCALE; + break; + + case SQL_DESC_NULLABLE: + field_id = SQL_COLUMN_NULLABLE; + break; + + case SQL_DESC_NAME: + field_id = SQL_COLUMN_NAME; break;
case SQL_COLUMN_TYPE: