| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4206 人关注过本帖
标题:课表调整表单运行出错
只看楼主 加入收藏
王咸美
Rank: 1
等 级:新手上路
帖 子:666
专家分:3
注 册:2018-1-4
结帖率:97.48%
收藏
 问题点数:0 回复次数:27 
课表调整表单运行出错
    运行表单“2018年秋学期课表调整”出错,(我想用表单中输入的内容替换掉kb20180920.dbf中字段内容,如年级:一年级  班级:(1)班 学科:队会 节次:zhou15),现将click事件代码贴出,恳请高手帮忙,万分感谢!

2018年秋学期课表调整.zip (3.8 KB)


click事件代码:
SET TALK OFF
SET SAFETY OFF
SET COMPATIBLE OFF

cCurrentProcedure = SYS(16,1)
nPathStart = AT(":",cCurrentProcedure)- 1
nLenOfPath = RAT("\", cCurrentProcedure) - (nPathStart)
mypath=SUBSTR(cCurrentProcedure, nPathStart, nLenofPath)
SET Default TO (mypath)


PUBLIC cnj,cbj,cxk,cjc
cnj=ALLTRIM(thisform.text1.Value)
cbj=ALLTRIM(thisform.text2.Value)
cxk=ALLTRIM(thisform.text3.Value)
cjc=ALLTRIM(thisform.text4.Value)
use kb20180920
REPLACE cjc with cxk for nj=cnj .and. bj=cbj
browse
搜索更多相关主题的帖子: 调整 表单 SET thisform Value 
2018-12-08 08:28
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
依我之见,下列的代码不应该出现在click()事件中,只能在程序开始时使用,否则很容易运行出错。
SET TALK OFF
SET SAFETY OFF
SET COMPATIBLE OFF

cCurrentProcedure = SYS(16,1)
nPathStart = AT(":",cCurrentProcedure)- 1
nLenOfPath = RAT("\", cCurrentProcedure) - (nPathStart)
mypath=SUBSTR(cCurrentProcedure, nPathStart, nLenofPath)
SET Default TO (mypath)


尤其是这句PUBLIC cnj,cbj,cxk,cjc,在第二次按键之后必定出错,因为重复定义变量了。定义全局变量只能在程序开始时或者不可能会重复执行的位置,例如表单的init事件、load事件等地方。建议楼主多借鉴别人成熟的代码。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2018-12-08 10:11
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2231
专家分:3903
注 册:2007-4-27
收藏
得分:0 
以下是引用王咸美在2018-12-8 08:28:41的发言:

    运行表单“2018年秋学期课表调整”出错,(我想用表单中输入的内容替换掉kb20180920.dbf中字段内容,如年级:一年级  班级:(1)班 学科:队会 节次:zhou15),现将click事件代码贴出,恳请高手帮忙,万分感谢!



click事件代码:
SET TALK OFF
SET SAFETY OFF
SET COMPATIBLE OFF

cCurrentProcedure = SYS(16,1)
nPathStart = AT(":",cCurrentProcedure)- 1
nLenOfPath = RAT("\", cCurrentProcedure) - (nPathStart)
mypath=SUBSTR(cCurrentProcedure, nPathStart, nLenofPath)
SET Default TO (mypath)


PUBLIC cnj,cbj,cxk,cjc
cnj=ALLTRIM(thisform.text1.Value)
cbj=ALLTRIM(thisform.text2.Value)
cxk=ALLTRIM(thisform.text3.Value)
cjc=ALLTRIM(thisform.text4.Value)
use kb20180920
REPLACE cjc with cxk for nj=cnj .and. bj=cbj
browse


你的kb20180920.dbf表中,没有 cjc 这个字段。招待到 REPLACE…… 时肯定是出错了。

只求每天有一丁点儿的进步就可以了
2018-12-08 10:24
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2231
专家分:3903
注 册:2007-4-27
收藏
得分:0 
总课表名称中最好不要带日期。带了日期下一学年就不能用了。

只求每天有一丁点儿的进步就可以了
2018-12-08 10:26
王咸美
Rank: 1
等 级:新手上路
帖 子:666
专家分:3
注 册:2018-1-4
收藏
得分:0 
如何修改代码,还请不吝赐教。
2018-12-08 10:29
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2231
专家分:3903
注 册:2007-4-27
收藏
得分:0 
从表单上看不出实现的目标

只求每天有一丁点儿的进步就可以了
2018-12-08 10:55
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用王咸美在2018-12-8 10:29:24的发言:

如何修改代码,还请不吝赐教。

1.表设计非常不规范,Zhou11~16,Zhou21~26,Zhou31~36,Zhou41~46,Zhou51~56
是什么意思,课程表应该是每周都相同的吧,如果不相同,可以改的
我自己认为,可以这样,比较好,程序容易控制,
课程表(年间,班级,周1,周2,周3,周4,周5,周6,周,学年)
课程表(Nj C(10),Bj C(10),Zhou1 C(10),Zhou2 C(10),Zhou3 C(10),Zhou4 C(10),Zhou5 C(10),Zhou6 C(10),Zhou I,Xn C(10))
如果1个班没周课程都相同,就1个班1个学期只有1行记录,如
一年级,(1)班,数学,语文,美术,科学,班会,体育,1,2018-01
如果每周都不同的,如有23周,就有23行,
2018-12-08 12:00
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用王咸美在2018-12-8 10:29:24的发言:

如何修改代码,还请不吝赐教。

就你问题来说,你cjc代表的是“节次”
cnj=ALLTRIM(thisform.text1.Value)
cbj=ALLTRIM(thisform.text2.Value)
cxk=ALLTRIM(thisform.text3.Value)
cjc=ALLTRIM(thisform.text4.Value)
use kb20180920
REPLACE cjc with cxk for nj=cnj .and. bj=cbj
下面这话的意思是,把字段 CJC 更新 为 变量 CXK 的值,条件是 nj=cnj .and. bj=cbj,但你表没有字段 CJC,把节次更新为学科,怪怪的。。
REPLACE cjc with cxk for nj=cnj .and. bj=cbj
楼主,看看命令
REPLACE FieldName1 WITH eExpression1 [ADDITIVE]
   [, FieldName2 WITH eExpression2 [ADDITIVE]] ... [Scope]
   [FOR lExpression1] [WHILE lExpression2] [IN nWorkArea | cTableAlias]
   [NOOPTIMIZE


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

2018-12-08 12:07
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
对于固定课程的,固定地点的,固定老师的,课程表,还是比较容易,如小学,中学,高中
但对于,动态的课程表,就有点难度了,如大学的,大学城的。
那就设计到很多安排了。
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
2018-12-08 13:40
王咸美
Rank: 1
等 级:新手上路
帖 子:666
专家分:3
注 册:2018-1-4
收藏
得分:0 
一周五天,每天六节课,zhou35表示周三第5节课.因为我是新手,还请各位高手帮忙写点代码,以解决问题,万分感谢!!!
2018-12-08 14:38
快速回复:课表调整表单运行出错
数据加载中...
 
   



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

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