📄 数据库技巧3.txt
字号:
们 只 需 要 给 数 据 库Add 索 引, 并 选 择 原 来 的 索 引 文 件Open 即
可。
添 加 索 引 文 件 后 退 出 数 据 库 结 构 设 置, 并 对 数 据 库 重 新
索 引 一 下, 就 可 以 继 续 使 用 原 来 被 破 坏 的 数 据 库 了。
返回页首
4、使GRID表格中显示的记录内容更醒目
在表格显示中,afterRowColChange中加入如下语句可以使表格显示的内容更显目,更好看,且只改这一处就可以实现激活处高亮,还不用人工还原。
LPARAMETERS nColIndex
bn="this.column"+alltrim(str(ncolindex))+".text1"
&bn..fontbold=.T. &&黑体
&bn..forecolor=255 &&红色
&bn..fontsize=11 &&变字号为11
5、在VFP5.0中实现不定长文本的紧凑打印
原作者:宋墩文
在VFP5.0中,备注字段在打印时,由于其数据长度不确定,所以以传统带方框的表格形式输出就很难实现备注内容连续且紧凑的打印。这时一般会出现两种不利现象:一是备注内容少,打印出太多空白,浪费大量纸张;另一种是数据内容太多,预留的打印空间不够,不能打印全部备注字段内容,造成打印的数据信息不完整。我在开发“全国继电保护统计与分析系统”时就遇到这样的问题。通过跳出传统表格输出形式的思路,并合理设置VFP5.0报表的有关选项,我巧妙地实现了备注字段不定长文本的紧凑打印。下面以“学生档案数据库”为例来说明此问题的解决思路。
表1 数据库xsda.dbf结构 字段名称
字段注释
类型
长度
xs-id
编号
字符型
6
xs-name
姓名
字符型
10
xs-birt
出生日期
日期型
8
xs-grade
年级
数字型
4
xs-class
班级
数字型
4
xs-resume
简历
备注型
4
数据库XSDA.DBF结构如表1所示,其中字段XS-RESUME为学生简历,是备注字段。在XSDA.DBF数据库中存有两条记录,如表2所示。
表2 数据库xsda.dbf记录数据 编号
姓名
出生日期
年级
班级
简 历
980001
张三
77.7.5
1
1
该生从外校转入,个人情况暂缺
980002
李四
77.7.2
1
2
该生开发了一种仪器,其简要介绍如下:df1024便携式波形记录仪是一种能够对各种强弱电信号进行测量、波形记录、信号分析处理及结果打印输出的通用测试仪器。
……
…
...
...
...
...
...
实现紧凑打印的具体设置步骤如下:(一)打开XSDA.DBF库,利用VFP5.0集成环境快速生成报表。(二)修改XS-RESUME字段属性。双击XS-RESUME字段或者在字段上单击右键,选择属性,将属性“溢出时伸展”的值设为真,并将“域控件位置”设置为“浮动”。(三)预览结果。在设计状态下单击右键选择“预览”,可看到如图1的输出结果。
图1
从图1中可以看出,尽管学生张三同李四的个人简历的数据长度相差悬殊,但打印后,两条记录紧密结合,不仅使打印页丰满,感觉美观而且节省纸张。在图1中没有采用表格竖线,其主要原因是加入竖线后,即使域控件位置设置为“浮动”,还会由于长文本的伸展致使竖线断裂,破坏表格的完整性。需要强调的是:域控件位置设置为“浮动”,是不定长文本紧凑打印的核心,也是开发者容易忽视的。
返回页首
6、VFP常见错误及处理方法
原作者:董晓燕
a、如何消除数据库的只读状态
在打开数据库时,有时我们会发现在数据库名的右边会出现“(只读)"。此时,如果用户试图对数据库中的数据库表进行各种操作,如修改结构、输入信息等操作时,它将拒绝执行,并提示用户此数据库处于只读状态,无法输入新的记录或者是进行修改结构的操作。用户也无法将此数据库中的数据表移出或移入。此时用户若通过资源管理器观察此数据库文件的属性会显示,此文件的属性并非只读,而是处于读写状态。碰到这种情况说明用户同时打开的数据文件太多了,只有关闭其它的数据库文件之后才可以解除此数据库的只读状态。解决的办法有:一,在命令窗口中输入下列命令:CLOSE ALL(关闭所有的文件、项目、数据库)。然后重新打开此数据库,一般可以解除此数据库的只读状态。如果这种方法仍然不能改变数据库的只读状态,那么可以采用第二种方法:先关闭数据库,然后退出VFP,之后重新进入VFP,此时用户无论打开任何一个数据库,它们都不会处于只读状态了。由此可以看出,在VFP中我们能够打开的文件是有一定限度的,不能无休止地打开许多文件而不关闭它们,这样会带来许多不必要的麻烦。
b、设计输出报表时对数据表中的字段的要求及变量的使用
报表的设计输出是VFP中几个重要的功能之一,我们经常要用到,然而在使用起来有时也常常会出现一些小小的麻烦。例如:在一个数据库中有两个表和基于这两个表的视图,它们的结构如下:
ysk.dbf 字段名
类 型
合同号
字符型(6)
应收款
货币型
ssk.dbf 字段名
类 型
合同号
字符型(6)
收款日期
日期型
实收款
货币型
视图1 字段名
类 型
合同号
字符型(6)
应收款
货币型
收款日期
日期型
实收款
货币型
如果基于此视图作一个报表,报表的内容要求如下:
在欠款一栏中我们需要设定一个数值型变SSK,即欠款=应收款-SSK,其中SSK是同一合同中实收款之和。细心的用户会发现如果应收款和实收款均为货币型字段,那么在报表的欠款栏里会出现****,即欠款计算不出来。而报表中的其它四项内容都是正常的,产生这种现象的原因只有一个,那就是货币型字段不能与数值型的变量SSK进行加减运算,这是初学者最常犯的错误,即试图将不同类型的变量进行运算。解决的方法很简单,只要将数据表中应收款和实收款的字段类型改变为数值型,然后更改视图即可。由此可见,对于需要进行数学运算的字段我们应将其定义为同一种数据类型才不会出错。
c、表单运行中文本框内容不随记录的改变而改变的原因
在表单的设计中常用的有两种方法:一种方法是先建立数据环境,然后用鼠标直接将相应的字段拖入表单中。用这种方法向表单中添加的对象将直接与相应的数据表或视图相关联,表单建立后,运行此表单,则表单中各个对象都有相应的值。且表单中各对象的内容随着记录的不同而不同。另一种方法是利用表单控制工具栏向表单中添加控制。此时用户并没有将表单中的控制与相应的字段相关联,因此,此时运行表单时,表单中的对象是没有内容的。我们可以通过以下操作来完成控制与表字段之间的关联:首先选中表单中已有的控制,然后单击属性中的“激活表单生成器”按钮,在表中选取“值”项(如图1所示),然后选择字段,如果没有字段可选,说明还没有选中表,那么我们可以用鼠标先选表,然后选字段,最后,按确定按钮,使控制与相应的字段相联结。用这种方法可以实现表单中控制与相应表中字段的关联,可避免表单中出现空对象的现象发生。
返回页首
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -