首先谢谢大家了~
因为数据库中数据会很多,所以需要用到查找功能来定位相关数据。
我希望是读取一个EDIT中的数据来查询相应的数据。
DDX_Control(pDX, IDC_EDIT_FINDIC, m_FindIC);
这个是我希望输入值得一个CEDIT控件。
然后在实际操作过程中,我曾经想过用filter来筛选,然后关闭数据库,再重新打开。
char buff[256];
char filter[256];
memset(buff,0,256);
memset(filter,0,256);
GetDlgItemTextA(GetSafeHwnd(), IDC_EDIT_FINDIC,buff,sizeof(buff)/sizeof(buff[0]));
memcpy(filter,"[编号]='",16); //filter是char[]
strcat(filter,buff); //buff是控件读取的char[]
strcat(filter,"'");
m_pSet->m_strFilter = filter;
m_pSet->Requery();
UpdateData(FALSE);
m_pSet->m_strFilter = "";
m_pSet->Close();
m_pSet->Open();
此时的确是显示我要的效果,但是如果我这个时候再调用下一项时,发现数据库其实定位在第一项的,调用后显示的是第二项数据。
m_pSet->MoveNext();
UpdateData(FALSE);
后来我又尝试想用OPEN()但是如下程序,效果和使用m_strfilter效果一样。
void CICPositionMachineView::OnBnClickedButtonCheckfind()
{
// TODO: 在此添加控件通知处理程序代码
char buff[256];
LPCTSTR wfilter;
memset(buff,0,256);
memset(filter,0,256);
GetDlgItemTextA(GetSafeHwnd(), IDC_EDIT_FINDIC,buff,sizeof(buff)/sizeof(buff[0]));
wfilter = _T("SELECT * FROM [ProductShow] WHERE [编号]='water12345'");
m_pSet->Close();
m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE, wfilter);
m_pSet->Requery();
UpdateData(FALSE);
}
因为VS2010中对LPCTSTR,char[]等类型调用相当严格。有些地方我也不是很了解。希望能帮帮忙,
再次表示感谢。