visualfoxpro软件如何将两张表相同数据为索引,代入另一列数据

内容互通,快速登录
还没有帐号? 赶紧
用户版块帖子
vfp表单的数据环境中,临时表可以建立索引吗?如何建?
UID:56223
在线时间42小时
浏览券1011威望19贡献值2下载币47
我是初学,请问高手,用sql作后台数据库,在表单的数据环境中用ca连接的各个临时表,临时表可以创建索引吗,临时表与临时表间可以建立关系吗?如果可以如何建关系!
UID:55855
在线时间101小时
浏览券317威望18贡献值2下载币12
可以建立索引的,也可以建立关系,但是你必须知道两个关联的表的别名,如别名分别为:Sales 和 partdef ,假设 Sales 作为主表 则partdef 建立关联字段的索引 然后:select salesset rela to partno into partdef partno 为关联字段
在线时间111小时
浏览券96威望2贡献值0下载币104
INDEX ON eExpression&&TAG TagName eExpression 指定一个索引表达式,它确定了 Visual FoxPro 中显示和操作记录的顺序。eExpression 可以是一个简单表达式,如当前表中的一个或多个字段名,也可以是一个包含 Visual FoxPro 函数、常量等的复杂表达式。Visual FoxPro 产生基于 eExpression 的索引关键字,并在指定的索引文件中存储它们。索引文件并不影响存储在表中记录的物理顺序。 TAG TagName 为由 eExpression 创建的索引指定名称或标识,并存储在复合索引文件(.cdx)中。标识名必须以字母或下划线(_)开头,并且可以包含最多 10 个字母、数字、或下划线的字符组合。
UID:79551
在线时间0小时
浏览券4威望0贡献值0下载币0
UID:56223
在线时间42小时
浏览券1011威望19贡献值2下载币47
回 hcz 的帖子
:INDEX ON eExpression&&TAG TagName eExpression 指定一个索引表达式,它确定了 Visual FoxPro 中显示和操作记录的顺序。eExpression 可以是一个简单表达式,如当前表中的一个或多个字段名,也可以是一个包含 Visual FoxPro 函数、常量等的复杂表达式。Visual FoxPro ..&( 01:06)&我不知把建立临时表的索引和关系,写在哪里?我是用ca生成器在数据环境下建立的临时表,父表别名叫ddgl1&&子表别名叫ddgl2&& create unique index ddbhindex on ddgl1 (订单编号)&&&&&&&&&&主表的索引 ,ddbhindex索引名create index ddbhindex on ddgl2(订单编号)&& &&子表的索引&&ddbhindexselect ddgl1set rela to&&into ddbhrela&& &&建立一对多关系我查询分析器中执行到建关系的时候出错,我写得建关系的这行不对,请教该如何写?我现在有二个问题了,一是不知如何写建索引和关系的代码,二是不知写在表单的哪个事件里合适
UID:55855
在线时间101小时
浏览券317威望18贡献值2下载币12
你可以把这段写在你生成临时表的代码的后面,select ddgl2index on 订单编号 tag 订单编号select ddgl1index on 订单编号 tag 订单编号set rela to 订单编号 into ddgl2 go top另外如果你这数据是从SQL下载来的话就没必要这样做了,之间在SQL 中做视图就可以了
UID:56223
在线时间42小时
浏览券1011威望19贡献值2下载币47
回 mzcyh 的帖子
:你可以把这段写在你生成临时表的代码的后面,select ddgl2index on 订单编号 tag 订单编号select ddgl1index on 订单编号 tag 订单编号.......&( 13:44)&请你别嫌我啰嗦,我再请教你一个问题,比如我在设计表单时已通过交互方式设好数据环境中的临时表,表单运行时什么时候加载数据环境?加载数据环境后还会响应表单中哪些事件?
UID:56223
在线时间42小时
浏览券1011威望19贡献值2下载币47
我把代码写在了表单的init事件中,这样就行了。问题解决了,谢谢mzcyh的热心帮助!非常感谢!!
UID:84451
在线时间0小时
浏览券52威望0贡献值0下载币1
回 sele 的帖子
:请你别嫌我啰嗦,我再请教你一个问题,比如我在设计表单时已通过交互方式设好数据环境中的临时表,表单运行时什么时候加载数据环境?加载数据环境后还会响应表单中哪些事件? ( 15:02) 当你已设好数据环境中的临时表,表单运行时就直接可以用了,会自动加载。数据环境作为你 的资料库,当你在数据环境中加入了哪些表,在运行时需要用到这里面的表直接调用就好了,只要的写的事件需要调用这些表里面数据的,就会响应相应的事件了。。
访问内容超出本站范围,不能确定是否安全
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
您目前还是游客,请
&回复后跳转到最后一页
验证问题:
Powered by & Copyright Time now is:08-16 09:37 &
版权所有 Gzip enabled
Total 0.116712(s) query 7,foxpro数据库命令总结
foxpro数据库命令总结&&
20:54:50|&&分类:
|&&标签: |字号大中小&订阅
数据库和数据表典型及重点操作方式
create datebase
&数据库名&&&&&&&&&&&
建立数据库
modi datebase
&数据库名&&&&&&&&&&&
修改数据库
&数据表&&&&&&&&&&&&&&&&&&&&&&
建立数据表
structure&&&&&&&&&&&&&&&&&&&&
修改数据表结构
&数据表名&&&&&&&&&&&&&&&&&&&&&
打开数据表
[blank]&&&&&&&&&&&&&&&&&&&&&
stru&&&&&&&&&&&&&&&&&&&&&&&&&&&
显示数据表结构
[&数值表达式&]&&&&&&&&&&&&&&&
记录指针的相对定位
blank&&&&&&&&&&&&&&&&&&&&&&&&
插入空白记录&
delete [&范围&]
[for&条件&]&&&&&&&&
对记录作删除标记
recall [范围&]
[for&条件&]&&&&&&&&&
取消删除标记即恢复记录
browse [fields&字段名表&] [nodelete]
[nomodify][partition &数值表达式&]
浏览修改数据
replase范围&] &字段名1&
with &表达式& [for
&条件&]& 记录的替换
count [&范围&]
[for&条件&] [to
&内存变量&] 记录个数计算
sum [&范围&]
[&数值型表达式&] [for
&条件&] [to
&内存变量表&]&
库字段的求和
&条件&&&&&&&&&&&&&&&&&&&
纵向编辑或修改
brow& noappe&
noedit&& 不能向数据库中添加记录
brow& nodelete&
nomodify既不能加上也不能去掉记录的删除标记
brow& lock &数值表达式&
数据库中前面的几个字段被锁定
brow& partition
&数值表达式& [redit&
ledit]将浏览窗口分成两个窗口
brow font '宋体' ,18 part 30 redit&
改变字体大小分割纵横两个窗口
calc sum(数学),sum(foxpro) to a1,a2 统计数学和数据库的总和
(提示:限制性的短语用在命令动词后时,不分前后顺序)
●copy stru to &数据库文件名& [fields
&字段名表&] 数据库结构的复制
copy to &文件名& sdf for
&条件& [fiel
&字段名表&] 生成文本
●&移除备注文件的数据
Delete record 4
●appe from &未打开的库文件& [for
&条件&] [fiel
&字段名表&]合并(链接)到当前数据库的末尾
●index on &索引表达式& to
&索引文件名& [for
索引文件的建立
loca [&范围&] [for
&条件&] 数据库的查询
●&按钮隐藏与显示:
if this.caption="追加记录"
& thisform.container1.command2.visible=.t.
&this.caption="继续追加"
&thisform.container1.command2.visible=.t.
&this.caption="追加记录"
THISFORM.CONTAINER1.TXT序号.setfocus
thisform.refresh
●&设定显示范围:
Record &n& 指定一个记录
Next &n& 目前记录指针所指的以下数个记录
Rest &n& 目前记录指针所指的以下所有记录
All& 数据表中所有的记录
●&储存数据的各种类型,使用replace 命令时,必须注意其类型
Repl str with "amipro 中文版"& 字符串
Repl num with 100& 数值
Repl price with $ 100 货币
Repl day with {07/06/2007} 日期
Repl dt with {10/10/} 日期时间
Repl log with .f. 逻辑
Repl note with "备注数据"& 备注字段与字符串相同
repl 工龄年数 with subs(工龄年数,3,5) all&
*从第三个截取,保留5个字符,意在获得有用的数据,删除空格或多余的数据。
Repl 出生年月 with (subs(出生年月,1,4)+"."+subs(出生年月,5,2)) all
Repl cssj with 190000+cssj&
将原出生时间四位加上19的操作,字段为数值型
Repl 出生时间 with (subs(出生时间,1,4)+"."+subs(出生时间,5,2)) all
&&将出生时间6位数,第四位后,五位前加上圆点的所有操作
将talk.txt文字文件的内容储存到备注字段中
Appe memo note from talk.txt& 不覆盖原来内容
如:将个人自传加入到工作简历备注字段中:
appe memo 工作简历 from 自传.txt for 姓名="WDxrrrrwd"
●Appe memo note from friend.doc OVERWRITE&
数据被覆盖
●list 或 disp 记录的显示
sys(21) 返回当前工作区中起控制索引顺序作用的复合索引文件的标记或索引文件的索引序号
sys (44) 返回一个打开的 .idx 索引文件的索引表达式,或者返回复合索引文件的索引标记的索引表达式
sys(7) 返回当前格式文件的文件名
sys(9) 返回visual foxpro 的序列号
tag() 返回一个打开的多入口复合索引文件的标记名,或者返回一个打开的单项的索引文件名
tagno() 返回复合索引文件中的标记以及打开的单项索引文件的索引位置
简单索引的建立:
index on &关键字表达式& to 索引文件名 [for
●复合索引文件的建立:
index on &关键字表达式& tag
&索引文件名& [of
&非结构索引文件名&][for
例: 按姓名建立普通索引,按出生日期降序建立候选索引,按学号建立惟一索引,存于复合索引文件中,使用命序列:
index on 姓名 tag
&&(注:descending 降序)
index on 出生日期 tag csrq
ascending&&&&
&& (注:ascendimg 升序)
index on 学号 tag& xh
unique&&&&
&& (注:unique 建立惟一索引)
●索引的打开:
use &文件名& [index
&索引文件名&/?][order&数值表达式2&/&单索引文件&/[tag]
&标识名&&[of
&复合索引文件名&]
关闭当前工作区中打开的所有单索引文件和独立复合索引文件
close indexs
建立复合索引文件:("结构化复合索引文件"会在数据表被打开时打开,复合索引文件名,在标识名后会自动建立复合索引文件)
index& on&
性别+str(gzsj)& tag&
&&(结构复合索引)
index& on csny tag csny1 of csny2
dexcending&&
&&(非结构复合索引)
index& on& gz&
&&按工资升序建立压缩型单索引文件,unique为单索引
打开库文件的同时打开索引文件:
use &数据库文件& index
&索引文件名& [tag
&索引标记& [of
[&复合索引文件名&]
●打开数据库以后,再想打开索引文件
set index to &索引文件名&
[order[&数值表达式&|&单索引文件名&|[tag]
&索引标记& [of &复合索引文件名]]]
[ascending|descending] [additive]
如果使用additive 子句,则不会关闭前面已经打开的索引文件
例:打开数据库文件 rsda 并同时打开索引文件 单位1.idxt和出生年月.cdx
Use& rsda&
index& 单位1, 出生年月
exclusive/shared 指明以独占方式还是以共享方式打开表
格式:use &表名& [in
&工作区号&][alias
&别名& [exclusive/shared]
select 0 或 select 2
use 成绩表 alias& cj
for 条件。指明在表中选择符合条件的记录进行显示
while 条件。指明选择表中符合条件的记录进行显示,遇到第一条不符合逻辑条件的记录,就不再向下选择记录了。
Delete& from
where& 课程='pascal'
●定义基本表:create table
&表名&(&字段名1&&类型&[(&宽度&[,&小数的位数&])]
[,字段名2&…])
例:Create& table 成绩表 (学号 c(7),课程 c(15), 成绩
●表单操作&&&
(详细阅读第九章第144页以后内容)
Do form &表单名& 调用表单
Thisform.release 或release&
thisform&&&
●Use &数据表& alias
&别名& exclusive&
以独占方式打开表并给予别名
Thisform.refresh&& 刷新
Thisform.setfocus&&
设置焦点&&
如:thisform.text1.setfocus
●Report& form
&报表名&& [for
preview&& 预览报表
Report& form
&报表名&& [for
to& print prompt 打印报表
●选择删除或恢复
Hhdelete=messagebox(" 如果确认,数据全部更新!",33,"请选择清空数据或恢复")
& clos all
& use ygcjlr excl&
&&以独占方式打开数据库
if hhdelete=1
& dele all
●数据库文件的连接:
格式:Join with &别名& to
&表名& for
&条件& [fields &
字段名表&]
例:将student学生库和zongf库连接生成新的数据库new,其中包括字段:编号、姓名、性别、总分&&
(仅作参照实验)
Use& student&
&& alias 冠以别名格式
Use& zongf&
Select& st
Join with zf to& 新的库文件for 编号=zf.编号 fiel
编号,姓名,性别,zf.总分
Use& 新的库文件
●冻结字段:brow freeze 单位
固定数个字段 brow lock 2 &&
固定左半部两个字段
●排序
单一字段排序: sort to &排序后表名& on 档案号
sort to &排序后表名& on 工资标准/d
多字段排序:sort to &排序后的表名& on
档案号,序号
忽略大小写:sort to &排序后的表名& on 档案号/c
&&/cd为忽略大小写降序
全部降序:sort to &排序后的表名& on 工资,补贴,养老金
descending
降序与升序:sort to &排序后的表名& on 档案号/d,序号,年龄
条件排序:sort to &排序后的表名& 年龄 for
(date()-出生年月)/365&=50
&&当前的日期减去出生的日期(得日数),再除于365日即得年数
部分字段的撷取:sort to &排序后的表名& on
档案号/a& fiel 档案号,姓名,工资标准,工种
设定范围:go 4
Sort to &排序后的表名& on 工资标准/d rest
&&从4个以后排序
●取得磁盘空间:? Diskspace()
取得数据表的大小:文件头大小:header()……A
一个记录的大小:recsize()……B
记录个数:reccount()……C
&&数据表的大小便是D=A+B*C
●数据表文件间的数据更新& update
格式:Update& on&&
&关键字段&&
replace& &字段名1& with
&表达式1&[,&字段名2&
with &表达式2&...]
例:将rsda库中的岗位工资加在rsdagl库中岗位工资中:(两库操作)
databases&&&&
&&关闭所有数据库
Use rsda alias
gwgz01&&&&
&&打开rsda数据库 并加别名 gwgz01
Index on 姓名 to
&&以姓名为关键字索引,索引名为xm01
Use rsdagl alias
&&在b区打开人事档案管理, 并加别名gwgz02
&&将第一次打开的rsda 别名a 作为选择
Upda on 姓名 from gwgz01 repl gwgz with
gwgz+gwgz01.gwgz&
&&将当前库中的gwgz加上别名为gwgz01(rsda)库中的gwgz。已验正可行
●数据库文件的合并
格式:Append from &数据表名& [fiel
&字段名表&] [for
例:将rsda.dbf和rsdaht.dbf数据库合并到总库wdxrrzk中
Use wdxrrzk
Appe from rsda
rsdaht&&&&&&&
&&已在wdxrrzk中合并了rsda、rsdaht
●数据表字段内容的替换
格式:Replace [&范围&] [for
&字段名& with&
例:在数据库student.dbf中,将所有女同学的入学总分增加10分
Use student
Repl all 总分 with 总分+10 for 性别="女"
List&&&&&&&&&
&&选择显示方式:list disp brow chan
●数据库综合计算命令calculate
格式:Calculate [&范围&] [for
[while&条件&]
[&表达式&] [to
&内存为量表&]
命令中的&表达式&可以是以下函数的任意组合:记录个数:cnt(),最大值:max(&表达式&),最小值:min(&表达式&),平均值:avg(&数值型表达式&),总和:sum(&数值型表达式&),标准偏差:sid(&数值>)
例:将学生库英语和数据库的成绩和求总和:
Use 学生库
Calc sum(英语分+foxpro) to zf
? '英语分数和foxpro总分为:',zf&
&&显示内存变量zf的数据
●计算数据库中记录个数的命令:count
格式:count [&范围&]
[for&条件&] [to
&内存变量&]
例:统计入学总分在560-650分之间的人数
Use 学生库
Count for 入学总分&=560 and 入学总分&=650 to
? '入学成绩在560到650分之间的人数为:', rs&
&&显示变量
●数据库字段的求和命令 sum
格式:sum [&范围&]
[&数值型表达式&]
[for&条件&]
[to&内存变量表&]
例:统计学生成绩库score.dbf各科成绩
Sum& 英语成绩,foxpro to yy,vf
? '英语成绩和foxpro分别为:'yy,vf&&
&&显示内存变量的数据
●数据库字段的求平均值命令AVERAGE
格式:average [&范围&]
[for&条件&][&数值型表达式&][to&内存变量表&]
例:求数据库score.dbf中所有女同学的英语平均成绩:
Aver 英语成绩 for 性别='女' to a
?"学生成绩库中女同学的英语平均成绩为:',a
●功能最强的 select 命令
1、&select &表达式& from
是select命令的必选项
例1、 select 编号,姓名 from rsda to screen
例2、显示rsda库中每个人的姓名、年龄
Sele 姓名,year(dade())-year(birth) from rsda to screen
例3、显示rsda库中的记录个数,总工资、高低工资、平均工资
Sele count(*) AS&
记录个数,sum(gz),max(gz),min(gz),avg(gz) from rsda to screen
例:利用基本情况库rsdab、技能工资库rsdac和岗位工资库rsdad显示出每个职工的姓名、技能工资和岗位工资(三库共同唯一的字段是编号gh,a
b c是系统默认的工作区号,也称别名)
sele a.xm,b.jngz,c.gwgz from rsdab a,rsdab b,rsdad c where
a.xm=b.xm and b.gh=c.gh&
&&到屏幕或打印机 to screen /print
●sele[distinct]&表达式&[as&列标题&][,&表达式&[as&列标题&]…]
from &数据库&
[别名][,&数据库&[别名]…]
[where&条件&]
[group by &分组项目&
[,&分组项目&…]][having&条件&]
&排序项目&[asc/desc][,&排序项目&[asc/desc]…]]
[into&目标&/to
file&文件名&[additive]/to
print/screen]
In:判断in左侧数据是否出现在in右侧的各个值中
Between…and:
判断between左侧的数据是否则在betw…and指定的范围,如果在,结果为.t.,否则为.f.
Like:判断like左侧的数据是否符合like右侧指定的字符串的格式。在字符串可使用通配符"%"(百分号)和"-"(下划线),'%'代表多零个或多个字符,"-"代表一个字符。
&分组项目&[,&分组项目&…]][having&条件&]
&排序项目&[asc/desc][,&排序项目&[asc/desc]…]
into dbf &数据库文件名& 或 into table
&数据库文件名&
to file &文件名& [additive]
指定的文本文件中或尾部
●例1:显示出1978年和1979年出生的学生的姓名和出生日期。
Sele 姓名,出生日期 from 学生库 where year(出生日期) in () to
&&判断in左侧的数据是否出现右侧的各个值中,若出现,结果为.T.,否则为.F.
●例2:显示出姓名中有"英"字的学生的姓名和学号
Sele 姓名,学号 from 学生库 where 姓名 like "%英%"
&&LIKE:判断like左侧的数据是否符合like右侧指定的字符串的格式
●例3:显示学生库和成绩库每个女生的学号,姓名以及所修课程号。
Sele 学生库.学号,学生库.姓名,成绩库.课程 from 学生库,成绩库 where 学生库.姓名=成绩库.姓名 and
学生库.性别='女' to screen
●例4:显示学生库,课程库和成绩库显示出每个学生的学号、姓名、所修课程名称和该门的成绩。
Sele a.学号,a.姓名,c.科目,b.分数 from 学生库 a,成绩库 b,课程库 c where a.学号=b.学号 and
b.科目=c.科目 to screen
●例5:显示学生库和总分库每个学生的姓名、学号和总分。
Sele a.姓名,b.* from 学生库 a,总分库 b where a.学号=b.学号
●例6:分别求出男女生的人数、高考成绩的总分、平均分、最高分和最低分。
Sele 性别,count(*)as 人数,sum(成绩),avg(成绩),max(成绩),min(成绩) from 学生库
group by 性别 to screen
●例7:求出学生库中同年出生的学生的人数、高考成绩的平均分、最高分和最低分。
Sele year(出生时间)as 出生时间,coun(*)as 人数,avg(成绩),max(成绩),min(成绩), from
学生库 group by year to screen
●例8:分别求出学生库中同年出生的男女生的人数以及高考成绩的平均分。
Sele rear(出生年月)as year,性别,count(*)as 人数,avg(成绩) from 学生库 group by
year,性别 to screen&
&&group by 分组子句中不允许使用表达式如:
Sele rear(出生年月)as year,性别,count(*)as 人数,avg(成绩) from 学生库 group by
year(出生年月),性别 to screen是错误
●例9:求出学生中年出生的学生的人数及高考成绩的平均分数。
SELE YEAR(cssj)AS year,count(*)as 人数,avg(fs) from 学生库 group by year
HAVING YEAR(cssj) IN() to screen
●例10:显示学生库中每个学生的学号、姓名和出生日期,按照出生日期的升序排列记录:
Sele 学号,姓名,出生日期 from 学生库 order by 出生日期
●例子11:显示学生数据库中每个学生的学号、姓名和年龄,按照年龄的降序排列记录。
Sele 学号,姓名,year(date())-year(出生日期) from 学生库 order by 3 DESC TO
●例子12:利用学生库和总分库显示出每个学生的姓名、学号和总分,并按照总分的降序排列记录。
Sele a.姓名,b.* from 学生库 a,总分库 b WHERE a.学号=b.学号 order by b.总分库 DESC
●例13:利用学生库,课程库和成绩库显示出每个学生的学号、姓名、所修课程名称和该门课的成绩,并按照学号的升序排列记录,学号相同时,再按照分数的升序排列记录。
Sele a.学号,a.姓名,c.科目,b.分数 from 学生库 a,成绩库 b,课程库 c WHERE a.学号=b 学号 and
b.科目=c.科目 ORDER BY a. 学号,b.分数 to screen
●例14:利用学生库建立名为wdxrrsjk,其中只包括公费生的记录
Sele * from 学生库 WHERE !公F自T& into dbf
注:公F自T 是字段变量 是自己定义的库结构 公费为f 自费为t
又如:sele 姓名,iif(owe,"自费","公费")as 显示自公 from 学生库 to
screen& &&注明owe
是库中字段逻辑型
●例15:利用学生库和总分库建立新库wdxrrsjkb,新库中包括字段:学号、姓名、性别和总分。
Sele a.学号,a.姓名,a.性别,b.总分 from 学生库 a,总分库 b where a.学号=b.学号 into dbf
●group by
&分组项目&[,&分组项目&…]][having&条件&]
&排序项目&[asc/desc][,&排序项目&[asc/desc]…]
into dbf &数据库文件名& 或 into table
&数据库文件名&
to file &文件名& [additive]
结果放在&文件名&指定的文本文件中。如果使用[additive]子句,查询结果添加在文本文件尾部,不覆盖其原有内容
into cursor
&数据库文件名&&&
结果存入&数据库文件名&指定的临时数据库中。只要关闭临时数据库,该数据库立即被删除
●例:显示rsda中所有工种,去掉重复的工种:
Sele dist 工种 as 所有工种 from rsda to screen&
&&into dbf rsdab
●例:显示出生日期1928年至1957年之间的人员的姓名、出生日期
sele 姓名,出生日期 from wdxrrzb where& 出生日期 betw '1928'
and '1957' to screen&
&& between 符合多个条件查找 出生年月是字符型
●例:显示不是1928年和1954年之间出生的人员姓名、出生日期(字符型)
sele 姓名,出生 from wdxrrzb where 出生日期 not betw'1928' and '1954'
显示单位不重复的工种数分组排序到临时表 (dist子句要放在所有显示的字段前面,否则出错,会出现找不到的提示)
●例:Sele& dist 工种,工作单位,姓名,count(*) from
员工培训& group by 工种 order by 工作单位 to cursor
●例:显示出1978年和1979年出生的人员的姓名和出生年月(出生年月日期型)
sele 姓名,出生年月from rsda where& year(出生年月) in
●例 :转换数据匹配后显示两个年限的出生年月
sele 姓名,出生年月 from 员工培训&& not
where val(出生年月) in () to screen
●SELE * from 花名册 where 年龄="53" and 性别="女" 数据匹配才能用
●例:显示出不是1978年和1979年出生的人员的姓名和出生年月(出生年月日期型)使用相反的条件 not或者 !
sele 姓名,出生年月from rsda&& not
where& year(出生年月) in () to screen
●进入vf后将表格导入数据库
IMPORT FROM d:\qfwwtwdxrr\wdxrrrr\员工考勤\数据库.xls TYPE XL8
SHEET "Sheet1"
●打开数据库生成表格可重新修改使用格式:
expo to alltrim(thisform.text1.value) xls 或:
expo to &文件名& xls
●&&建立临时表 名为:学
sele 备用金额,回收总额 from 出库商品 into cursor 学
&&加入到正式表中 正式表为:出库商品
●插入字段
insert into 出库商品(购买数量,出库数量) value(学.备用金额,学.回收总额)
以上实验通过
●通用字段输入照片:(实验通过)
appe gene 个人照片 from
alltrim(thisform.pageframe1.page2.text2.value)+".bmp"
&&加入指定的个人照片
thisform.refresh
&thisform.pageframe1.page2.text2.refresh
●在屏幕上显示照片:例:@2,9 say "c:\windows\肖像.bmp" Bitmap
设置表单控件热键:只限在Caption属性中:
例:exit 退出热键 将控件属性设为"e\&xit" 用时按Alt+x 就可以退出
数字键需要按 Shift
●报表页注脚: _pageno 或 _pbpage
●时间日期页注脚: year(date())年month(date())月day(date())日
或: dtoc(date(),1) 或: datetime()
●表单初始化页面initk中的事件代码:(当前页面)
Thisform.pageframe1.page6.zorder 或:
Thisform.pageframe1.activpage=6
●页面切换: if thisform.pageframe1.activpage=6&
(总页面数)
&&&&&&&&&&&&
Thisform.pageframe1.activpage=1
&&&&&&&&&&&
Thisform.pageframe1.activpage=thisform.pageframe1.activpage+1
●运行菜单编写的程序: modi comm& 人事档案管理.prg
*文件名 人事档案管理.prg
_screen.caption="档案管理系统"
&Set sysmenu on
Do 从事档案管理.mpr
●定义表单的init事件代码如下:
Sele 计生管理
Set order to 编号
If file(alltrim(计生管理.个人照片)+".bmp"
Thisform.image1.picture=alltrim(计生管理.个人照片)+".bmp"
●追加gene内容(图片.bmp)
Appe gene 个人相片 from;
alltrim(thisform.pageframe1.page1.container1.text2.value)+".bmp" ;
&&加入指定的个人照片
thisform.refresh
&thisform.pageframe1.page1.container1.text2.refresh
●打印设置命令:
Set printer to name(sys(1037))
●控制页数:repo form &报表文件名& to print
●设置路径:
set default to c:\mss
●运行系统封面
_screen.windowstate=2
_screen.visible=.t.
_screen.icon="\grophics\3810.ico"
_screen.caption="人事档案操作系统"
_screen.picture="\graphics\fm.jpg
●加密确认密码的代码事件:
clos database
allt(thisform.password2.value)=allt(mmk2.xm)
allt(thisform.password1.value)=allt(mmk2.mm)
do form wdxrrcda
&& thisform.release
& thisform.release
&● 在表单form1文本框中, 设置显示当前时间:
This.value=datetime()
●表单form1 、actiiate设置代码,在屏幕中停留时间:
ttime=datetime()
datetime()-ttime&=3&&&
&&定为3秒钟
do form &调用的表单&
●打开数据库生成表格:expo to &生成的表格名称&
分工种统计最高分、最低分、平均分
●sele 工种 as 工种分类,max(考试成绩) as 本工种最高分数,min(考试成绩) as 本工种最低分数 from
ygcjlr& GROUP BY 1 TO SCREEN
●sele 工种 as 工种分类,max(考试成绩) as 本工种最高分数,min(考试成绩) as 本工种最低分数 from
ygcjlr& GROUP BY 1 TO
●sele 工种 as 工种分类,max(考试成绩) as 本工种最高分数,min(考试成绩) as 本工种最低分数
,avg(考试成绩) as 平均成绩 from ygcjlr& GROUP BY 1 TO
●sele 工种 as 工种分类,max(考试成绩) as 本工种最高分数,min(考试成绩) as 本工种最低分数
,avg(考试成绩) as 平均成绩 from ygcjlr& GROUP BY 1 into
cursor 汇总表&&
&&生成临时表
●copy& to& 汇总库&
&&生成正式表
●expo to& 汇总正式表 xls&
●低于80高于90分的人员:
select 单位,姓名,考试成绩 from ygcjlr where 考试成绩 not BETWEEN 80 AND 90 TO
●显示1965年出生的人员
sele 姓名,工作单位,出生年月 from 员工培训 where 出生年月 like&
"1965%"& to screen
&#之间人员的分数
select 单位,姓名,考试成绩 from ygcjlr where 考试成绩& BETWEEN
80 AND 90 TO SCREEN
●统计年参加工作时间的人数
sele 姓名,工作时间 from 薪酬用 where&
val(工作时间)& betw 1985 and 1988& to
●统计各工种的成绩情况:
sele 工种 as 工种统计,count(*),max(考试成绩),min(考试成绩),avg(考试成绩) from ygcjlr
group by 工种 to screen
●分单位统计各工种情况
sele 单位,工种 as 工种统计,count(*),max(考试成绩),min(考试成绩),avg(考试成绩) from
ygcjlr group by 工种 to screen
●工种分类并求出各工种的人数:
sele dist(工种) as 工种分类, count(工种)&
from& ygcjlr&&
group& by 工种 to screen
●分工种统计以下内容并分类计数:
sele 单位,工种 as 工种统计,count(*)as 工种人数,max(考试成绩) as 最高分数,min(考试成绩) as
最低分数,avg(考试成绩) as 平均分数 from ygcjlr group by 工种 to
&& to cursor 生成临时表
●分类统计成绩人数存入临时表:
sele 工种,max(考试成绩) as 高分,min(考试成绩) as 低分,avg(考试成绩) as 平均分数 from
ygcjlr GROUP BY 工种 into& CURSOR&
●& copy to& 汇总一览表
●expo to& 汇总一览表 xls
●从表格中导入数据库:
IMPORT FROM
d:\qfwwtwdxrr\wdxrrrr\整理文件\qfwdxrr\qfwwtwdxrr\嗣懿文件\重新调整薪酬打印\组合\试验导入.xls
TYPE XL8 SHEET "Sheet1"
●按单位、姓名、由高到低分数排序:
sele 单位,姓名,考试成绩 from ygcjlr where 单位="采一队" order by 3 desc to
●生成新库由高到低排名:
sele 单位,姓名,考试成绩 from ygcjlr where 单位="工会" order by 考试成绩 desc into
dbf 成绩排名榜
●在指定的记录前添加一条空白记录
insert before blank
●统计工种数、单位工种数、分组,按单位排序生成新库文件:
sele 单位,count(工种),工种 from ygcjlr group by 工种 order by 单位 into dbf
●查询范围内的工种:
set exac off&
&&模糊环境,提示一个以上的关键字
sele 工种,姓名,考试成绩,min(考试成绩) as 最低分数 ,avg(考试成绩) as 平均分数 from ygcjlr
where 工种 in("采","压") to screen
●按单位分组、考试成绩排序并显示所在单位的最高分数:
sele * ,max(考试成绩) from ygcjlr& group
by& 单位 order by 考试成绩 desc
●查询90至100之间的成绩、工种和单位集中在一块并生成新的数据库
sele * from ygcjlr where 考试成绩& between 90 and 100
group by 工种 order by 单位 into dbf 汇总表
●查询单位人数,成绩表并生成数据库
sele 单位,工种,考试成绩,max(考试成绩) as 最高分数,min(考试成绩) as 最低分数,avg(考试成绩) as
平均分数, cnt(工种) as 总人数 from ygcjlr group by 单位 into
dbf& 考试成绩汇总表
●显示工种 姓名 考试成绩,98.5至99分之间的人数并由高到低排序
sele count(*) as 人数,工种,姓名,考试成绩 from ygcjlr where
考试成绩& between& 98.5 and 100 order
by 考试成绩 desc to screen
●查找所有名字带"霞"字的人员
sele * from 员工培训 where 姓名 like "%霞"
●查找姓王的姓氏分布单位的数据:
sele count(单位),单位 from ygcjlr where 姓名 like "王%" group by 单位 to
●union[all]&select命令&
说明将两个查询结果合并在一起输出,若无all,重复记录将被自动取消,若有all,表示结果全部合并。
●修改命令:格式:update &表名& set
&字段名1&=&表达式1&[,&字段名2&=&表达式2&……][where&条件&]
例:把"成绩表"中学号为"0422601"、课程为"pascal"的成绩加5分。
Update 成绩表 set 成绩=成绩+5 where 学号="0422601" and 课程="pascal"
●插入命令:
格式:insert into
&表名&(&字段名1&[,&字段名2&]…)
values(&表达式1&[,&表达式2&]…)
例:向"成绩表"中插入一个新记录
Insert into 成绩表(学号,课程,成绩) values("0622616","pascal",65)
●删除命令:格式:delete from &表名& where
例:删除"成绩表"中课程为"pascal"的记录
Delete from 成绩表 where 课程="pascal"
●在Visual Foxpro 程序中显示通用字段图像.将*.jpeg另存为*.bmp 图像步骤如下:
将得到的数码图像jpeg(*.**.jfif)照片,经过重新编辑后另存为:24位位图(*.*.dib)文件,即可在程序中(桌面上)显示。格式:
Appe gene 个人相片 from;
alltrim(thisform.pageframe1.page1.container1.text2.value)+".bmp" ;
&&加入指定的个人照片
●左上角显示图标
_screen.icon="\qfwwtwdxrr\wdxrrrr\整理文件\qfwdxrr\qfwwtwdxrr\嗣懿文件\调资用\薪酬图标.ico"
●设置菜单桌面背景方式:
_screen.picture="\program files\microsoft visual
studio\vfp98\杂色背景.jpg"
●截取替换
repl 改后标准小计 with subs(改后标准小计,3,12),套前小计 with subs(套前小计,8,12)
●在表单上输入数字型数据替换的模式:repl nx with
val(allt(thisform.pageframe1.page2.container1.text7.value))
●在表单中操作统计的数据型显示的代码:
count for nx=val(alltrim(thisform.container1.text8.value)) to
thisform.container1.label17.caption="同一工作年限的人数为:"+str(rr_nx,4)+"人"
●按指定页数打印
repo form 薪资台帐 to print prompt
●备注字段的数据储存
不覆盖:例如:appe memo 信访内容 from 试验.txt
覆盖:例如:appe memo 信访内容 from 试验.txt& overwrite
条件限制:appe memo 信访内容 from 试验.txt& overwrite for
姓名="王良"
●备注字段的修改
Modi memo &备注字段名&
http://blog.163.com/wenbo/blog/static//
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 visualfoxpro教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信