Re: AW: [OLEDB_DEV] OLE DB Consumer Templates

Kim Gräsman <[email protected]> Thu, 9 Jan 2003 19:18:34 +0100
Newsgroups gmane.comp.windows.devel.oledb.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format.

------_=_NextPart_001_01C2B80B.85D1765E
Content-Type: text/plain;
        charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Erik,
=20
Does this [1] help? The AOTBLOB sample referenced in the article doesn't =
seem to be available at MSDN anymore...
=20
Kim
=20
[1] http://www.codeproject.com/wtl/Oledb2.asp

-----Original Message-----
From: Erik Valdes [mailto:[email protected]]
Sent: den 9 januari 2003 19:17
To: [email protected]
Subject: Re: AW: [OLEDB_DEV] OLE DB Consumer Templates



Hi,=20

I see what you mean about MS recommending the storage object way.  I've =
found a lot of articles describing that.  However, I'm having trouble =
finding anything that gives an example of how to do the in-memory way.  =
Perhaps someone could point me to an example or a how-to document?  I'd =
really appreciate it. =20

Thanks,=20
Erik=20

-----Original Message-----=20
From: Yuancai Ye [ mailto:[email protected]]=20
Sent: Thursday, January 09, 2003 9:57 AM=20
To: [email protected]=20
Subject: Re: [OLEDB_DEV] AW: [OLEDB_DEV] OLE DB Consumer Templates=20

Hi,=20
    MS recommends us to use storage object for sending=20
a BLOB into a data source. However, as I tested, this=20
way is bad in many cases since your code needs to=20
create a store object and database needs to recover=20
binnary data from the store object. You'd better use=20
in-memory way to send BLOB for faster speed. With use=20
of in-memory way, the previous two extra steps are=20
avoided. Therefore, in-memory way is faster. That is=20
my guess. Test it yourself.=20

Regards,=20

Yuancai (Charlie) Ye=20

--- Rudolf Wiener <[email protected]> wrote:=20
> Erik,=20
>=20
> For reading and writing blobs, which is what you're=20
> in fact using, I use the=20
> technologies recommended and stream the data with a=20
> storage object. The=20
> macro I use in the accessor is=20
> BLOB_ENTRY_LENGTH_STATUS. I'm not sure if=20
> this is the best way to do it because I have the=20
> impression it slows things=20
> down a bit. But I haven't had the time yet to look=20
> into faster alternatives.=20
>=20
> If you like I can send you excerpts from my app's=20
> code.=20
>=20
> Regards=20
> Rudi=20
>=20
>   -----Urspr&#40689;gliche Nachricht-----=20
>   Von: OLEDB_DEV=20
> [ mailto:[email protected]]Im Auftrag von=20
> Erik=20
> Valdes=20
>   Gesendet: Donnerstag, 09. J&#37592;ner 2003 17:22=20
>   An: [email protected]=20
>   Betreff: Re: [OLEDB_DEV] OLE DB Consumer Templates=20
>=20
>=20
>   The reason I can't allocate on the stack is that=20
> my variable can be any=20
> length.  It essentially boils down to the string=20
> representation of an xml=20
> file.  That file can be any size.  When I pass it to=20
> my SP, the sp's=20
> parameter is ntext (to allow for any size).   What=20
> do people do when they=20
> want to pass XML of unknown length to a SQL Server=20
> stored procedure?=20
>=20
>=20
>=20
>   -----Original Message-----=20
>   From: Peter Moss [ mailto:[email protected]]=20
>   Sent: Thursday, January 09, 2003 7:58 AM=20
>   To: [email protected]=20
>   Subject: Re: [OLEDB_DEV] OLE DB Consumer Templates=20
>=20
>=20
>=20
>   If I remember right, you can't use the macros for=20
> heap-allocated=20
> variables.  If you dig into the macro definitions, I=20
> believe you will find=20
> that pointers offset from the beginning of 'this'=20
> are used.  Thus, a=20
> heap-allocated variable like m_WorkRequest will not=20
> work.=20
>=20
>=20
>=20
>   Why can't you just allocate a TCHAR on the stack=20
> frame of the object, ie,=20
>=20
>=20
>=20
>   TCHAR m_WorkRequest[257];     // Or 1 + the size=20
> of your SP parameter size=20
>=20
>=20
>=20
>   Then you can just use COLUMN_ENTRY.=20
>=20
>=20
>=20
>   HTH,=20
>=20
>   Peter=20
>=20
>     -----Original Message-----=20
>     From: OLEDB_DEV=20
> [ mailto:[email protected]]On Behalf Of=20
> Erik=20
> Valdes=20
>     Sent: Wednesday, January 08, 2003 5:22 PM=20
>     To: [email protected]=20
>     Subject: [OLEDB_DEV] OLE DB Consumer Templates=20
>=20
>     I'm having trouble implementing an accessor.=20
> I'm trying to use a=20
> variable (m_WorkRequest) that's dynamically=20
> allocated as the variable that's=20
> bound to a parameter in my accessor (commented line=20
> below).   The reason I=20
> need it to be dynamic is that it is XML and can be=20
> any length.  The stored=20
> proc's parameter is of ntext type to handle the=20
> variable length.  However, I=20
> don't know at compile time how big to make the=20
> buffer for my parameter in my=20
> accessor.  What's the proper way to do this?  I've=20
> tried COLUMN_ENTRY=20
> (access violation), COLUMN_ENTRY_LENGTH (different=20
> variations produce=20
> different errors, but basically I can't set the=20
> length),=20
> COLUMN_ENTRY_TYPE_SIZE (similar problems as the=20
> previous).  I'm running out=20
> of ideas now.  The code below is just one of many,=20
> many variations I've=20
> tried.=20
>=20
>=20
>=20
>=20
>=20
>     class CAddWorkRequest=20
>=20
>     {=20
>=20
>     public:=20
>=20
>        CAddWorkRequest() STD_INIT=20
>=20
>        ~CAddWorkRequest()=20
>=20
>        {=20
>=20
>           if (m_WorkRequest)=20
>=20
>              delete [] m_WorkRequest;=20
>=20
>        }=20
>=20
>        LONG m_RETURNVALUE;=20
>=20
>        LPTSTR m_WorkRequest;=20
>=20
>        LONG m_lLength;=20
>=20
>=20
>=20
>        void SetStringParam(LPCTSTR szString,int=20
> cBytes)=20
>=20
>        {=20
>=20
>           m_WorkRequest =3D (LPTSTR) new=20
> TCHAR[cBytes];=20
>=20
>           _tcsncpy(m_WorkRequest,szString,cBytes);=20
>=20
>           m_lLength =3D _tcslen(m_WorkRequest);=20
>=20
>        })=20
>=20
>=20
>=20
>     BEGIN_PARAM_MAP(CAddWorkRequest)=20
>=20
>        SET_PARAM_TYPE(DBPARAMIO_OUTPUT)=20
>=20
>        COLUMN_ENTRY(1, m_RETURNVALUE)=20
>=20
>        SET_PARAM_TYPE(DBPARAMIO_INPUT)=20
>=20
>     //=20
>=20
COLUMN_ENTRY_TYPE_SIZE(2,DBTYPE_STR,_tcslen(m_WorkRequest),=20
> m_WorkRequest)=20
>=20
>=20
>=20
>=20
>=20
>     END_PARAM_MAP()=20
>=20
>=20
>=20
>     DEFINE_COMMAND(CAddWorkRequest, _T("{ ? =3D CALL=20
> dbo.AddWorkRequest;1=20
> (?) }"))=20
>=20
>=20
>=20
>     };=20
>=20
>=20
>=20
>     class CAddWorkRequestCommand : public=20
> CBsDbCommand<CAddWorkRequest>=20
>=20
>     {=20
>=20
>     };=20
>=20
>=20
>=20
>     foo (LPTSTR szWor)=20
>=20
>     {=20
>=20
>=20
=3D=3D=3D message truncated =3D=3D=3D=20


__________________________________________________=20
Do you Yahoo!?=20
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.=20
http://mailplus.yahoo.com=20

You can read messages from the OLEDB_DEV archive, unsubscribe from =
OLEDB_DEV,=20
or subscribe to other DevelopMentor lists at http://discuss.develop.com. =


You can read messages from the OLEDB_DEV archive, unsubscribe from =
OLEDB_DEV, or subscribe to other DevelopMentor lists at =
http://discuss.develop.com.=20


You can read messages from the OLEDB_DEV archive, unsubscribe from OLEDB_DEV,
or subscribe to other DevelopMentor lists at http://discuss.develop.com.

------_=_NextPart_001_01C2B80B.85D1765E
Content-Type: text/html;
        charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Diso-8859-1">
<TITLE>RE: [OLEDB_DEV] AW: [OLEDB_DEV] OLE DB Consumer Templates</TITLE>

<META content=3D"MSHTML 6.00.2600.0" name=3DGENERATOR></HEAD>
<BODY>
<DIV><SPAN class=3D475531718-09012003><FONT face=3D"Courier New" =
color=3D#000080=20
size=3D2>Erik,</FONT></SPAN></DIV>
<DIV><SPAN class=3D475531718-09012003><FONT face=3D"Courier New" =
color=3D#000080=20
size=3D2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=3D475531718-09012003><FONT face=3D"Courier New" =
color=3D#000080=20
size=3D2>Does this [1] help? The AOTBLOB sample referenced in the =
article doesn't=20
seem to be available at MSDN anymore...</FONT></SPAN></DIV>
<DIV><SPAN class=3D475531718-09012003><FONT face=3D"Courier New" =
color=3D#000080=20
size=3D2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=3D475531718-09012003><FONT face=3D"Courier New" =
color=3D#000080=20
size=3D2>Kim</FONT></SPAN></DIV>
<DIV><SPAN class=3D475531718-09012003></SPAN>&nbsp;</DIV>
<DIV><SPAN class=3D475531718-09012003><FONT face=3D"Courier New" =
color=3D#000080=20
size=3D2>[1] <A=20
href=3D"http://www.codeproject.com/wtl/Oledb2.asp">http://www.codeproject=
.com/wtl/Oledb2.asp</A></FONT></SPAN></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000080 2px =
solid">
  <DIV class=3DOutlookMessageHeader dir=3Dltr align=3Dleft><FONT =
face=3DTahoma=20
  size=3D2>-----Original Message-----<BR><B>From:</B> Erik Valdes=20
  [mailto:[email protected]]<BR><B>Sent:</B> den 9 januari =
2003=20
  19:17<BR><B>To:</B> [email protected]<BR><B>Subject:</B> =
Re: AW:=20
  [OLEDB_DEV] OLE DB Consumer Templates<BR><BR></FONT></DIV>
  <P><FONT size=3D2>Hi,</FONT> </P>
  <P><FONT size=3D2>I see what you mean about MS recommending the =
storage object=20
  way.&nbsp; I've found a lot of articles describing that.&nbsp; =
However, I'm=20
  having trouble finding anything that gives an example of how to do the =

  in-memory way.&nbsp; Perhaps someone could point me to an example or a =
how-to=20
  document?&nbsp; I'd really appreciate it.&nbsp; </FONT></P>
  <P><FONT size=3D2>Thanks,</FONT> <BR><FONT size=3D2>Erik</FONT> </P>
  <P><FONT size=3D2>-----Original Message-----</FONT> <BR><FONT =
size=3D2>From:=20
  Yuancai Ye [<A =
href=3D"mailto:[email protected]">mailto:[email protected]</A>]=20
  </FONT><BR><FONT size=3D2>Sent: Thursday, January 09, 2003 9:57 =
AM</FONT>=20
  <BR><FONT size=3D2>To: [email protected]</FONT> <BR><FONT=20
  size=3D2>Subject: Re: [OLEDB_DEV] AW: [OLEDB_DEV] OLE DB Consumer=20
  Templates</FONT> </P>
  <P><FONT size=3D2>Hi,</FONT> <BR><FONT size=3D2>&nbsp;&nbsp;&nbsp; MS =
recommends=20
  us to use storage object for sending</FONT> <BR><FONT size=3D2>a BLOB =
into a=20
  data source. However, as I tested, this</FONT> <BR><FONT size=3D2>way =
is bad in=20
  many cases since your code needs to</FONT> <BR><FONT size=3D2>create a =
store=20
  object and database needs to recover</FONT> <BR><FONT size=3D2>binnary =
data from=20
  the store object. You'd better use</FONT> <BR><FONT size=3D2>in-memory =
way to=20
  send BLOB for faster speed. With use</FONT> <BR><FONT size=3D2>of =
in-memory way,=20
  the previous two extra steps are</FONT> <BR><FONT size=3D2>avoided. =
Therefore,=20
  in-memory way is faster. That is</FONT> <BR><FONT size=3D2>my guess. =
Test it=20
  yourself.</FONT> </P>
  <P><FONT size=3D2>Regards,</FONT> </P>
  <P><FONT size=3D2>Yuancai (Charlie) Ye</FONT> </P>
  <P><FONT size=3D2>--- Rudolf Wiener &lt;[email protected]&gt; =
wrote:</FONT>=20
  <BR><FONT size=3D2>&gt; Erik,</FONT> <BR><FONT size=3D2>&gt;</FONT> =
<BR><FONT=20
  size=3D2>&gt; For reading and writing blobs, which is what =
you're</FONT>=20
  <BR><FONT size=3D2>&gt; in fact using, I use the</FONT> <BR><FONT =
size=3D2>&gt;=20
  technologies recommended and stream the data with a</FONT> <BR><FONT=20
  size=3D2>&gt; storage object. The</FONT> <BR><FONT size=3D2>&gt; macro =
I use in=20
  the accessor is</FONT> <BR><FONT size=3D2>&gt; =
BLOB_ENTRY_LENGTH_STATUS. I'm not=20
  sure if</FONT> <BR><FONT size=3D2>&gt; this is the best way to do it =
because I=20
  have the</FONT> <BR><FONT size=3D2>&gt; impression it slows =
things</FONT>=20
  <BR><FONT size=3D2>&gt; down a bit. But I haven't had the time yet to=20
  look</FONT> <BR><FONT size=3D2>&gt; into faster alternatives.</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt; If you like I can send =
you excerpts=20
  from my app's</FONT> <BR><FONT size=3D2>&gt; code.</FONT> <BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt; Regards</FONT> <BR><FONT =
size=3D2>&gt;=20
  Rudi</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT =
size=3D2>&gt;&nbsp;&nbsp;=20
  -----Urspr&amp;#40689;gliche Nachricht-----</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp; Von: OLEDB_DEV</FONT> <BR><FONT =
size=3D2>&gt; [<A=20
  =
href=3D"mailto:[email protected]">mailto:[email protected]=
velop.com</A>]Im=20
  Auftrag von</FONT> <BR><FONT size=3D2>&gt; Erik</FONT> <BR><FONT =
size=3D2>&gt;=20
  Valdes</FONT> <BR><FONT size=3D2>&gt;&nbsp;&nbsp; Gesendet: =
Donnerstag, 09.=20
  J&amp;#37592;ner 2003 17:22</FONT> <BR><FONT size=3D2>&gt;&nbsp;&nbsp; =
An:=20
  [email protected]</FONT> <BR><FONT =
size=3D2>&gt;&nbsp;&nbsp;=20
  Betreff: Re: [OLEDB_DEV] OLE DB Consumer Templates</FONT> <BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp; The reason I can't allocate on the stack is=20
  that</FONT> <BR><FONT size=3D2>&gt; my variable can be any</FONT> =
<BR><FONT=20
  size=3D2>&gt; length.&nbsp; It essentially boils down to the =
string</FONT>=20
  <BR><FONT size=3D2>&gt; representation of an xml</FONT> <BR><FONT =
size=3D2>&gt;=20
  file.&nbsp; That file can be any size.&nbsp; When I pass it to</FONT>=20
  <BR><FONT size=3D2>&gt; my SP, the sp's</FONT> <BR><FONT size=3D2>&gt; =
parameter=20
  is ntext (to allow for any size).&nbsp;&nbsp; What</FONT> <BR><FONT=20
  size=3D2>&gt; do people do when they</FONT> <BR><FONT size=3D2>&gt; =
want to pass=20
  XML of unknown length to a SQL Server</FONT> <BR><FONT size=3D2>&gt; =
stored=20
  procedure?</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT =
size=3D2>&gt;</FONT>=20
  <BR><FONT size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;&nbsp;&nbsp; =
-----Original=20
  Message-----</FONT> <BR><FONT size=3D2>&gt;&nbsp;&nbsp; From: Peter =
Moss [<A=20
  href=3D"mailto:[email protected]">mailto:[email protected]</A>]</FONT> =
<BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp; Sent: Thursday, January 09, 2003 7:58 =
AM</FONT>=20
  <BR><FONT size=3D2>&gt;&nbsp;&nbsp; To: =
[email protected]</FONT>=20
  <BR><FONT size=3D2>&gt;&nbsp;&nbsp; Subject: Re: [OLEDB_DEV] OLE DB =
Consumer=20
  Templates</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT =
size=3D2>&gt;</FONT>=20
  <BR><FONT size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;&nbsp;&nbsp; If =
I remember=20
  right, you can't use the macros for</FONT> <BR><FONT size=3D2>&gt;=20
  heap-allocated</FONT> <BR><FONT size=3D2>&gt; variables.&nbsp; If you =
dig into=20
  the macro definitions, I</FONT> <BR><FONT size=3D2>&gt; believe you =
will=20
  find</FONT> <BR><FONT size=3D2>&gt; that pointers offset from the =
beginning of=20
  'this'</FONT> <BR><FONT size=3D2>&gt; are used.&nbsp; Thus, a</FONT> =
<BR><FONT=20
  size=3D2>&gt; heap-allocated variable like m_WorkRequest will =
not</FONT>=20
  <BR><FONT size=3D2>&gt; work.</FONT> <BR><FONT size=3D2>&gt;</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp; Why can't you just allocate a TCHAR on the=20
  stack</FONT> <BR><FONT size=3D2>&gt; frame of the object, ie,</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT =
size=3D2>&gt;</FONT>=20
  <BR><FONT size=3D2>&gt;&nbsp;&nbsp; TCHAR=20
  m_WorkRequest[257];&nbsp;&nbsp;&nbsp;&nbsp; // Or 1 + the size</FONT>=20
  <BR><FONT size=3D2>&gt; of your SP parameter size</FONT> <BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT =
size=3D2>&gt;</FONT>=20
  <BR><FONT size=3D2>&gt;&nbsp;&nbsp; Then you can just use =
COLUMN_ENTRY.</FONT>=20
  <BR><FONT size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;&nbsp;&nbsp; HTH,</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;&nbsp;&nbsp; Peter</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; =
-----Original=20
  Message-----</FONT> <BR><FONT size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; =
From:=20
  OLEDB_DEV</FONT> <BR><FONT size=3D2>&gt; [<A=20
  =
href=3D"mailto:[email protected]">mailto:[email protected]=
VELOP.COM</A>]On=20
  Behalf Of</FONT> <BR><FONT size=3D2>&gt; Erik</FONT> <BR><FONT =
size=3D2>&gt;=20
  Valdes</FONT> <BR><FONT size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Sent: =
Wednesday,=20
  January 08, 2003 5:22 PM</FONT> <BR><FONT =
size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;=20
  To: [email protected]</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Subject: [OLEDB_DEV] OLE DB =
Consumer=20
  Templates</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; I'm having trouble implementing =
an=20
  accessor.</FONT> <BR><FONT size=3D2>&gt; I'm trying to use a</FONT> =
<BR><FONT=20
  size=3D2>&gt; variable (m_WorkRequest) that's dynamically</FONT> =
<BR><FONT=20
  size=3D2>&gt; allocated as the variable that's</FONT> <BR><FONT =
size=3D2>&gt;=20
  bound to a parameter in my accessor (commented line</FONT> <BR><FONT=20
  size=3D2>&gt; below).&nbsp;&nbsp; The reason I</FONT> <BR><FONT =
size=3D2>&gt; need=20
  it to be dynamic is that it is XML and can be</FONT> <BR><FONT =
size=3D2>&gt; any=20
  length.&nbsp; The stored</FONT> <BR><FONT size=3D2>&gt; proc's =
parameter is of=20
  ntext type to handle the</FONT> <BR><FONT size=3D2>&gt; variable =
length.&nbsp;=20
  However, I</FONT> <BR><FONT size=3D2>&gt; don't know at compile time =
how big to=20
  make the</FONT> <BR><FONT size=3D2>&gt; buffer for my parameter in =
my</FONT>=20
  <BR><FONT size=3D2>&gt; accessor.&nbsp; What's the proper way to do =
this?&nbsp;=20
  I've</FONT> <BR><FONT size=3D2>&gt; tried COLUMN_ENTRY</FONT> =
<BR><FONT=20
  size=3D2>&gt; (access violation), COLUMN_ENTRY_LENGTH =
(different</FONT>=20
  <BR><FONT size=3D2>&gt; variations produce</FONT> <BR><FONT =
size=3D2>&gt;=20
  different errors, but basically I can't set the</FONT> <BR><FONT =
size=3D2>&gt;=20
  length),</FONT> <BR><FONT size=3D2>&gt; COLUMN_ENTRY_TYPE_SIZE =
(similar problems=20
  as the</FONT> <BR><FONT size=3D2>&gt; previous).&nbsp; I'm running =
out</FONT>=20
  <BR><FONT size=3D2>&gt; of ideas now.&nbsp; The code below is just one =
of=20
  many,</FONT> <BR><FONT size=3D2>&gt; many variations I've</FONT> =
<BR><FONT=20
  size=3D2>&gt; tried.</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT =
size=3D2>&gt;</FONT>=20
  <BR><FONT size=3D2>&gt;</FONT> <BR><FONT =
size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;=20
  class CAddWorkRequest</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT> <BR><FONT =
size=3D2>&gt;</FONT>=20
  <BR><FONT size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; public:</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
CAddWorkRequest()=20
  STD_INIT</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
  ~CAddWorkRequest()</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT=20
  =
size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 if=20
  (m_WorkRequest)</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  =
size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;=20
  delete [] m_WorkRequest;</FONT> <BR><FONT size=3D2>&gt;</FONT> =
<BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LONG=20
  m_RETURNVALUE;</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPTSTR=20
  m_WorkRequest;</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LONG =
m_lLength;</FONT>=20
  <BR><FONT size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void=20
  SetStringParam(LPCTSTR szString,int</FONT> <BR><FONT size=3D2>&gt;=20
  cBytes)</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT=20
  =
size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
=20
  m_WorkRequest =3D (LPTSTR) new</FONT> <BR><FONT size=3D2>&gt;=20
  TCHAR[cBytes];</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  =
size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
=20
  _tcsncpy(m_WorkRequest,szString,cBytes);</FONT> <BR><FONT =
size=3D2>&gt;</FONT>=20
  <BR><FONT=20
  =
size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
=20
  m_lLength =3D _tcslen(m_WorkRequest);</FONT> <BR><FONT =
size=3D2>&gt;</FONT>=20
  <BR><FONT size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
})</FONT>=20
  <BR><FONT size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;=20
  BEGIN_PARAM_MAP(CAddWorkRequest)</FONT> <BR><FONT size=3D2>&gt;</FONT> =
<BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
  SET_PARAM_TYPE(DBPARAMIO_OUTPUT)</FONT> <BR><FONT size=3D2>&gt;</FONT> =
<BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
COLUMN_ENTRY(1,=20
  m_RETURNVALUE)</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
  SET_PARAM_TYPE(DBPARAMIO_INPUT)</FONT> <BR><FONT size=3D2>&gt;</FONT> =
<BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; //</FONT> <BR><FONT =
size=3D2>&gt;</FONT>=20
  <BR><FONT=20
  =
size=3D2>COLUMN_ENTRY_TYPE_SIZE(2,DBTYPE_STR,_tcslen(m_WorkRequest),</FON=
T>=20
  <BR><FONT size=3D2>&gt; m_WorkRequest)</FONT> <BR><FONT =
size=3D2>&gt;</FONT>=20
  <BR><FONT size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; END_PARAM_MAP()</FONT> <BR><FONT =

  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT =
size=3D2>&gt;</FONT>=20
  <BR><FONT size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; =
DEFINE_COMMAND(CAddWorkRequest,=20
  _T("{ ? =3D CALL</FONT> <BR><FONT size=3D2>&gt; =
dbo.AddWorkRequest;1</FONT>=20
  <BR><FONT size=3D2>&gt; (?) }"))</FONT> <BR><FONT size=3D2>&gt;</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; };</FONT> <BR><FONT =
size=3D2>&gt;</FONT>=20
  <BR><FONT size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> =
<BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; class CAddWorkRequestCommand :=20
  public</FONT> <BR><FONT size=3D2>&gt; =
CBsDbCommand&lt;CAddWorkRequest&gt;</FONT>=20
  <BR><FONT size=3D2>&gt;</FONT> <BR><FONT =
size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;=20
  {</FONT> <BR><FONT size=3D2>&gt;</FONT> <BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; };</FONT> <BR><FONT =
size=3D2>&gt;</FONT>=20
  <BR><FONT size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> =
<BR><FONT=20
  size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; foo (LPTSTR szWor)</FONT> =
<BR><FONT=20
  size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; =
{</FONT>=20
  <BR><FONT size=3D2>&gt;</FONT> <BR><FONT size=3D2>&gt;</FONT> =
<BR><FONT size=3D2>=3D=3D=3D=20
  message truncated =3D=3D=3D</FONT> </P><BR>
  <P><FONT =
size=3D2>__________________________________________________</FONT>=20
  <BR><FONT size=3D2>Do you Yahoo!?</FONT> <BR><FONT size=3D2>Yahoo! =
Mail Plus -=20
  Powerful. Affordable. Sign up now.</FONT> <BR><FONT size=3D2><A=20
  href=3D"http://mailplus.yahoo.com"=20
  target=3D_blank>http://mailplus.yahoo.com</A></FONT> </P>
  <P><FONT size=3D2>You can read messages from the OLEDB_DEV archive, =
unsubscribe=20
  from OLEDB_DEV,</FONT> <BR><FONT size=3D2>or subscribe to other =
DevelopMentor=20
  lists at <A href=3D"http://discuss.develop.com"=20
  target=3D_blank>http://discuss.develop.com</A>.</FONT> </P>You can =
read messages=20
  from the OLEDB_DEV archive, unsubscribe from OLEDB_DEV, or subscribe =
to other=20
  DevelopMentor lists at http://discuss.develop.com. =
</BLOCKQUOTE></BODY></HTML>
You can read messages from the OLEDB_DEV archive, unsubscribe from OLEDB_DEV,
or subscribe to other DevelopMentor lists at http://discuss.develop.com.

------_=_NextPart_001_01C2B80B.85D1765E--