1. ODBC (Re: EuCom)
I finally got ODBC API right.
I made a little (simple and fast) ODBC library. I wanted to make it simple
as possible cos I don't like complicated things :)
It works very fast, less than a second to get and update 700 records.
It has these global routines:
open_database
close_database
open_recordset
close_recordset
move_first
move_last
move_next
move_prev
get_field_value
set_field_value
I'll use it in my program for a while to debug it a little and then send it
to Rob.
----- Original Message -----
From: "Matthew Lewis" <matthewwalkerlewis at YAHOO.COM>
To: "EUforum" <EUforum at topica.com>
Sent: Tuesday, July 16, 2002 2:23 PM
Subject: RE: EuCom
>
>
> 10963508 at europeonline.com wrote:
> > Yes that was just example, in reality I need to go thru every
> > record in
> > table from first till last and check some fields, and depending on
> > value of
> > those fields set value of other field in same record. That's all I
> > want to
> > do.
>
> Maybe there's a slick SQL way to do it. If you want to email me
> privately (use matthew.w.lewis at saic.com right now, I can't get into my
> yahoo account today), I can maybe help you.
>
> > And I can't do it in Euphoria, ODBC API is so complicated it's
> > driving
> > me nuts :(. Lost whole week trying to figure it out.
> > MFC wrapps ODBC API with 4000 lines file, that gives you idea how
> > complicated is ODBC API.
> > I thought about wrapping MFC dll, but MFC uses C++ classes so how
> > would that
> > work?
>
> Ughhh...
>
> > Your example probably wouldn't speed things much up as you said,
> > but using
> > SQLSetPos with SQL_UPDATE would.
>
> Maybe. If I get a chance, I'll test it to see what the speed difference
> is.
>
> > I have this C++ code (below, it's easier in this case to test it in
> > C++) and
> > it doesn't work, last SQLSetPos() fails. It gets correct data from
> > table,
> > but it's unable to update it with new data. I followed example and
> > instructions from MSDN exactly and it still doesn't work :(.
>
> I don't know what to tell you about that. But I've had similar
> experiences with other tests. :)
>
> > Now I have these options:
> > - Write this whole part in C++ and make dll out of it (I can't use
> > ADO in
> > C++(had some problems), so I would need to use MFC, complications
> > again).
> > - You will fix EuCom and I will use ADO.
> > (BTW Eucom crashed with Windows error on WinXP and other
> > computer which has Win98 installed when I run comtest.exw.)
>
> I tried your simple test on Win2000, and got a crash. Then I included
> eucom before including the ado wrapper, and it didn't crash (although
> there were some errors). I haven't had a chance to thoroughly
> investigate the situation, but here are some tips:
> - Make sure you wrap ado as an ActiveX object (because it is).
> - You'll need to change calls to get_dispid() to register_dispid().
> - If you actually plan to use the result of these calls, you'll need to
> add the VT_ codes for the parameters.
>
> In general, I've found that I only use the top level objects this way.
> Most other objects get passed to you through other calls, and I've found
> it easier to use the invoke_ptr method of calling things. I'll try to
> get a working demo out here shortly.
>
> Matt Lewis
>
>
>
>