一个关于查询后的问题!!!在线等…………

AngeloLee 2003-05-27 12:32:23
现有表A ,字段:编号,客户编号,上月指数,本月指数 , 时间…………
表A中数据如下:
1 1101 20 30 2003-04-07
2 1102 80 90 2003-05-07
3 1101 30 80 2003-05-07
4 1101 80 110 2003-06-07
现在想从form上通过“客户编号”字段,查找有关信息---本月指数。(在form上“本月指数”也就是“上月指数“。)
因为用locate for 语句只能找到相同的第一条记录,而我现在想得到的是”客户编号”为‘1101‘ 的最后一条记录。然后取出“本月指数”字段的值。

请问 ,我该如何解决此问题????Thanks!
...全文
83 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CQhero 2003-06-01
  • 打赏
  • 举报
回复
是的!重庆的!

同意楼上凌霄
xiolig 2003-05-31
  • 打赏
  • 举报
回复
TO CQhero: 重庆的?
SELECT TOP 1 本月指数 FROM 数据表;
ORDER BY 时间 DESC WHERE 客户编号=="1101"
AngeloLee 2003-05-30
  • 打赏
  • 举报
回复
你的第一种方法教好!
CQhero 2003-05-28
  • 打赏
  • 举报
回复
一条命令搞定哟:

SELECT * from A ORDER BY 时间 DESC TOP 1
AngeloLee 2003-05-27
  • 打赏
  • 举报
回复
不知道这样写可不可以:
locate for A.客户编号=1101
if found()
go botton
x=A.本月指数
endif
xiolig 2003-05-27
  • 打赏
  • 举报
回复
在未找到更好的办法之前,编写一段代码如何?
方法一:
LOCAL lnResult
LOCATE FOR 客户编号=='1101'
DO WHILE FOUND()
lnResult = 本月指数
CONTINUE
ENDDO
IF VARTYPE(lnResult)#"N"
MESSAGEBOX("查找失败!")
ENDIF
方法二:
GOTO BOTTOM
DO WHILE !BOF() AND "客户编号"#"1101"
SKIP -1
ENDDO
IF BOF()
MESSAGEBOX("查找失败")
ENDIF



guangyinsuipian 2003-05-27
  • 打赏
  • 举报
回复
用游标吧。
xiolig 2003-05-27
  • 打赏
  • 举报
回复
To AngeloLee: 用你的思路应该写成这样:
SET FILTER TO 客户编号="1101"
GOTO BOTTOM
IF !EOF()
x = 本月指数
ENDIF
* SET FILTER TO

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧