⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_27312.htm

📁 一些关于vc的问答
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<p>
序号:27312 发表者:我就是要学VC 发表日期:2003-01-10 10:55:55
<br>主题:vc 与 ms sql2000如何组合啊?语言方面!
<br>内容:现在用vc作界面,用sql2000数据库,二者组合在一起.<BR>想请问一下:如何将数据库的查询语言嵌套在vc中??<BR>Crecordset吗?请问如何结合?用什么语句结合?请具体的讲一讲!!<BR>谢谢!!<BR><BR>另:当点击对话框或菜单上的某个按钮后,要求弹出一个对话框(不是messagebox),请问如何实现?用什么语句?<BR>那位大虾有什么实例,给上传参考一下!!<BR>谢谢了!!!!!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:michael 回复日期:2003-01-10 12:19:43
<br>内容:&nbsp;&nbsp; 用OLE DB或者ADO连SQL SERVER OLE DB是基于COM的一套模板库 ADO是一套COM组件。<BR>ADO请参阅徐景周写的一个例程在咱们站上的“最新更新”里有。我这有一个俄罗斯人写的OLE DB例程。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:ax 回复日期:2003-01-10 12:20:21
<br>内容:使用Ado,Ado是Com组件,可以使用_ConnectionPtr连接数据库,_RecordsetPtr打开记录集,具体使用方式如下,也可以参照Msdn.<BR><BR>#import "C:\Program Files\Common Files\System\ADO\msado15.dll" \<BR>&nbsp;&nbsp;&nbsp;&nbsp;no_namespace rename("EOF", "EndOfFile")<BR><BR>#include &lt;oledb.h&gt;<BR>#include &lt;stdio.h&gt;<BR>#include &lt;conio.h&gt;<BR>#include "OpenX.h"<BR><BR>// Function declarations<BR>inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};<BR>void OpenX(void);<BR>void PrintProviderError(_ConnectionPtr pConnection);<BR>void PrintComError(_com_error &amp;e);<BR><BR>///////////////////////////////////////////////////////////<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<BR>///////////////////////////////////////////////////////////<BR><BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(FAILED(::CoInitialize(NULL)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;OpenX();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;::CoUninitialize();<BR>}<BR><BR>///////////////////////////////////////////////////////////<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenX Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<BR>///////////////////////////////////////////////////////////<BR><BR>void OpenX(void)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;// Define ADO object pointers.<BR>&nbsp;&nbsp;&nbsp;&nbsp;// Initialize pointers on define.<BR>&nbsp;&nbsp;&nbsp;&nbsp;// These are in the ADODB::&nbsp;&nbsp;namespace<BR>&nbsp;&nbsp;&nbsp;&nbsp; _RecordsetPtr&nbsp;&nbsp;&nbsp;&nbsp;pRstEmployee&nbsp;&nbsp;= NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp; _ConnectionPtr pConnection&nbsp;&nbsp;&nbsp;&nbsp;= NULL;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Define string variables.<BR>&nbsp;&nbsp;&nbsp;&nbsp;_bstr_t strCnn("Provider=sqloledb;Data Source=MyServer;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Initial Catalog=pubs;User Id=sa;Password=;");<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Define Other Variables.<BR>&nbsp;&nbsp;&nbsp;&nbsp;HRESULT&nbsp;&nbsp;hr = S_OK;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IADORecordBinding&nbsp;&nbsp; *picRs&nbsp;&nbsp;= NULL;&nbsp;&nbsp;// Interface Pointer declared.<BR>&nbsp;&nbsp;&nbsp;&nbsp;CEmployeeRs emprs;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // C++ Class object<BR>&nbsp;&nbsp;&nbsp;&nbsp;DBDATE varDate;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;try<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// open connection and record set<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TESTHR(pConnection.CreateInstance(__uuidof(Connection)));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pConnection-&gt;Open(strCnn,"","",adConnectUnspecified);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TESTHR(pRstEmployee.CreateInstance(__uuidof(Recordset)));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRstEmployee-&gt;Open("Employee", <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_variant_t((IDispatch *)pConnection,true), adOpenKeyset,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adLockOptimistic, adCmdTable);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Open an IADORecordBinding interface pointer which we'll <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// use for Binding Recordset to a class.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TESTHR(pRstEmployee-&gt;QueryInterface(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__uuidof(IADORecordBinding),(LPVOID*)&amp;picRs));<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Bind the Recordset to a C++ Class here.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TESTHR(picRs-&gt;BindToRecordset(&amp;emprs));<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Assign the first employee record's hire date<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// to a variable, then change the hire date.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;varDate = emprs.m_sze_hiredate;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\nOriginal data\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\tName - Hire Date\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("&nbsp;&nbsp;%s&nbsp;&nbsp;%s - %d/%d/%d\n\n",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.le_fnameStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_fname : "&lt;NULL&gt;",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.le_lnameStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_lname : "&lt;NULL&gt;",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.le_hiredateStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_hiredate.month : 0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.le_hiredateStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_hiredate.day : 0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.le_hiredateStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_hiredate.year : 0); <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_hiredate.year=1900;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_hiredate.month=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_hiredate.day=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;picRs-&gt;Update(&amp;emprs);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\nChanged data\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\tName - Hire Date\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("&nbsp;&nbsp;%s %s - %d/%d/%d\n\n",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.le_fnameStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_fname : "&lt;NULL&gt;",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.le_lnameStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_lname : "&lt;NULL&gt;",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.le_hiredateStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_hiredate.month : 0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.le_hiredateStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_hiredate.day : 0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.le_hiredateStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_hiredate.year : 0); <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Requery Recordset and reset the hire date.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRstEmployee-&gt;Requery(adOptionUnspecified);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Open an IADORecordBinding interface pointer which we'll <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// use for Binding Recordset to a class.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TESTHR(pRstEmployee-&gt;QueryInterface(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__uuidof(IADORecordBinding),(LPVOID*)&amp;picRs));<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Rebind the Recordset to a C++ Class here.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TESTHR(picRs-&gt;BindToRecordset(&amp;emprs));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_hiredate = varDate;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;picRs-&gt;Update(&amp;emprs);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\nData after reset\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\tName - Hire Date\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("&nbsp;&nbsp;%s %s - %d/%d/%d",emprs.le_fnameStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_fname : "&lt;NULL&gt;",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.le_lnameStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_lname : "&lt;NULL&gt;",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.le_hiredateStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_hiredate.month : 0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.le_hiredateStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_hiredate.day : 0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.le_hiredateStatus == adFldOK ? <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emprs.m_sze_hiredate.year : 0); <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Clean up objects before exit.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRstEmployee-&gt;Close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pConnection-&gt;Close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;catch(_com_error &amp;e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Notify the user of errors if any.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Pass a connection pointer accessed from the Connection.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintProviderError(pConnection);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintComError(e);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR><BR>///////////////////////////////////////////////////////////<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintProviderError Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<BR>///////////////////////////////////////////////////////////<BR><BR>void PrintProviderError(_ConnectionPtr pConnection)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;// Print Provider Errors from Connection object.<BR>&nbsp;&nbsp;&nbsp;&nbsp;// pErr is a record object in the Connection's Error collection.<BR>&nbsp;&nbsp;&nbsp;&nbsp;ErrorPtr&nbsp;&nbsp;&nbsp;&nbsp;pErr&nbsp;&nbsp;= NULL;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if( (pConnection-&gt;Errors-&gt;Count) &gt; 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long nCount = pConnection-&gt;Errors-&gt;Count;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Collection ranges from 0 to nCount -1.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(long i = 0;i &lt; nCount;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pErr = pConnection-&gt;Errors-&gt;GetItem(i);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\t Error number: %x\t%s", pErr-&gt;Number,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pErr-&gt;Description);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR><BR>///////////////////////////////////////////////////////////<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintComError Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<BR>///////////////////////////////////////////////////////////<BR><BR>void PrintComError(_com_error &amp;e)<BR>{<BR>&nbsp;&nbsp; _bstr_t bstrSource(e.Source());<BR>&nbsp;&nbsp; _bstr_t bstrDescription(e.Description());<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Print COM errors. <BR>&nbsp;&nbsp; printf("Error\n");<BR>&nbsp;&nbsp; printf("\tCode = %08lx\n", e.Error());<BR>&nbsp;&nbsp; printf("\tCode meaning = %s\n", e.ErrorMessage());<BR>&nbsp;&nbsp; printf("\tSource = %s\n", (LPCSTR) bstrSource);<BR>&nbsp;&nbsp; printf("\tDescription = %s\n", (LPCSTR) bstrDescription);<BR>}<BR>// EndOpenCpp<BR><BR>OpenX.h:<BR><BR>// BeginOpenH<BR>#include "icrsint.h"<BR><BR>// This Class extracts only fname,lastname and <BR>// hire_date from employee table<BR>class CEmployeeRs : public CADORecordBinding<BR>{<BR><BR>BEGIN_ADO_BINDING(CEmployeeRs)<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;// Column fname is the 2nd field in the table&nbsp;&nbsp; <BR>&nbsp;&nbsp; ADO_VARIABLE_LENGTH_ENTRY2(2, adVarChar, m_sze_fname, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizeof(m_sze_fname), le_fnameStatus, FALSE)<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;// Column lname is the 4th field in the table.<BR>&nbsp;&nbsp; ADO_VARIABLE_LENGTH_ENTRY2(4, adVarChar, m_sze_lname, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizeof(m_sze_lname), le_lnameStatus, FALSE)<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Column hiredate is the 8th field in the table.<BR>&nbsp;&nbsp; ADO_VARIABLE_LENGTH_ENTRY2(8, adDBDate,m_sze_hiredate, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizeof(m_sze_hiredate), le_hiredateStatus, TRUE)<BR>&nbsp;&nbsp; <BR>END_ADO_BINDING()<BR><BR>public:<BR>&nbsp;&nbsp; CHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_sze_fname[21];<BR>&nbsp;&nbsp; ULONG&nbsp;&nbsp;&nbsp;&nbsp;le_fnameStatus;<BR>&nbsp;&nbsp; CHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_sze_lname[31];<BR>&nbsp;&nbsp; ULONG&nbsp;&nbsp;&nbsp;&nbsp;le_lnameStatus;<BR>&nbsp;&nbsp; DBDATE&nbsp;&nbsp;&nbsp;&nbsp;m_sze_hiredate;<BR>&nbsp;&nbsp; ULONG&nbsp;&nbsp;&nbsp;&nbsp;le_hiredateStatus;<BR>};<BR>// EndOpenH<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bird 回复日期:2003-01-10 13:50:58
<br>内容:你的第二个问题:<BR>如果你创建好了对话框了!用YourDialog.show()
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:bird 回复日期:2003-01-10 13:56:01
<br>内容:第一个问题有篇文章可以看看:<BR>http://www.citytea.com/article/list.asp?id=299

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -