这是个用于完成
模糊检索的类。在
数据库编程中经常会用到这种功能,提交一个简短的关键字检索指定表后,如果符合要求的记录多于一个,则弹出一个
窗口,把符合要求的记录列出来供用户选择。
对外接口的函数是 sckwd::getValue,它的第一个参数是一个QSqlQuery *,一个有效执行的select语句,第二个参数指定传送过来的Query将有几列被用于显示,第三个以后的参数用于指定弹出窗口的位置。此函数被重载,用于不同的指定窗口位置的方式。我只完成了我常用的两种方式,其它方式留给有不同要求的兄弟们自己去完成吧;)
返回值是一个QStringList。如果送来的Query是空的,或用户在弹出窗口后按下ESC键,则返回一个空值,如果送来的Query只有一行,那么不弹出窗口,而直接返回那一行的值。如果Query多于一行,则弹出供选窗口,将用户按下ENTER键的那一行返回。
给一个使用此类的例子:
sckwd * sc=new sckwd();
sq="select pm,gg,dw,dj,lb from price where dh like '%"+edYpmc->text()+"%'";
sq1->exec(sq);
QStringList v;
v=sc->getValue(sq1,2,edYpmc->geometry().left(),edYpmc->geometry().top());
if(!v.isEmpty())
{
edYpmc->setText(v.value(0));
edGg->setText(v.value(1));
edDw->setText(v.value(2));
edDj->setText(v.value(3));
edCfsl->setFocus();
}
[ 此贴被sundp在2009-01-16 20:19重新编辑 ]