ADO遍历问题

heguowei 2003-10-19 09:45:43
void CFireHeView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
UpdateData();
//ADO数据库操作
HRESULT hr=m_adoConn.CreateInstance(__uuidof(Connection));
if(FAILED(hr))return;
m_strConnect="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=database/guest.mdb";

//SQL SERVER connecting to the database server now:
//"Provider=SQLOLEDB; Server=server_name;"
//"Database=database_name; uid=user_name; pwd=password;";

try{
m_adoConn->Open(m_strConnect,"","",NULL);}
catch (_com_error &e)
{
::MessageBox(NULL,e.Description(),"警告",MB_OK | MB_ICONWARNING);
}
//从数据库中读取数据
m_adoRs.CreateInstance(__uuidof(Recordset));
m_adoRs->Open("SELECT * FROM TGuest",m_adoConn.GetInterfacePtr(),adOpenKeyset,adLockOptimistic ,adCmdText);//,

//列表初始化
CString s;

// s.Format("%d\t%d",m_adoRs->RecordCount,adOpenDynamic);
// ::MessageBox(NULL,s,"",MB_OK);
m_mshfGuest.SetRows(m_adoRs->RecordCount+3);
m_mshfGuest.SetRow(0);
m_mshfGuest.SetCol(0);
m_mshfGuest.SetText("客户ID");

m_mshfGuest.SetCol(1);
m_mshfGuest.SetText("客户名称");

m_mshfGuest.SetCol(2);
m_mshfGuest.SetText("联系人名字");

m_mshfGuest.SetCol(3);
m_mshfGuest.SetText("公司或部门");

m_mshfGuest.SetCol(4);
m_mshfGuest.SetText("记帐地址");

m_mshfGuest.SetCol(5);
m_mshfGuest.SetText("城市");

m_mshfGuest.SetCol(6);
m_mshfGuest.SetText("省份");

m_mshfGuest.SetCol(7);
m_mshfGuest.SetText("邮政编码");

m_mshfGuest.SetCol(8);
m_mshfGuest.SetText("国家");

m_mshfGuest.SetCol(9);
m_mshfGuest.SetText("联系人职称");

m_mshfGuest.SetCol(10);
m_mshfGuest.SetText("电话号码");

m_mshfGuest.SetCol(11);
m_mshfGuest.SetText("分机");

m_mshfGuest.SetCol(12);
m_mshfGuest.SetText("传真号码");

m_mshfGuest.SetCol(13);
m_mshfGuest.SetText("电子邮件地址");

m_mshfGuest.SetCol(14);
m_mshfGuest.SetText("附注");

m_mshfGuest.SetCol(15);
m_mshfGuest.SetText("网址");

m_mshfGuest.SetCol(16);
m_mshfGuest.SetText("FTP地址");

m_mshfGuest.SetCol(17);
m_mshfGuest.SetText("FTP用户名");

m_mshfGuest.SetCol(18);
m_mshfGuest.SetText("FTP用户密码");

if(m_adoRs->adoEOF==-1)
{
}
else
{
try{
//m_adoRs->MoveFirst();
int irow=1;

//s.Format("%b",m_adoRs->adoEOF);
// ::MessageBox(NULL,(char *)m_adoRs->adoEOF,"警告",MB_OK | MB_ICONWARNING);
while(!m_adoRs->adoEOF)//==VARIANT_FALSE
{
m_mshfGuest.SetRow(irow);

s.Format("%d",irow);
::MessageBox(NULL,s,"警告",MB_OK | MB_ICONWARNING);

m_mshfGuest.SetCol(0);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("GuestID")));

m_mshfGuest.SetCol(1);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrGuest")));

m_mshfGuest.SetCol(2);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrName")));

m_mshfGuest.SetCol(3);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrCompany")));

s.Format("%d",irow);//Message1
::MessageBox(NULL,s,"警告",MB_OK | MB_ICONWARNING);

m_mshfGuest.SetCol(4);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrJZDZ")));

s.Format("%d",irow);//Message2
::MessageBox(NULL,s,"警告",MB_OK | MB_ICONWARNING);

m_mshfGuest.SetCol(5);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrCity")));

m_mshfGuest.SetCol(6);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrProvince")));

m_mshfGuest.SetCol(7);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrCode")));

m_mshfGuest.SetCol(8);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrCountry")));

m_mshfGuest.SetCol(9);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrZC")));

m_mshfGuest.SetCol(10);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrPhone")));

m_mshfGuest.SetCol(11);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrSubPhone")));

m_mshfGuest.SetCol(12);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrFax")));

m_mshfGuest.SetCol(13);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrEmail")));

m_mshfGuest.SetCol(14);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrBZ")));

m_mshfGuest.SetCol(15);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrURL")));

m_mshfGuest.SetCol(16);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrFTPIP")));

m_mshfGuest.SetCol(17);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrFTPUserName")));

m_mshfGuest.SetCol(18);
m_mshfGuest.SetText((char*)_bstr_t(m_adoRs->GetCollect("ChrFTPPassword")));

m_adoRs->MoveNext();
irow++;

}

}
catch (_com_error &e)
{
CString str=(char*)e.Description();
//::MessageBox(NULL,str,"提示",MB_OK | MB_ICONWARNING);
}
}


UpdateData(FALSE);
}
为什么我的代码只能执行到//Message1.而执行不到//Message2呢
大家给看看啊。谢谢
...全文
54 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
abcsdk 2003-10-23
  • 打赏
  • 举报
回复
学习
xiaohu9711 2003-10-23
  • 打赏
  • 举报
回复
怎么返回的还是-1!为什么呢?
spwnihao 2003-10-20
  • 打赏
  • 举报
回复
我没有看到你的Message1和Message2
但是我发现了你的一个错误,看看这个错误是不是引起的原因
m_mshfGuest.SetRows(m_adoRs->RecordCount+3);
m_adoRs->RecordCount这个属性是不能得到结果集中的条数的
你要想通过这种方法得到条数
必须这么做
while(!m_adoRs->adoEOF)
{
m_adoRs->MoveNext();
}
m_adoRs->MoveFrist();
然后通过这个方法就可以得到结果集中的条数
int lCount = m_adoRs->GetRecordCount();
孤必有邻 2003-10-19
  • 打赏
  • 举报
回复
可能是执行到中间时,出现了一个异常,所以函数就结束了吧

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧