| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 812 人关注过本帖
标题:求助 一个查询表单的问题
只看楼主 加入收藏
congzhendong
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-2-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
求助 一个查询表单的问题
小弟在做一个小小的书籍管理系统
现在遇到一个关于 查询表单的问题
表单 包括 一个combo 一个text 和 两个命令按钮 一个叫查询 一个叫退出
combo 包括 9个选项 7个字段是 字符型 另外两个是逻辑型 的
我不知道逻辑型的两个字段改如何做查询 希望高手帮帮忙

还有就是 如何能让弹出的查询结果的窗口可以直接更改其中的内容

另外就是我的程序执行中 查不到记录的时候不提示我写的messagebox的内容 而是直接显示一个空的表

请各路高手帮忙看看吧 谢谢

查询按钮的 代码如下

if empty(thisform.Text1.value)=.f.
go top
a=
b=alltrim(thisform.Text1.value)
local c as integer
  if a="编号"
     Select * from 书目信息表 where 编号 like '%'+b+'%'
     sele 书目信息表
     c=reccount()
     if c<1
       use
       messagebox("数据库中不存在您所要查询的记录",16,"系统提示")
        ()
       return
     ENDIF     
  endif

if a="作者"
     Select * from 书目信息表 where 作者 like '%'+b+'%'
     sele 书目信息表
     c=reccount()
     if c<1
       use
       messagebox("数据库中不存在您所要查询的记录",16,"系统提示")
        ()
       return
     ENDIF     
  endif
             if a="作者译名"
                Select * from 书目信息表 where 作者译名 like '%'+b+'%'
                sele 书目信息表
                c=reccount()
                  if c<1
                   use
                    messagebox("数据库中不存在您所要查询的记录",16,"系统提示")
                    ()
                    return
                  ENDIF     
             endif   

             if a="作品名称"
                Select * from 书目信息表 where 作品名称 like '%'+b+'%'
                sele 书目信息表
                c=reccount()
                  if c<1
                   use
                    messagebox("数据库中不存在您所要查询的记录",16,"系统提示")
                    ()
                    return
                  ENDIF     
             endif   

             if a="出版信息"
                Select * from 书目信息表 where 出版信息 like '%'+b+'%'
                sele 书目信息表
                c=reccount()
                  if c<1
                   use
                    messagebox("数据库中不存在您所要查询的记录",16,"系统提示")
                    ()
                    return
                  ENDIF     
             endif   

             if a="光盘名称"
                Select * from 书目信息表 where 光盘名称 like '%'+b+'%'
                sele 书目信息表
                c=reccount()
                  if c<1
                   use
                    messagebox("数据库中不存在您所要查询的记录",16,"系统提示")
                    ()
                    return
                  ENDIF     
             endif   

             if a="评分"
                Select * from 书目信息表 where 评分 == b
                sele 书目信息表
                c=reccount()
                  if c<1
                   use
                    messagebox("数据库中不存在您所要查询的记录",16,"系统提示")
                    ()
                    return
                  ENDIF     
             endif  

                if a="是否刻盘"
                Select * from 书目信息表 where 是否刻盘 = b
                sele 书目信息表
                c=reccount()
                  if c<1
                   use
                    messagebox("数据库中不存在您所要查询的记录",16,"系统提示")
                    ()
                    return
                  ENDIF     
             endif  

else
  messagebox("请输入要查找的内容!",16,"系统提示")
  thisform.Text1.value=""
  thisform.Text1.Setfocus
endif

斜体 带下划线的部分不会写了 是否刻盘 字段是逻辑型的  

 


[ 本帖最后由 congzhendong 于 2010-6-7 06:16 编辑 ]
搜索更多相关主题的帖子: 查询表 
2010-06-07 05:57
congzhendong
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-2-22
收藏
得分:0 
另行附上 已经完成的其他内容 请高手帮忙看看 现在就差查询的部分没搞定了
叶项目.rar (361.65 KB)

是不是可以开始连编了



[ 本帖最后由 congzhendong 于 2010-6-7 06:09 编辑 ]
2010-06-07 06:07
lycheeva
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:60
专家分:148
注 册:2010-5-16
收藏
得分:5 
叶项目.zip (436.86 KB)
我把查出来的内容放到一个临时表,这样就可以统计记录数了,还有那个逻辑型的字段,可以考虑单独使用一个组合框,这样可以嵌套查询

farmer
2010-06-07 13:12
congzhendong
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-2-22
收藏
得分:0 
谢谢 楼上的朋友
messagebox 的问题可以通过你的方式解决
可是还是不能再 查询的结果上直接更改 有什么办法吗

2010-06-07 21:58
congzhendong
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-2-22
收藏
得分:0 
问题依然没有全部解决
希望 各路高手 多多帮忙
顶上去先

2010-06-08 21:03
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
收藏
得分:5 

combo1的 逻辑型项 分解为2项, 比如: "是否刻盘" 分解为"已刻盘", "未刻盘"

再用筛选, 比如:

if a="已刻盘"
    Select * from 书目信息表 where 是否刻盘 =已刻盘的标识, 比如.t.
    ...
endif


if a="未刻盘"
    Select * from 书目信息表 where 是否刻盘 =未刻盘的标识, 比如.f.
    ...
endif


如果你要修改查询到的内容

1. 如果表单上有表格控件(grid), 将查询内容放到grid上, 可在grid上直接修改~

2. 如果表单没有表格控件(grid), 可用brow修改~ 例:

  if a="编号"
     Select * from 书目信息表 where 编号 like '%'+b+'%' into tabl tmp
     brow

2010-06-08 21:29
congzhendong
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-2-22
收藏
得分:0 
谢谢楼主的指点
关于逻辑型的查询得到了很好的解决
第二个问题是查询的结果可以更改了 但是我想要的是在更改查询结果临时表tmp的同时 自动同步更改数据源表 “书目信息表”

另有一个新的小问题 我在菜单中有一个菜单项叫 “浏览” 过程如下

set default to E:\叶项目
if !used("书目信息表") &&如果""表没打开,打开它;如果已经打开,则选择它
USE E:\叶项目\书目信息表
else
* INDEX ON & 作者
* SELECT * FORM 书目信息表 ORDER BY 作者,作者译名,作品名称
ENDIF
browse
return

我想在打开表 浏览的同时 按作者名称排序 可是试了 星号后的两个句子都有问题 应该如何解决
再有就是 查询结果的表 tmp 有了内容以后 在点 浏览 时显示的就变成了 tmp的内容了 是什么原因呢

2010-06-09 22:37
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
收藏
得分:5 
本身你这个IF……ELSE……ENDIF就有问题,按你的写法,如果文件没打开,那么你就只是打开文件,然后执行BROWS,而ELSE后面的那两行就不执行了。
SELECT得到的临时表应该是默认的当前区,此时Brows的内容当然就是临时表的内容了

[ 本帖最后由 啸凡 于 2010-6-10 16:59 编辑 ]

两人行已有我师……
2010-06-10 16:53
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
收藏
得分:5 

8楼正解~


或直接:

set default to E:\叶项目
SELECT * From 书目信息表 ORDER BY 作者,作者译名,作品名称  && 是from, 不是form  
return
2010-06-10 18:52
快速回复:求助 一个查询表单的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.124347 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved