我想根据程序传递过来的一个string变量(这是个地址)
查询数据库中有相同地址的纪录,我的数据库是一对多的纪录,就是table1可能对应多个table2纪录
所以需要类似于这样
m_strfilter = "table1.addr = table2.addr = str"
我这样写了以后调用requery(),怎么发现还是查找了数据库头一行的纪录,和我的要求不符,请问应该怎么写这样的语句在vc中
谢谢!!
查询数据库中有相同地址的纪录,我的数据库是一对多的纪录,就是table1可能对应多个table2纪录
所以需要类似于这样
m_strfilter = "table1.addr = table2.addr = str"
我这样写了以后调用requery(),怎么发现还是查找了数据库头一行的纪录,和我的要求不符,请问应该怎么写这样的语句在vc中
谢谢!!
解决方案 »
- 我是初学者。。。这是我的第一个问题。。。先谢谢大家。。。
- 高手请教:windows文件系统驱动项目
- 如何找回相片文件
- 今天在江苏软件园面试
- 我要做一个网络管理软件,有一个软件下载功能,请问用SNMP协议可以吗,还是用TCP/IP,请指教。
- 学VC大半年了,还是只会ClassWizard,我该怎么办,希望能得到大虾的指点
- 请各位推荐几本学习ActiveX的书籍?
- 关于VC调用VB制作的ActiveX OCX的问题:
- vs2010中使用MSFlexGrid的问题
- vs2015能配置opencv2.4.9吗?
- 大家说说联众的斗地主游戏,当四个玩家都坐下了,那发牌是服务器发牌还是玩家自己发牌(比如第一个做下的发牌),
- 给错分了,补分
是否要在检索前,调用getdefaulatsql()这样的语句
待会问题解决了就结帖
if ( !m_pSet->Requery() ){
AfxMessageBox("Requery has failed");
return;
}
try{
m_pSet->MoveFirst();
}
catch( CDBException *e ){
AfxMessageBox("No records were found",MB_ICONEXCLAMATION);
e->Delete();
return;
}
照楼上的写法怎么还是找到数据库中第一个记录呢?莫非是movefirst不该用?请指教!谢谢!!
if ( m_pSet->IsBOF() && m_pSet->IsEOF() ){
return;
}
程序运行结果表示是有数据的,没有那样返回!我的default sql语句是查询整个数据库
CString CLUSSSet::GetDefaultSQL()
{
m_strFilter = "table1.Addr = table2.Addr";
return _T("[dbo].[table1],[dbo].[table2]");
}
现在要根据返回的str重新查数据库,只要返回addr是str的一些纪录就可以了
难道我上面那样改动m_strfilter不对?请指教,谢谢!!
导致在requery时,没有查询语句,从而使用了open(AFX_DB_USE_DEFAULT_TYPE,NULL),也就是查询了
默认的SQL语句
现在我应该怎么写这个filter,或是我怎么写这个open语句,下面报告where附近有语法错误
str1.Format("table1.Addr = table2.RSAddr and table1.Addr = '%s'",strAddr);
str = "select * from table1, table2 where ";
str += str1;
if ( m_pSet->IsOpen() ){
m_pSet->Close();
}
m_pSet->Open(CRecordset::dynaset,str);
谢谢!!