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

各位高手,小妹现在有一个问题请教各位:我做了一个表单,数据环境包含两个表,一个父表,一个子表,都有“编号”字段,以“编号”作为索引连接,“编号”含数字和汉字,父表的“编号”是按顺序编排的没有重复,没问题。关键是子表的内容不是按父表的内容时间顺序添加的,会有重复,所以就可能发生子表新加的一条记录的“编号”不是最大一个编号而其记录号是最大的
例如原来有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
songyuyu
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:6090
专家分:25
注 册:2007-1-17
收藏
得分:0 
先求出编号的最大值,然后比较一下就可以了

我喝水只喝纯净水,牛奶只喝纯牛奶,所以我很单纯……
2007-08-18 09:21
songyuyu
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:6090
专家分:25
注 册:2007-1-17
收藏
得分:0 
参考
MAX() 函数
MIN() 函数

我喝水只喝纯净水,牛奶只喝纯牛奶,所以我很单纯……
2007-08-18 09:22
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
收藏
得分:0 
造成这种局面,和您的表设计思路有关。编号用中文和数字以及横线等字符进行组合,看起来很直观,但处理起来却十分麻烦(比如排序、计算等)。我建议如果需要这种编号方式,最好分开若干个字段来保存(其中必有一个使用纯数字),打印和显示查询结果的时候采取字符串连接的方式解决。

两人行已有我师……
2007-08-19 11:30
chunhe
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-15
收藏
得分:0 

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

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

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

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

2007-08-20 09:36
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
收藏
得分:0 
举个例子,以下三个表
企业表(父表,记录集团相关企业)
编号 企业简称 企业名称 法定代表人 处所 注册资金……
01 集团本部 XXXX集团有限公司
02 一公司 XXX第一子公司
03 二公司 XXX第二子公司
……
部门表(子表,记录各企业所属部门情况
编号 所属企业 部门名称 负责人 联系电话……
0101 01 董事会办公室 张三 99999
0102 01 行政部 李四 88888
0103 01 人力资源部 王二麻 909090
……
0201 02 行政部 李广 XXXXX
0202 02 人力资源部 陈阳 XXXX
……
0301 03 总经理办公室 XXX XXXXXX
班组表(子表,用以记录工作班组的组织情况,结构上与部门表基本一样)
编号 所属部门 班组名称 负责人 联系电话……
010101 0101 行后勤政组 张军 99999
010102 0101 秘书组 李平 88888
以下就不列举了

请您自己分析一下这种编号的规则及子表与父表的联系方式
当然,这只是我个人的做法,其他人还有很多好的经验比这要好得多。
需要补充的是:每一条记录都应该有自己唯一的识别标识,而习惯上则往往用“编号”来作为这一标识,因为很多内容(就算是身份证号码)都可能会出现重复的。

[此贴子已经被作者于2007-8-20 14:54:54编辑过]


两人行已有我师……
2007-08-20 14:45
chunhe
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-15
收藏
得分:0 

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

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

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

2007-08-21 13:22
花花公子
Rank: 4
等 级:贵宾
威 望:10
帖 子:609
专家分:0
注 册:2007-6-7
收藏
得分:0 

用MIN()比较数值,一般都要用循环.....
MIN(eExpression1, eExpression2 [, eExpression3 ...])

"min(skqk.工程号代码)语法不对"

下面示例使用 APPEND BLANK 创建一个含 10 个记录的表,记录包含随机值,然后用 MIN( ) 和 MAX( ) 来显示表中的最大值和最小值。
CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10 && 添加 10 条新记录,
APPEND BLANK
REPLACE cValue WITH 1 + 100 * RAND( ) && 插入随机值
ENDFOR

CLEAR
LIST && 显示值
gnMaximum = 1 && 初始化最大值
gnMinimum = 100 && 初始化最小值
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'The minimum value is: ', gnMinimum && 显示最小值
? 'The maximum value is: ', gnMaximum && 显示最大值

这个代码对你应该有帮助(在帮助文档那复制过来的)


[glow=150,blue,2] 该珍惜的,好好把握;该舍去的,不再留恋; 该执著的,永不怨悔;该面对的,绝不逃避。[/glow]
2007-08-23 10:04
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
快速回复:关于表单中“上一条”“下一条”的功能问题
数据加载中...
 
   



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

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