救我!搞了成晚都不行 DataGrid控件, ADODC控件 和 _ConnectionPtr

petpetg 2003-08-10 11:17:57
说明:
m_ccdatagrid1 是DATAGRID1的绑定变量.
m_pRs 是一个_ConnectionPtr 并已成功赋值.
m_ccadodc1 是ADODC1的绑定变量.


问题1
为什么我用以下代码datagrid没反应的?

m_ccdatagrid1.SetRefDataSource(NULL);
m_ccdatagrid1.SetRefDataSource((LPUNKNOWN)m_pRs);
m_ccdatagrid1.Refresh();


问题2

把GATAGRID连到ADODC之后,并对成功对ADODC初始化,在DATAGRID中能显示数据.
我初始化用的是:
m_ccadodc1.SetRecordSource(.....);
m_ccadodc1.Refresh();
但怎样对ADODC1进行操作啊,譬如增加,修改,查找定位?我在m_ccadodc1中找不到
additem,find,move等方法.



最后一个问题DATAGRUID控件绑定_ConnectionPtr对象好?还是绑定ADODC控件好?
哪样才是正路
...全文
37 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
petpetg 2003-08-19
  • 打赏
  • 举报
回复
唉,datagrid控件还是有问题,最后还是用回了flexgrid控件了,呜呜呜~~
最后感谢各位的不惜赐教.
sxslyy 2003-08-13
  • 打赏
  • 举报
回复
问题1:这句是最重要的m_pRecordset->CursorLocation=adUseClient;
这样能使记录集可以成为数据源,不知你有没有这句,
个人认为用ADO对象好一些;

最后的问题在于一定要用Classwiard来生成控制变量,而不要用手工生成类对象,或是由于你反复删除再加入DATAGRID控件或是ADO控件,你可完全删除两者,重新再加入这两个控件,顺序是先
DATAGRID后ADO.
petpetg 2003-08-12
  • 打赏
  • 举报
回复
有人帮我吗?
petpetg 2003-08-12
  • 打赏
  • 举报
回复
又出乱子了!当给一个DATAGRID控件添加绑定变量时,弹出对话框说我的font.h文件改动过等之类的话.在写代码时给DATAGRID控件的变量加点后没有提示的方法弹出来.应该不是系统有问题吧,以前的变量就加点后有提示,新加的就没.

还有就是build时LEDISP2.CPP文件无缘无故出了十几行错误.
有人遇到过这种情况吗?
petpetg 2003-08-11
  • 打赏
  • 举报
回复
to sxslyy(孤松傲雪):

你问题一的方法不行啊,你跟我的代码差不多只是在
m_grid.SetRefDataSource((LPUNKNOWN)m_pRecordset.Detach());
这行中多了个.Detach() ,但一运行就出错.


你觉得DATAGRUID控件绑定_ConnectionPtr对象好?还是绑定ADODC控件好呢?你是怎样做的?
上次只给了你10分,太少了,对不起哦
sxslyy 2003-08-11
  • 打赏
  • 举报
回复
问题2:
m_ado.SetRecordSource("SELECT Name FROM Studs");
m_ado.Refresh();

C_Recordset rcd=m_ado.GetRecordset();
rcd.MoveFirst();//第一行
CFields flds=rcd.GetFields();
CField fld=flds.GetItem(_variant_t((long)0));//第三列
m_name=(fld.GetValue()).bstrVal;//a就是你要找的第一行第三列的值
UpdateData(false);
sxslyy 2003-08-11
  • 打赏
  • 举报
回复
问题1:
theApp.pMyConnect.CreateInstance(__uuidof(Connection));
theApp.pMyConnect->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\Stud.mdb","","",adModeUnknown);

m_pRecordset.CreateInstance(__uuidof(Recordset));

m_pRecordset->CursorLocation=adUseClient;
m_pRecordset->Open("SELECT * FROM Studs", // 查询DemoTable表中所有字段
theApp.pMyConnect.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
m_grid.SetRefDataSource((LPUNKNOWN)m_pRecordset.Detach());
csuxiong 2003-08-11
  • 打赏
  • 举报
回复
我也是这么用的,运行的很好呀,贴给你看看:
m_gridban1.SetAllowAddNew(FALSE);
m_gridban1.SetAllowDelete(FALSE);
m_gridban1.SetAllowUpdate(FALSE);

m_pConnection.CreateInstance("ADODB.Connection");
try
{
m_pConnection->Open("Provider=Microsoft Jet 4.0 OLE DB Provider;DataSource=e:\\lgmq.mdb",
"","",adModeUnknown);
}
}
catch(_com_error &e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
pRst.CreateInstance("ADODB.Recordset");
pRst->CursorLocation=adUseClient; //这两句不能删除


try
{
//pRst->Open("select * from datatable",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

pRst->Open("SELECT * FROM 班报", m_pConnection.GetInterfacePtr(), adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error * e)
{
AfxMessageBox(e->ErrorMessage());
}


m_gridban1.SetCaption("班数据");
m_gridban1.SetRefDataSource(NULL);
m_gridban1.SetRefDataSource( (LPUNKNOWN) pRst );
}
casinosun 2003-08-11
  • 打赏
  • 举报
回复
adodc好,可以addnew,del查msdn

4,011

社区成员

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

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