标题:初学者请教个设置变量的简单例子,原文件见附件
只看楼主
vfpp314
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2016-3-18
结帖率:66.67%
已结贴  问题点数:5 回复次数:11 
初学者请教个设置变量的简单例子,原文件见附件
初学者请教个设置变量的简单例子,原文件见附件。

求帮忙做一下这个例子。

简要说明:

1、有一个表单:

上面有两个按钮:



库也很简单:



2、其中第一个按钮为“设置”

点击,打开“设置表单”:



3、在设置表单里,可以填写“一班”或者“二班”,然后点击“确定”

4、然后点击主表单的“计算”按钮:

开始按照设置的“一班”,或者“二班”,把符合条件的记录提出来,生成新库。如图sql语句。但是其中“一班”的那个位置是根据上一步骤得来的。



。。。。

也就是说,通过“设置表单”,把用户填入的内容给一个变量。然后把根据这个变量,替换下一步运行的sql语句中的条件,和生成库的名字。。。。

根据设置不同,运行

sele * from 班级成绩基本表.dbf where 班级='一班' into table 一班成绩表

或者

sele * from 班级成绩基本表.dbf where 班级='二班' into table 二班成绩表

班级统计test.rar (53.62 KB)


[此贴子已经被作者于2016-8-22 17:35编辑过]

搜索更多相关主题的帖子: sql语句 记录 
2016-08-22 17:24
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:2 
用combo嘛,你看看
班级统计test.rar (54.72 KB)
2016-08-22 17:47
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:2 
2、其中第一个按钮为“设置”,点击,打开“设置表单”:
*在 command1.click中
DO FORM g:\班级统计test\设置表单.scx

3、在设置表单里,可以填写“一班”或者“二班”,然后点击“确定”
*在 command1.click中
IF TYPE("gc班级")="U"
   PUBLIC gc班级
ENDIF
gc班级 = ALLTRIM(thisform.text1.Value)
IF EMPTY(gc班级)
   MESSAGEBOX("班级为空")
   RETURN
ENDIF
  
4、然后点击主表单的“计算”按钮:
*在 command2.click中
IF USED("班级成绩基本表")
   SELECT 班级成绩基本表
ELSE
   USE g:\班级统计test\班级成绩基本表.dbf IN 0 ALIAS 班级成绩基本表
ENDIF

SELECT * from 班级成绩基本表 where ALLTRIM(所属班级) = gc班级 into table "g:\班级统计test\"+gc班级+"成绩表"


[此贴子已经被作者于2016-8-22 18:01编辑过]

2016-08-22 17:57
vfpp314
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2016-3-18
得分:0 
回复 2楼 tlliqi
谢谢,不过不是这个意思。。。因为两个班还好,如果很多个班的话,combo会非常非常的长。。。

不过combo的用法学习了,谢谢

sele * from 班级成绩基本表 where 所属班级=allt() into table allt()+"成绩表"

[此贴子已经被作者于2016-8-23 09:17编辑过]

2016-08-23 09:05
vfpp314
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2016-3-18
得分:0 
回复 3楼 mywisdom88
谢谢,我试试看
2016-08-23 09:05
vfpp314
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2016-3-18
得分:0 
回复 3楼 mywisdom88
谢谢,请问第4这个 if语句 的主要作用是什么?

如果不用这个if ,有什么隐患呢?


2016-08-23 09:36
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
if used("表名")
   select 表名
else
  use g:\xxxx\表名 in 0 alias 表名
endif
意思是说,如果“表名”这个表已经打开的话,就选择这个表,(其实,对于 select 语句,可以不选择)
要是没有打开的话,就打开这个表,并用别名为“表名”,(其实,对于 select 语句,可以不先打开,但有时候会有点问题,所有,还是要打开好点)
sele * from 班级成绩基本表 &&这里的“班级成绩基本表”一般是别名,如果不是别名,就要带完整路径,要不,有时候有问题的。
如果“班级成绩基本表”没有打开,
sele * from 班级成绩基本表 &&有时候会报错误,

sele * from g:\xxxx\班级成绩基本表 &&才不会报错误。

但如果“班级成绩基本表”已经打开了,
sele * from 班级成绩基本表 &&就不会报错误。

[此贴子已经被作者于2016-8-23 11:23编辑过]

2016-08-23 11:22
vfpp314
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2016-3-18
得分:0 
回复 7楼 mywisdom88
谢谢,太详细了~~
2016-08-23 11:40
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:2 
sql命令与USE命令没有关系的。

坚守VFP最后的阵地
2016-08-23 11:57
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用sdta在2016-8-23 11:57:07的发言:

sql命令与USE命令没有关系的。

是没有什么太大的关系。书上介绍的,select * from 表 ,是可以自动打开表
如果项目中,没把这个表加进去,同时,表不是默认路径,如:表A在 “g:\我的软件\dat”中,软件默认路径是 “g:\我的软件”
如果你表A没打开时,你这样
select * from 表a &&绝对是报错误
要这样
select * from dat\表a
但如果 表A是打开了的
select * from 表a &&绝对不报错误

由于我们很多时候,习惯了 这样写“select * from 表a”,而不是这样写 “select * from dat\表a”,所以,就变成有关系了,本来是没关系的




[此贴子已经被作者于2016-8-23 12:08编辑过]

2016-08-23 12:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-468095-1-1.html




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

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