CRecordSet

starmoon 2000-02-23 12:21:00
i want to receive the data use the recordset
exec like "select * from student where ages=23"
where i can put the m_nParam,m_strFilter,the Rfx(..) and so so,
the best is sample,
...全文
497 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oo 2000-02-24
  • 打赏
  • 举报
回复
you can add a member function do that.
starmoon 2000-02-23
  • 打赏
  • 举报
回复
thanks a lot,
the realy problem is
i derieved a class like CStudent from CRecordset use the class wizard.
i want to exec the sql like "select * from the student where ages = certenage",i want to throh modify the member verible or member function of CStudent ,how and where can i do this .not in the program.
dengdun 2000-02-23
  • 打赏
  • 举报
回复
先定义一个你自己的CRecordSet类的实例rs,然后调用
rs.m_strFilter=...;
rs.m_m_nParam=...;
最后,在rs.Open()或rs.Requery();
sintony 2000-02-23
  • 打赏
  • 举报
回复
for (int i = 0; i < pDoc->m_nFields; i++) {
var = m_pSet->GetFieldValue(i);
switch (var.vt) {
case VT_BSTR:
str = (LPCSTR) var.bstrVal; // narrow characters in DAO
break;
case VT_I2:
str.Format("%d", (int) var.iVal);
break;
case VT_I4:
str.Format("%d", var.lVal);
break;
case VT_R4:
str.Format("%10.2f", (double) var.fltVal);
break;
case VT_R8:
str.Format("%10.2f", var.dblVal);
break;
case VT_CY:
str = COleCurrency(var).Format();
break;
case VT_DATE:
str = COleDateTime(var).Format();
break;
case VT_BOOL:
str = (var.boolVal == 0) ? "FALSE" : "TRUE";
break;
case VT_NULL:
str = "----";
break;
default:
str.Format("Unk type %d\n", var.vt);
TRACE("Unknown type %d\n", var.vt);
}
pDC->TextOut(x, y, str);
x += pDoc->m_arrayFieldSize[i] * m_nCharWidth;
}
sintony 2000-02-23
  • 打赏
  • 举报
回复
CDaoDatabase m_database; //CDaoRecordset和CRecordset原理上是一样的
CDaoRecordset* m_pRecordset;

CStringArray m_arrayFieldName;
CWordArray m_arrayFieldSize;

m_strConnect = "ODBC;";
m_database.Open("Odbc名", FALSE, TRUE, m_strConnect);

m_strQuery.Format("select * from [%s]","student" ); //select * from student where ages=23
m_pRecordset = new CDaoRecordset(&m_database);
m_pRecordset->Open(dbOpenDynaset, m_strQuery, dbReadOnly);

m_nFields = (int) m_pRecordset->GetFieldCount();
m_arrayFieldName.SetSize(m_nFields);
m_arrayFieldSize.SetSize(m_nFields);
CDaoFieldInfo fi;
for(int i = 0; i < m_nFields; i++) {
m_pRecordset->GetFieldInfo(i, fi);
m_arrayFieldName[i] = fi.m_strName;
m_arrayFieldSize[i] = (short) max(min(fi.m_lSize, 50),fi.m_strName.GetLength());
TRACE("field name = %s\n", fi.m_strName);
}

当然如果你的数据库格式不需要通用的话,最简单的方法使用vc的New Class继承CRecordset选择数据库,这样他会自动建立和数据的联系
通过member variables。
oo 2000-02-23
  • 打赏
  • 举报
回复
pSet->m_strFilter = "ages = 23";
pSet->Requery();
(pSet:pointer of your recordset)
这样应该就可以了。
Sniper 2000-02-23
  • 打赏
  • 举报
回复
what is your problem? 说中文是不是清楚一点?

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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