标题:如何查询任何时间的船员名单
只看楼主
hlhpla
Rank: 2
等 级:论坛游民
帖 子:60
专家分:59
注 册:2010-4-15
结帖率:100%
已结贴  问题点数:20 回复次数:12 
如何查询任何时间的船员名单
朋友们帮个忙:
   如何查询任何时间的船员名单,具体如下:
thisform.text.value是日期
船员表:中有 姓名,上船日期,离船日期
如果 : 离船日期不为空,说明船员已经不在船上,则select 姓名 from 船员表 where 上船日期<thisform.text.value<离船日期
如果:  离船日期为空,说明船员还在船上,则select 姓名 from 船员表 where 上船日期<thisform.text.value
具体代码怎么写啊???
我试着用
if not empty(离船日期)
 select 姓名 from 船员表 where 上船日期<thisform.text.value<离船日期
esle
  select 姓名 from 船员表 where 上船日期<thisform.text.value
endif
可是这样并不能正确显示结果.

请大家帮帮忙啊...

搜索更多相关主题的帖子: 船员 名单 时间 查询 
2010-04-26 10:58
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
得分:20 


if not empty(离船日期)  && 你这里的 离船日期 是"字符型"
select 姓名 from 船员表 where 上船日期<thisform.text.value<离船日期  && 你这里的 离船日期 原意应是"日期型"
esle
  select 姓名 from 船员表 where 上船日期<thisform.text.value
endif

=================================================
变量比较大小时, 首先其类型要一致, 否则编译时就通不过~~

假设你的thisform.text.value, 上船/离船日期 都是字符型~

要查询指定时间, 不在船上的船员名单, 代码如下:
  select 姓名 from 船员表 where !empt(离船日期);
        .and.betw(ctod(allt(thisform.text.value)),ctod(上船日期),ctod(离船日期))

要查询指定时间, 在船上的船员名单, 代码如下:
  select 姓名 from 船员表 where empt(离船日期) .and.ctod(allt(thisform.text.value))>=ctod(上船日期)

2010-04-26 12:58
hlhpla
Rank: 2
等 级:论坛游民
帖 子:60
专家分:59
注 册:2010-4-15
得分:0 
感谢回复!
我上/离船日期的是日期型的.....thisform.text.value是用日历选者后到文本框中的...应该也算日期型的吧
是不是就不用含数CTOD()了
还有上面代码中and 旁边要加2个点的吗?没有点可不可以?
2010-04-26 13:05
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
得分:0 
以下是引用hlhpla在2010-4-26 13:05:40的发言:

感谢回复!
我上/离船日期的是日期型的.....thisform.text.value是用日历选者后到文本框中的...应该也算日期型的吧
是不是就不用含数CTOD()了
还有上面代码中and 旁边要加2个点的吗?没有点可不可以?

1  ctod() 是字符转日期函数, 如果原就是日期型的, 就不需用这个函数~

2  and 两边的点, 可加可不加~

2010-04-26 13:22
hlhpla
Rank: 2
等 级:论坛游民
帖 子:60
专家分:59
注 册:2010-4-15
得分:0 
[要查询指定时间, 不在船上的船员名单, 代码如下:
  select 姓名 from 船员表 where !empt(离船日期);
        .and.betw(ctod(allt(thisform.text.value)),ctod(上船日期),ctod(离船日期))

要查询指定时间, 在船上的船员名单, 代码如下:
  select 姓名 from 船员表 where empt(离船日期) .and.ctod(allt(thisform.text.value))>=ctod(上船日期) ]

我是要查询任何日期的船员名单,不查不在船的船员名单
所以
2个select怎么联系起来啊?用IF..ELSE 连不起来啊
是直接
 select 姓名 from 船员表 where !empt(离船日期) and betw(thisform.text.value,上船日期,离船日期)
 select 姓名 from 船员表 where empt(离船日期) .and.thisform.text.value>=上船日期
这样吗?好象这样也不行,......
用do case也行....
2010-04-26 13:30
hlhpla
Rank: 2
等 级:论坛游民
帖 子:60
专家分:59
注 册:2010-4-15
得分:0 
用do case也不行
2010-04-26 13:31
hlhpla
Rank: 2
等 级:论坛游民
帖 子:60
专家分:59
注 册:2010-4-15
得分:0 
select 姓名 from 船员表 where !empt(离船日期) and betw(thisform.text.value,上船日期,离船日期) into cursor tmp
select 姓名 from 船员表 where empt(离船日期) .and.thisform.text.value>=上船日期 into cursor tmp

我先这样试试看行不行
2010-04-26 13:37
hlhpla
Rank: 2
等 级:论坛游民
帖 子:60
专家分:59
注 册:2010-4-15
得分:0 
第二个select的内容把临时表tmp中第一个select后的内容覆盖掉了.....
怎么办啊?
因为是查询任何日期在船的船员名单....所以覆盖掉查出来的结果就不正确了...怎么办好???
2010-04-26 14:30
hlhpla
Rank: 2
等 级:论坛游民
帖 子:60
专家分:59
注 册:2010-4-15
得分:0 
各位老师们:我在上面可能没说清楚
是如何查询任何时间的在船船员名单
thisform.text.value是日期
船员表:中有 姓名,上船日期,离船日期
如果 : 离船日期不为空,说明船员已经不在船上,则select 姓名 from 船员表 where 上船日期<thisform.text.value<离船日期
如果:  离船日期为空,说明船员还在船上,则select 姓名 from 船员表 where 上船日期<thisform.text.value

select 姓名 from 船员表 where !empt(离船日期)and betw(thisform.text.value,上船日期,离船日) into cursor tmp
select 姓名 from 船员表 where empt(离船日期) .and.thisform.text.value>=上船日期 into cursor tmp
所以2个select 出来的结果要同时放到临时表tmp中....该怎么办啊???直接这样...第二个select的内容把第一个select的内容覆盖掉了,得出的结果就不对了....
2010-04-26 14:48
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
得分:0 

闹不明白你到底要查询什么?? 要么查询在船的, 要么查询不在船的, 代码我在前面已写过了~  如果你只是要把 在船/不在船 分割一下, 代码如下:

select 姓名,"/ " 在船否 from 船员表 where !empt(离船日期) and betw(thisform.text.value,上船日期,离船日期) into cursor tmp
inse into tmp select 姓名,"在"  在船否 from 船员表 where empt(离船日期) .and.thisform.text.value>=上船日期
2010-04-26 14:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-304422-1-1.html




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

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