首页| 论坛| 消息

标题:一个用于完成模糊检索数据表的类
作者:sundp
日期:2009-01-16 20:12
内容:

这是个用于完成模糊检索的类。在数据库编程中经常会用到这种功能,提交一个简短的关键字检索指定表后,如果符合要求的记录多于一个,则弹出一个窗口,把符合要求的记录列出来供用户选择。
对外接口的函数是 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();
}


#1 [khb2000 02-05 11:27]
谢谢分享!谢谢分享!谢谢分享!谢谢分享!谢谢分享!
#2 [khb2000 02-05 11:28]
谢谢分享!谢谢分享!谢谢分享!谢谢分享!
#3 [紫露霜凝 03-09 16:53]
楼主还在关注此帖吗?我怎么运行以上实例出现了错误,说什么内存不可读,这是什么原因啊。先谢过啦!
#4 [jwqacqy 12-03 10:25]
哈哈谢谢楼主 根据楼主的方法 我这边也实现了模糊搜索我也贴下一点愚见:
void Insert::search_data()
{
QSqlQuery query;
query.prepare("select number,style from product where name like '%"+line1->text()+"%'");; //line1->text() 这里输入数据
//query.addBindValue(line1->text());//此时不能再绑定值
query.exec();
query.next();
qDebug()

回复 发表
主题 版块