| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4114 人关注过本帖
标题:关于表单中“上一条”“下一条”的功能问题
取消只看楼主 加入收藏
chunhe
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-15
收藏
 问题点数:0 回复次数:12 
关于表单中“上一条”“下一条”的功能问题

各位高手,小妹现在有一个问题请教各位:我做了一个表单,数据环境包含两个表,一个父表,一个子表,都有“编号”字段,以“编号”作为索引连接,“编号”含数字和汉字,父表的“编号”是按顺序编排的没有重复,没问题。关键是子表的内容不是按父表的内容时间顺序添加的,会有重复,所以就可能发生子表新加的一条记录的“编号”不是最大一个编号而其记录号是最大的
例如原来有2005年重点-123和2007年重点-221两条记录,新添加2006年重点-020,这样2005年重点-123的记录号是1,2007年重点-221的记录号是2,2006年重点-020的记录号是3。当子表以“编号”排序浏览时,第一条是2005年重点-123,第二条是2006年重点-020,第三条是2007年重点-221,可“下一条”的按钮在第二条时就显示到最后一条了不能再往下了,但“末记录”的功能没问题,各代码如下:
“上一条”的Click代码:

*——如果到了数据表首部
IF BOF().or.recno()=1
MESSAGEBOX("已到首记录",48,"移动记录")
ELSE
*——如果数据指针不位于数据表首部
skip-1
ENDIF
*——刷新表单
thisform.Refresh

“下一条”的Click代码:

*——如果记录指针位于数据表末尾
IF EOF().or.recno()=RECCOUNT()
MESSAGEBOX("已到末记录",48,"移动记录")
ELSE &&记录指针下移
SKIP
ENDIF
*——刷新表单
thisform.Refresh

我曾想把“上一条”“下一条”按钮的代码以比较子表里的现有“编号”大小是否最大或最小判断是否移动到上一条、下一条。可是怎么求出“编号”字段的最大和最小一个呢?

另外,问一下,表的索引排序中有“mashine”,是按什么规则排序的?是ASC码?我选择“pingyin”,可它会自动又变成“mashine”,保存不住。为什么?

搜索更多相关主题的帖子: 表单 功能 数字 顺序 环境 
2007-08-17 17:00
chunhe
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-15
收藏
得分:0 

真的没有直接解决的办法啊!
昨天跑到图书大厦买了张老师的书,Visual FoxPro 6.0~9.0解决方案与范例大全,才知道张老师是何许人也,好厚的一本书啊,以后要好好研读。

主要是所有纸的东西都是这么编号的,只能延续以前的做法,否则,老师傅们就看不懂了,工作就更乱套了,只能迁就他们了。

谢谢,啸大哥!我回头把所有编号用数字编排一下,作为我的数据库用,打印的时候再连接字符串编号。

再请问,1. 我的数据库有三个表呢,我是在父表里一一对应数字编号和字符串编号好呢?还是在每个表里都设有数字编号字段和字符串编号字段好呢?如果是第一种方式,可减少重复字段,但各表单、报表的查询、修改、打印等都得连接父表了,会不会容易出错啊?第二种方式很笨,会减少出错的麻烦吗?
2.现在我的表只有父表的编号是唯一的,子表也都是这些编号,但是都有重复编号的记录,子表里没有无重复的字段,这么做对后面的程序设计有隐患吗?需不需要在子表中再各设个编号的字段,使每条记录都有自己独一无二的编号?

2007-08-20 09:36
chunhe
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-15
收藏
得分:0 

谢谢,啸大哥!小妹明白了。我这是头一回编数据库,知识不全,经验更是没有。以后还会有问题请教的,请多指教!

“mashine”的问题昨天看张老师的书看明白了。

再有一个问题,昨天用min(skqk.工程号代码)语法不对,skqk是表名,“工程号代码”是我改成纯数字的编号字段。我也知道min()得把比较的各表达式列出来,可怎么才能求出编号字段中最小、最大的一个是多少呢?不可能一个一个都列在参数里。

2007-08-21 13:22
chunhe
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-15
收藏
得分:0 
谢谢!我是看书上有一个例子,它做的查询表单直接用min(表名.字段名)as显示名称 就可以在表单上显示最高分和最低分。我还以为在程序中也可以这么写呢。
真够麻烦的,要是VF直接有这么个函数就好了。
谢谢了,回去编程序试试。
2007-08-23 12:29
chunhe
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-15
收藏
得分:0 
哈哈,求最大最小编号试验了一下——成功!用scan也不怎么麻烦。晚上回去正式编程序试试看能否解决了我的“上一条”“下一条”的问题。

我安装的是VF9.0汉化,可是帮助文件还都是英文的,看起来好麻烦。
花花公子的VF帮助文件是中文的吗?哪里有中文版的?

2007-08-23 13:21
chunhe
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-15
收藏
得分:0 

又出问题了。
在代码中如何引用表单上没有而表里有的字段的当前值呢?
翻翻书也没找到例子,自己写总是语法不对。if skqk.代码==dmmin(如果当前记录的“代码”等于最小值dmmin)运行时找不到字段“代码”
难道必须把用到的字段都要在表单上建立控件吗?
另外,thisform. 和this. 有什么区别?
看书上的例子有this. ,我还以为引用表中字段值是这么写呢,可是不对。

2007-08-24 08:13
chunhe
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-15
收藏
得分:0 
回复好快啊!
没说清楚,我要的字段的字段名就叫“代码”。
我去试试,有问题再问你啊!
2007-08-24 10:58
chunhe
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-15
收藏
得分:0 

刚发现这都翻页了,呵呵
我也是没办法,逼上梁山了,今年得交这论文给领导看呢,我专业不是干这个的。
不过,考计算机二级的时候觉得编个程序解决个问题挺有意思的,刚开始弄这个数据库还是挺有意思的,按照书上的例子把登陆表单、开始界面、菜单就建立起来了,感觉很有成就感呢,可一到具体功能的实现就困难了,每一步都有问题,书上的例子都比我的情况简单,没办法参考了。我都放弃我原来的想法了,弄个简单的,能满足基本工作需要就得了。以后有能力了再完善吧,先把年关过去。
我这也是现学现用,现用现学。幸亏可以到这里讨教!

2007-08-24 14:27
chunhe
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-15
收藏
得分:0 

花花公子,locate函数是什么意思?麻烦解释一下!我现在手头没有书,VF的帮助文件又是英文的。我大概看了一下可能不是我需要的。

说明 1.我已经求出“代码”字段的最大dmmax、最小值dmmin,我要比较当前表单显示的这条记录中“代码”字段值是否是最大或最小,如果不是就可以移动指针到下一条记录。

说明 2.表中的“代码”字段在表单上没有体现。

说明 3.我的表中记录是按字段“代码”大小排序的,不是按照记录数排序的。所以,我移动指针上一条、下一条会这么麻烦。
问题1.我大致的构想程序应该这么写:if 当前这条记录的“代码”字段值==dmmin
messagebox("已到数据首部",48,"移动记录")
else
skip-1
endif
划横线的部分就是我不会写的语句,怎么办?
问题2.刚又想到未来的一个问题,就是其中的skip-1会不会移动到是比当前记录数大一个的记录,而不是比当前记录的“代码”字段值大的下一条记录。会这样吗?如果是,怎么办?

呼救!

2007-08-24 14:49
chunhe
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-15
收藏
得分:0 

谢谢,刚在论坛里找到VF9.0的帮助文件中文版的了,晚上回去看看。
你的代码:
select 表名
if thisform.text1.value==dmmin
messagebox("已到数据首部",48,"移动记录")
else
skip 1
endif
thisform.refresh

问题是我没有把需要比较的字段放在表单上,因为我不希望显示“代码”字段,所以thisform.text1.value就不能用,需要引用表中这个字段的当前值(回去试试,再没解决办法,只能把它放在表单上了。)

2007-08-24 16:35
快速回复:关于表单中“上一条”“下一条”的功能问题
数据加载中...
 
   



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

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