我有三个问题想问各位高人:
问题1.CMyRecordset按默认用odbc连接了一个数据库表,没什么特别的。在CMyRecordView中,我写了查询语句:
m_pSet->m_strFilter = "id = '" + m_sCgsId + "'";
if(! m_pSet->Requery()){
AfxMessageBox("查询失败");
m_pSet->m_strFilter = "";
m_pSet->Requery();
}
m_pSet->MoveFirst();
if(m_pSet->IsEOF())
AfxMessageBox("没查到数据");
else{ for(m_lCount = 0;! m_pSet->IsEOF();m_lCount++)
{
m_listCgsCode.InsertItem (m_lCount,m_pSet->m_xh);
m_listCgsCode.SetItemText(m_lCount,1,m_pSet->m_id);
m_listCgsCode.SetItemText(m_lCount,2,m_pSet->m_name);
m_pSet->MoveNext();
}
}
如果数据库中的id有“京A”,我输入“京A”(既是m_sCgsId=京A ),将会很正常的查
出来了,但要是输入“京”(一句话,就是数据库中没有的值),就回弹出“试图越过数据的有效存储区间。”,之后就不管输入什么都是弹出这个了。
问题2.
我想将上面的
m_pSet->m_strFilter = "id = '" + m_sCgsId + "'";
改为m_pSet->m_strFilter = "id = '" + m_sCgsId + "'" + “?”;
以达到模糊查询的目的,但失败了,要该怎么写呢?
问题3.
我想用汉字的首字母达到查询的目的,如输入"j"就会查出如“竟,井,京”等值相关,该怎么写呢?
如能解决问题2或3,愿意再送200分。(我现在的可用分可只有370分)
问题1.CMyRecordset按默认用odbc连接了一个数据库表,没什么特别的。在CMyRecordView中,我写了查询语句:
m_pSet->m_strFilter = "id = '" + m_sCgsId + "'";
if(! m_pSet->Requery()){
AfxMessageBox("查询失败");
m_pSet->m_strFilter = "";
m_pSet->Requery();
}
m_pSet->MoveFirst();
if(m_pSet->IsEOF())
AfxMessageBox("没查到数据");
else{ for(m_lCount = 0;! m_pSet->IsEOF();m_lCount++)
{
m_listCgsCode.InsertItem (m_lCount,m_pSet->m_xh);
m_listCgsCode.SetItemText(m_lCount,1,m_pSet->m_id);
m_listCgsCode.SetItemText(m_lCount,2,m_pSet->m_name);
m_pSet->MoveNext();
}
}
如果数据库中的id有“京A”,我输入“京A”(既是m_sCgsId=京A ),将会很正常的查
出来了,但要是输入“京”(一句话,就是数据库中没有的值),就回弹出“试图越过数据的有效存储区间。”,之后就不管输入什么都是弹出这个了。
问题2.
我想将上面的
m_pSet->m_strFilter = "id = '" + m_sCgsId + "'";
改为m_pSet->m_strFilter = "id = '" + m_sCgsId + "'" + “?”;
以达到模糊查询的目的,但失败了,要该怎么写呢?
问题3.
我想用汉字的首字母达到查询的目的,如输入"j"就会查出如“竟,井,京”等值相关,该怎么写呢?
如能解决问题2或3,愿意再送200分。(我现在的可用分可只有370分)
id LIKE 京%
好像可以模糊查询吧
m_pSet->m_strFilter = "id like '" + m_sCgsId + "'" + "%";
都不行
m_pSet->m_strFilter = "id like '" + m_sCgsId + "'" + "%";
都不行,该怎么写?
m_sCgsId += "%";
m_pSet->m_strFilter = "id like '" + m_sCgsId + "'";
刚才上面是怎么错了,我不甘心。
function GetPYIndexChar( hzchar:string):char;
begin
case WORD(hzchar[1]) shl 8 + WORD(hzchar[2]) of
$B0A1..$B0C4 : result := 'A';
$B0C5..$B2C0 : result := 'B';
$B2C1..$B4ED : result := 'C';
$B4EE..$B6E9 : result := 'D';
$B6EA..$B7A1 : result := 'E';
$B7A2..$B8C0 : result := 'F';
$B8C1..$B9FD : result := 'G';
$B9FE..$BBF6 : result := 'H';
$BBF7..$BFA5 : result := 'J';
$BFA6..$C0AB : result := 'K';
$C0AC..$C2E7 : result := 'L';
$C2E8..$C4C2 : result := 'M';
$C4C3..$C5B5 : result := 'N';
$C5B6..$C5BD : result := 'O';
$C5BE..$C6D9 : result := 'P';
$C6DA..$C8BA : result := 'Q';
$C8BB..$C8F5 : result := 'R';
$C8F6..$CBF9 : result := 'S';
$CBFA..$CDD9 : result := 'T';
$CDDA..$CEF3 : result := 'W';
$CEF4..$D188 : result := 'X';
$D1B9..$D4D0 : result := 'Y';
$D4D1..$D7F9 : result := 'Z';
else
result := char(32);
end;
end;这个是DELPHI的一个函数,道理应该是一样的,你看看