Problems with MFC AddNew

Problems with MFC AddNew

am 23.01.2007 18:18:48 von Ian Klassen

Hello,

I'm having some difficulty with adding new records using the ODBC driver
with MFC. This is only occurring is certain situations...

I created a simple table:

CREATE TABLE project (project_id INT PRIMARY KEY);

Using Visual Studio C++ I created a CRecordset class (CProject) to
exchange data with the project table. I then execute the following code:

CDatabase database;
database.OpenEx(_T("DSN=3DPostgreSQL30"));
CProject project(&database);
project.Open();
project.AddNew();
project.m_project_id =3D 1;
project.Update();

I get an Access Violation on the Update(). The log file shows the
following error:

psqlodbc_3100.log:
conn=3D01104290, query=3D'SELECT "project_id" , "ctid", "project_id" FRO=
M
"public"."project"'
[ fetched 0 rows ]

mylog_3100.log:
[1800-4.186]extend_putdata_info: entering ... self=3D016C5EC4,
parameters_allocated=3D0, num_params=3D1
[1800-4.191]extend_putdata_info: unable to create 1 new pdata from 0 old
pdata

Now I've been able to get the Update() to work in the following situation=
s:

- remove the primary key:
CREATE TABLE project (project_id INT);

- change the int to bigint:
CREATE TABLE project (project_id BIGINT PRIMARY KEY);

- make sure at least one record exists in the table:
CREATE TABLE project (project_id INT PRIMARY KEY);
INSERT INTO project (project_id) VALUES (2);

So what's going on? I would like to use int, but if I have to I can
switch to bigint. Thanks for your help.

Ian


---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly

Re: Problems with MFC AddNew

am 26.01.2007 21:29:11 von Ian Klassen

Hi,

That is an option, but I'm working with a large project with many
AddNew's and I would prefer not having to update them all.

Hiroshi thinks it's a linking problem. He's working on it...

Ian

Oberle, Martin wrote:
> Hello,
>
> I have the same problem. I think "addnew" does not work,
> when the recordset is empty (has no rows).
> I call SQLExecute(insert...) to add a new record.
>
> best regards
>
> Martin
>

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq

Re: Problems with MFC AddNew

am 29.01.2007 16:07:30 von Ian Klassen

Hiroshi,

Yes, I was in debug mode. Using the debug version of the DLL solved the
problem. Thank you for tracking that down. Do you also have a debug
version of the ANSI DLL?

Ian

Hiroshi Inoue wrote:
> Aren't you testing it with Debug mode ?
> I provided the Debug version trial driver
>
> http://www.geocities.jp/inocchichichi/psqlodbc/trial/psqlodb c35wd.zip .
> Please try it.
>
> The differece among the 3 drivers are
> 1. The existent drivers Release mode compiled with the option /MT.
> 2. The trial driver Release mode compiled with the option /MD.
> 3. The trial debug driver Debug mode compiled with the option /MDd


---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster