玉管通地理,朱笔点天文
        欢迎光临文天软件之家
 
全站搜索
联系方式


网 址:文天软件之家

    www.jh-lzf.com

联系人:文天(刘中甫)

邮 箱:jh-lzf@21cn.com

地 址:湖北·武汉

    中国石化·江汉油田

    石油工程技术研究院

    信息中心

  

天气信息
新闻详情
方便、快捷的字段选择开关
来源:━━━━《软件报》1996合订本(第41期)作者:刘中甫网址:http://www.jh-lzf.com浏览数:12

方便、快捷的字段选择开关

  在DBASE、Foxbase、Foxpro等数据库语言中,有很多命令如list、browse、change、append等涉及到对指定字段进行操作的命令。当字段数较多、字段名较长且为汉字时,命令则是冗长烦琐,而且对于需要频繁地选择或改变不同字段的操作,更是令人头痛脑热。为此,笔者设计了一个字段选择开关,将您的上述烦恼抛之云外,希望给您的工作带来方便。程序如下:

*字段选择开关子程序

ON ERROR RETURN

ON ESCAPE RETURN

SET ESCAPE ON

SET TALK OFF

SET COLOR TO w+/b

CLEAR

*若您当前没有打开一个数据库,则提醒您打开所需操作的数据库。

IF FCOUNT()=0

USE ?

ENDIF

ii=FCOUNT()

*定义字段选择标志数组

dimension basestruct(ii),base_type(ii+2),select_flag(ii),pads_field(ii)

for i=1 to ii

basestruct(i)=FIELD(i)

select_flag(i)=1

pads_field(i)=" "

base_type(i)=pads_field(i)+PADC(FIELD(i),12)+type(FIELD(i))

+alltrim(str(fsize(FIELD(i))))

endfor

base_type(ii+1)="\-"

base_type(ii+2)=" 选择完毕, 返回"

lenthes=0

line_number=ii+3

if ii+2>20

line_number=15

endif

set color to w+/g,w+/r

*定义字段选择菜单并实施选择

@4,30 menu base_type,ii+2,line_number TITLE " 字段选择表 " SHADOW SAVE

do while .T.

READ MENU TO me

if me=ii+2

set fields to

exit

endif

*置选择标志数组

select_flag(me)=ABS(select_flag(me)-1)

if select_flag(me)=0

pads_field(me)="X"

else

pads_field(me)=" "

endif

base_type(me)=pads_field(me)+PADC(FIELD(me),12)+type(FIELD(me))

+alltrim(str(fsize(FIELD(me))))

@4,30 menu base_type,ii+2,line_number TITLE "字段激活选择表"SHADOW SAVE

enddo

*做选择标志

for i=1 to ii

if select_flag(i)=1

if FSIZE(FIELD(i))>len(FIELD(i))

lenthes=lenthes+FSIZE(FIELD(i))

else

lenthes=lenthes+len(FIELD(i))

endif

c=basestruct(i)

set fields to &c

set fields on

endif

endfor

set color to w+/b

clear

  在您需要选择某数据库字段时,运行此程序。此时屏幕上显示出您当前数据库的结构,包括所有字段名、字段类型、字段宽度等,在每个字段名前可能还有 "X"标记,表示此字段当前未被选择(若字段名前面没有 “X”标记,表示此字段已被选择)。用“↓”或“↑”键移动光标到需要选择或取消的字段上,按回车或空格键(任意次数均可,相当于一个乒乓开关),此时字段名前的 “X”标记将时隐时现,即表明此字段被选择或被取消。用上述方法对您所关心的若干字段(不分先后顺序)进行选择或取消,最后光标移到“选择完毕,返回”上回车退出此程序,此后您所有命令中的FIELDS子句均可省略。若您再需要改变字段时,可再次运行此程序。您可在运行此程序前后分别用list显示,检验本程序的正确性。