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

📄 subject_29918.htm

📁 vc
💻 HTM
字号:
<p>
序号:29918 发表者:金枪鱼 发表日期:2003-02-18 18:52:42
<br>主题:ACCESS数据库中长文本数据字段的问题
<br>内容:Access中“文本”最多接受255个字符。<BR>说明中说使用“备注”类型可以接受较长的字符,但我使用的是ODBC。测试表名字符串长度超过250个即出错!!!<BR><BR>请高手指点这怎么处理?<BR>是否需要设置为OLE对象字段,按照大型二进制数据进行处理。<BR>但问题:如果使用CLongBinary作数据交换,怎样将CString变量拷贝到HGLOBAL全局内存中。如果使用CByteArray作数据交换,又增养实现CString变量和CByteArray变量之间的内容交换。<BR><BR>我用pRs-&gt;m_Other_Memo.RemoveAll();<BR>pRs-&gt;m_Other_Memo.SetSize(m_strComment.GetLength());<BR>int l=0;<BR>for(l=0;l&lt;m_strComment.GetLength();l++)<BR>{<BR>pRs-&gt;m_Other_Memo.SetAt(l,m_strComment.GetAt(l));<BR>}<BR>pRs-&gt;SetFieldDirty(&amp;pRs-&gt;m_Other_Memo);<BR>pRs-&gt;SetFieldNull(&amp;pRs-&gt;m_Other_Memo,FALSE);<BR>其中:pRs-&gt;m_Other_Memo是CByteArray类型,m_strComment是CString变量。<BR>我的目的是将CStrng变量m_strComment记录的长文本记录到数据的Other_memo字段(记录集)。<BR>但测试表名也只能处理不超过250个字符的文本。<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:tjhe 回复日期:2003-02-18 19:55:16
<br>内容:这个问题可采用"备注"类型,不过对生成的CRecordSet派生类要进行修改,问题在于:<BR>void RFX_Text( CFieldExchange* pFX, const char* szName, CString&amp; value, int nMaxLength = 255, int nColumnType = SQL_VARCHAR, short nScale = 0 );<BR><BR><BR>解决办法:<BR>假设表TabABC中有一"备注"类型字段名为comment,在VC中采用ODBC方式生成对应的CRecordSet派生类:CTabABCSet:<BR>1.头文件中大致如:<BR>class CTabABCSet : public CRecordSet<BR>{<BR>....<BR>// Field/Param Data<BR>&nbsp;&nbsp;&nbsp;&nbsp;//{{AFX_FIELD(CQuestionSet, CRecordset)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ......<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;&nbsp;&nbsp;m_comment;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ......<BR>&nbsp;&nbsp;&nbsp;&nbsp;//}}AFX_FIELD<BR>.....<BR><BR>头文件不用修改。<BR><BR>2.实现文件cpp中要修改如下部分:<BR>void CTabABCSet::DoFieldExchange(CFieldExchange* pFX)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//{{AFX_FIELD_MAP(CQuestionSet)<BR>&nbsp;&nbsp;&nbsp;&nbsp;pFX-&gt;SetFieldType(CFieldExchange::outputColumn);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .........<BR>&nbsp;&nbsp;&nbsp;&nbsp;RFX_Text(pFX, _T("[comment]"), m_comment,20000);&nbsp;&nbsp;//注意此句后的20000表明该字段可以达到20000个字符(可根据需要自定义,不超过65536)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .......<BR>&nbsp;&nbsp;&nbsp;&nbsp;//}}AFX_FIELD_MAP<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>
回复者:金枪鱼 回复日期:2003-02-18 20:09:47
<br>内容:原来是缺省的DoFieldExchange函数使用了RFX_Text()函数的缺省参数导致的问题,我原想这些自动生产的代码不用管的,没有仔细研究,菜!<BR><BR>万分感谢tjhe的指点。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2003-02-18 20:36:19
<br>内容:这个问题也曾困扰过我,花了很多时间才找到原因,最初我的想法同你一样,以为自动生成的代码不用管,经常忽略。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

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