ADO控件的使用

#include "_recordset.h"
#include "field.h"
#include "fields.h"
/
#include "columns.h"
#include "column.h"

public:
	C_Recordset *m_pSet;
	C_Recordset m_Recordset;
	CFields m_Fields;
	CField m_Field;

///
//由CAdodc对象m_Ado调用类成员函数得到相应的记录集,然后赋给记录集对象
	CAdodc	&m_Ado=m_Cado;
	CDataGrid &m_DataGrid=m_CDataGrid;
	//CDataGrid	m_CDataGrid;
	m_Recordset = m_Ado.GetRecordset();
	//调用成员函数定位到第一条记录
	m_Recordset.MoveFirst();
	//定义列集对象
	CColumns m_Columns = m_DataGrid.GetColumns();
	//声明列对象
	CColumn m_Column;
	//增加三列,因为在VC++中,DataGrid控件在设计阶段只提供两列进行设置,若有更多
	//的列,则应在程序中实现,后续代码主要完成这个任务。
	m_Columns.Add(2);
	//m_Columns.Add(3);
	//m_Columns.Add(4);
	//获得第0列对象,然后设置其宽度,标题和绑定的字段
	m_Column = m_Columns.GetItem(COleVariant(long()));
	m_Column.SetWidth(50);
	m_Column.SetCaption("学号");
	m_Column.SetDataField("ID");
	//获得第1列对象
	m_Column = m_Columns.GetItem(COleVariant(long(1)));
	m_Column.SetWidth(50);
	m_Column.SetCaption("姓名");
	m_Column.SetDataField("Name");
	m_Column = m_Columns.GetItem(COleVariant(long(2)));
	m_Column.SetWidth(20);
	m_Column.SetCaption("年龄");
	m_Column.SetDataField("Age");
	//重新与数据表绑定,然后执行刷新操作
	m_DataGrid.ReBind();
	m_DataGrid.Refresh();

	return TRUE;  // return TRUE  unless you set the focus to a control
}
///

void CTryADOControlDlg::OnBtnFindbyname() 
{
	CAdodc	&m_Ado=m_Cado;
	CDataGrid &m_DataGrid=m_CDataGrid;
	///
	COleVariant m_OleVariant;
	//由记录对象调用成员函数得到当前记录的字段集,然后赋给字段集对象
	m_Fields = m_Recordset.GetFields();
	BOOL m_Found = false;
	//设置一个布尔变量,m_nFound的作用是给出是否有该学生信息的判断条件
	BOOL m_nFound = true;
	//BOOL m_End = true;
	m_Recordset.MoveFirst();
	//while语句实现学生的查找,循环条件是还有到达记录集的末尾
	while(!m_Recordset.GetEof()&&!m_Found)
	{	//获得第2个字段对象(学生名称)
		m_Field = m_Fields.GetItem(COleVariant(long(1)));
		//获得该字段值
		m_OleVariant = m_Field.GetValue();
		//将控件的值传给变量
		UpdateData(true);
	    //定义字符类对象,取值为用户输入的学生名称
		CString m_Str = m_Edit;
		//删除左右空白字符
		m_Str.TrimLeft();
		m_Str.TrimRight();
		//将OLE变量值赋给字符串类对象
		CString m_OleStr = m_OleVariant.bstrVal;
		//删除左右空白字符
        m_Str.TrimLeft();
		m_Str.TrimRight();
		//若两个字符串相等,则给出提示
		if(m_OleStr == m_Str)
			if(MessageBox("已经找到该学生信息,是否继续找同名学生?",
				                                "提示!",MB_OKCANCEL)!=IDOK)
			{ //若用户单击【取消】按钮,终止查找,否则继续查找下一个同名学生
			  //注意m_nFound值的设置
				m_Found = true;
				m_nFound = false;
				break;
			}
			else
			{	m_nFound = false;    }
			//查找下一条记录
			m_Recordset.MoveNext();
	}
	//若m_nFound值为true,则给出没有该学生信息的提示
	if(m_nFound)
		MessageBox("没有该学生的信息?","提示!",MB_OK);
	//若到达记录集的末尾,则重新定位到第一条记录
	if(m_Recordset.GetEof())
     m_Recordset.MoveFirst();

	
}

void CTryADOControlDlg::OnButtonFirst() 
{
m_Recordset.MoveFirst(); //定位到第一条记录 	
}

void CTryADOControlDlg::OnButtonLast() 
{
m_Recordset.MoveLast(); //定位到最后一条记录	
}

void CTryADOControlDlg::OnButtonPre() 
{
//若没有到达记录集开头,则移到前一条记录,此时若是记录集开头,则移到下一条记录
	if(!m_Recordset.GetBof())
	{  m_Recordset.MovePrevious();
		if(m_Recordset.GetBof())
	        m_Recordset.MoveNext();
	}
	
}

void CTryADOControlDlg::OnButtonNext() 
{
// 若没有到达记录集末尾,则移到下一条记录,此时若是记录集末尾,则前移一条记录
	if(!m_Recordset.GetEof())
	{	m_Recordset.MoveNext();
		if(m_Recordset.GetEof())
			m_Recordset.MovePrevious();
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值