学习VC是一个艰难的过程。如果在学习的过程中遇到一些经验人士为你指点一二,那么一切都变的那么简单,这里我收录了一些在学习使用VC过程中积累的经验,以期与大家共同进步。
1、取得系统时间
方法:
SYSTEMTIME systime;
::GetSystemTime(&systime);
CTime time(systime);2、在程序中添加ODBC数据源
方法:使用SQLConfigDataSource函数。例如:
SQLConfigDataSource(NULL,ODBC_ADD_DSN,
(LPSTR)"SQL Server",
(LPSTR)"DSN=medicine1998\0"
"SERVER=DEC\0"
"DATABASE=medicine1998\0"))
//添加一个ODBC数据源,其类型为
//SQL Server,服务器为DEC,名字为medicine1998,
//数据库为medicine1998
3、在Visual C++中使用DBGrid控件的方法
(1)、插入一个MicrosoftRemoteData控件;
(2)、设定其DataSource为所需要的ODBC数据源;
(3)、设定用户名和密码;
(4)、写入SQL查询语句;
(5)、插入一个DBGrid控件;
(6)、设定为绑定方式;
(7)、设定其绑定的数据源为前面插入的Microsoft-RemoteData控件的ID;
(8)、由于只能修改前两列的列头显示(至少我不知道如何去修改第3列),所以为了重新设定每一列的列头显示,同时也是为了指定显示的列,应该修改前面MicrosoftRemoteData控件中的查询语句,指定获取列和更改列名,例如:select name as 姓名,phone as 电话 from address。此语句就是从表address中选取name和phone两列,并指定了显示的列名为“姓名”和“电话”。
4、在ODBC编程中,在过滤器中可以用参数取代过滤字符串,以便在运行时动态改变过滤器,但是该参数必须用如下方法声明:
(1)在记录集的定义中添加成员参数:
class CStudentSet : public CRecordset
{
// Field/Param Data
//{{AFX_FIELD(CStudentSet, CRecordset)
CString m_strFirstName;
CString m_strLastName;
CString m_strStudentID;
CString m_strGradYear;
//}}AFX_FIELD
CString m_strGradYrParam; //成员参数
};
(2)改变在CPP文件中的DoFieldExchange成员函数,并且对每一个你添加在类中的成员参数都调用一次RFX函数,如下:
pFX->SetFieldType( CFieldExchange::param );
//指示以下给出的是参数绑定
// RFX calls for parameter data members
//在此处加入RFX调用:
pFX->RFX_Text(pFX,"bookname", m_strGradYrParam);
其中,bookname是要在其上添加参数的列名,后面是参数名。
(3)在你的recordset类的构建函数中,增加反映参数个数的m_nParams成员变量的值。
(4)然后可以在你的SQL过滤串中以“?”代替可变过滤参数了,这种对应是一一对应的,即“?”的顺序要严格遵守RFX调用的顺序。然后给出过滤参数的值,就可以用此值代替“?”了。注意,该过滤参数的值一定要在数据源打开之前给定