📄 subject_40417.htm
字号:
<p>
序号:40417 发表者:Lute 发表日期:2003-05-18 16:59:45
<br>主题:请教一个ODBC的问题
<br>内容:我在CDiskInfoDeleteDlg中加了一个Edit控件,并加入了m_DeleteData作为其成员变量<BR>我想让这个m_DeleteData和Recordset派生下来的对象中的成员变量m_ID做比较,但始终不<BR>能成功(这两个变量都是CString类型,平台是VC6+SQL Server 2000,我用AfxMessageBox输出该变量都有值)<BR>void CDiskInfoSystemDlg::OnDelete() <BR>{<BR> // TODO: Add your control notification handler code here<BR> CDiskInfoDeleteDlg DlgDeleteData;<BR> if(DlgDeleteData.DoModal()==IDOK)<BR> {<BR> if(!m_DiskInfoSet.IsOpen())<BR> m_DiskInfoSet.Open();<BR> <BR> m_DiskInfoSet.MoveFirst();<BR> AfxMessageBox(DlgDeleteData.m_DeleteData);<BR> do{<BR> if(DlgDeleteData.m_DeleteData!=m_DiskInfoSet.m_ID)<BR> { <BR> m_DiskInfoSet.MoveNext();<BR> AfxMessageBox(m_DiskInfoSet.m_ID);<BR> }<BR> <BR> else{<BR> m_DiskInfoSet.Delete();<BR> m_DiskInfoSet.Requery();<BR> m_ListCtrl.DeleteAllItems();<BR> this->Show();<BR> }<BR> }while(!m_DiskInfoSet.IsEOF());<BR> }<BR><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>
回复者:Lute 回复日期:2003-05-18 17:01:22
<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>
回复者:Lute 回复日期:2003-05-18 23:08:52
<br>内容:终于解决了<BR>通过用CString::GetLength()查看<BR>原来是CString m_ID的长度是10,即在SQL Server 2000建表时分配的字段长度<BR>而通过Edit控件接收来的m_DeleteData是输入字符串的实际长度。两者长度不一样。<BR>于是通过向m_DeleteData追加“ ”使两者长度一样(限制用户输入超过10个字符即<BR>总有m_DeleteData.GetLength<=m_DiskInfoSet.m_ID.GetLength)<BR><BR>代码片断:(可不用temp而直接对m_DeleteData操作)<BR>CString temp;<BR>temp.Format(DlgDeleteData.m_DeleteData);<BR>for(int i = temp.GetLength();i<m_DiskInfoSet.m_ID.GetLength();i++)<BR> temp.Insert(i, " ");
<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>回复者:金枪鱼 回复日期:2003-05-19 22:51:57
<br>内容:你的代码有一个小问题:<BR><BR>你得到了一个值,然后在代码中用这个值去遍历记录集,直到找到相同的记录为止。<BR><BR>我以前也有同样的错误。此时如果记录集很庞大的话,就影响了速度,虽然实现了功能。<BR><BR>我们应该让后台数据库程序去完成这一步,而不是在我们的代码中来进行对比,以便提高速度。<BR><BR>应该将你得到的值作为过滤条件(使用记录集的m_strFilter或者SQL语句的where条件)直接传递给后台数据库程序,打开记录集你只要判定一下记录集是否为空即可知道是否有这个记录集了。<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>
回复者:Lute 回复日期:2003-05-21 21:50:22
<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 + -