Thread: VS2008: Simple DataGridView not populating
Context:
Windows Vista x64
PostgreSQL 8.3 (server on localhost)
psql-obdc v8.03.01
Visual Studio 2008 (VS2008)
Problem:
I created a System DSN using the Data Sources (ODBC) administration tool located in <system>\SysWOW64\odbcad32.exe. Note that this is *not* the same one you get from Control Panel ->Administrative Tools (that one is in <system>/system32 and can apparently only manage 64 bit DSNs). Test successful.
In VS2008, add new Data Source picking up one table from the DSN just created. On Data Sources tab, can rightclick the table and "Preview Data"...works fine in the IDE, successfully retrieving data from the database.
Create a trivial Windows Forms Application with a DataGridView [DGV] control. No code-behind...just connect the DGV Data Source to the DSN table. Run the application...no data in DGV.
Do exact same thing except with Northwind DSN (sample SQL Server database, not using PostgreSQL or psql-odbc)...run app...DGV populates just fine.
Analysis:
Enabling mylog in psql-odbc doesn't give much information. If I log the VS2008 IDE interaction with the DSN (e.g., when using "Preview Data")...it all looks good.
If I compile the app and execute it with mylog enabled...nothing in the log file except the intialization from turning on logging. That is, the app never finds the DSN, and in fact gives an error to that effect:
[ERROR] [IM002] [Microsoft] [ODBC Driver Manager] Data source name not found and no default driver specified.
So it appears that this may be an x64 issue...The application can't find the DSN probably because there is no entry for it in HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI...instead the entry is in the redirected key HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI but it's not getting redirected there.
I can't understand why the VS2008 IDE can interact with the DSN just fine, but the simple app can't find it. Perhaps there's a "target platform" I have to specify? Any ideas?
Charles S. Henkel
Henkel Technical Computing, LLC
9917 Laurel Springs Ave
Las Vegas, NV 89134
From: pgsql-odbc-owner@postgresql.org [mailto:pgsql-odbc-owner@postgresql.org] On Behalf Of Charles S. Henkel
Sent: Tuesday, April 01, 2008 3:57 PM
To: pgsql-odbc@postgresql.org
Subject: [ODBC] VS2008: Simple DataGridView not populating
Context:
Windows Vista x64
PostgreSQL 8.3 (server on localhost)
psql-obdc v8.03.01
Visual Studio 2008 (VS2008)
Problem:
I created a System DSN using the Data Sources (ODBC) administration tool located in <system>\SysWOW64\odbcad32.exe. Note that this is *not* the same one you get from Control Panel ->Administrative Tools (that one is in <system>/system32 and can apparently only manage 64 bit DSNs). Test successful.
In VS2008, add new Data Source picking up one table from the DSN just created. On Data Sources tab, can rightclick the table and "Preview Data"...works fine in the IDE, successfully retrieving data from the database.
Create a trivial Windows Forms Application with a DataGridView [DGV] control. No code-behind...just connect the DGV Data Source to the DSN table. Run the application...no data in DGV.
Do exact same thing except with Northwind DSN (sample SQL Server database, not using PostgreSQL or psql-odbc)...run app...DGV populates just fine.
Analysis:
Enabling mylog in psql-odbc doesn't give much information. If I log the VS2008 IDE interaction with the DSN (e.g., when using "Preview Data")...it all looks good.
If I compile the app and execute it with mylog enabled...nothing in the log file except the intialization from turning on logging. That is, the app never finds the DSN, and in fact gives an error to that effect:
[ERROR] [IM002] [Microsoft] [ODBC Driver Manager] Data source name not found and no default driver specified.
So it appears that this may be an x64 issue...The application can't find the DSN probably because there is no entry for it in HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI...instead the entry is in the redirected key HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI but it's not getting redirected there.
I can't understand why the VS2008 IDE can interact with the DSN just fine, but the simple app can't find it. Perhaps there's a "target platform" I have to specify? Any ideas?
Charles S. Henkel
Henkel Technical Computing, LLC
9917 Laurel Springs Ave
Las Vegas, NV 89134
Solution:
I'm sorry this is clearly not a psql-odbc issue. However, I wanted to follow up with a solution in case someone searches and finds my post.
I corrected the problem by setting the Target CPU to "x86".
In VS2008, go to Project->Project Properties...->Compile->Advanced Compile Options...->Target CPU: and set it to "x86". Works fine.
Charles S. Henkel
Henkel Technical Computing, LLC
9917 Laurel Springs Ave
Las Vegas, NV 89134
(702)405-0945 Home
(704)877-1966 Cell