1. ODBC (Re: EuCom)
- Posted by 10963508 at europeonline.com Jul 17, 2002
- 374 views
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 > > > >