| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 316 人关注过本帖
标题:怎么在表单中实现,根据学号显示、修改专业
只看楼主 收藏
wedsic
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2017-7-17
结帖率:80%
  已结贴   问题点数:10  回复次数:8   
怎么在表单中实现,根据学号显示、修改专业
如下:


[此贴子已经被作者于2017-8-11 16:33编辑过]

2017-08-10 23:40
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:108
帖 子:3912
专家分:14671
注 册:2014-5-20
  得分:0 
CREATE CURSOR 表1 (学号 C(10))
INSERT INTO 表1 VALUES ("2056001")
INSERT INTO 表1 VALUES ("3078002")
CREATE CURSOR 表2 (代码 C(2), 专业名 C(10))
INSERT INTO 表2 VALUES ("78","物理专业")
INSERT INTO 表2 VALUES ("56","化学专业")
INDEX on 代码 TAG 代码
SELECT 表1
SET RELATION TO SUBSTR(学号,3,2) INTO 表2
BROWSE FIELDS 表1.学号, 表2.专业名
SET RELATION TO
2017-08-11 04:57
wedsic
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2017-7-17
  得分:0 
回复 2楼 吹水佬
不用命令,在表单上如何实现
2017-08-11 09:11
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:108
帖 子:3912
专家分:14671
注 册:2014-5-20
  得分:0 
以下是引用wedsic在2017-8-11 09:11:12的发言:

不用命令,在表单上如何实现

理解SET RELATION TO命令就可以,其他自由发挥。
2017-08-11 10:11
wedsic
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2017-7-17
  得分:0 
回复 4楼 吹水佬
理解,但是在表单里利用控件就不会用了
2017-08-11 10:49
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:108
帖 子:3912
专家分:14671
注 册:2014-5-20
  得分:0 
以下是引用wedsic在2017-8-11 10:49:43的发言:

理解,但是在表单里利用控件就不会用了

可以谈谈你的表单是想怎样处理那些表的数据。
2017-08-11 16:19
wedsic
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2017-7-17
  得分:0 
回复 6楼 吹水佬
如下:

 学生表中字段:                 学号
                               2056001
                                3078002
                             (学号已建立主索引)

 专业表中字段:                代码    专业名
                                56    化学专业
                                78    物理专业
                                ...     ...
表单上的控件:
①浏览学生表的2个按钮按钮,上一个、下一个   
②2个编辑按钮:增加记录、修改记录   
③一个文本框、一个组合框

 说明:
1.学生表中"学号"字段第三、四位是专业代码,和专业表中的代码相对应
2.当按上一个或下一个按钮时,文本框中显示学号,组合框根据学生表中学号字段值的第三四位显示专业表中代码字段相对应的"专业名"
3.当按增加记录按钮时,此时组合框可以编辑,按下拉列表时,显示专业表中的所有专业名称,当选择其中一个专业名称时,学号字段中自动填入相 对应的代码。输入学号中第三四位的内容时必须是专业表中的代码,如果没有就要提示报错,
4.当按修改记录按钮时,此时组合框可以编辑,按下拉列表时,显示专业表中的所有专业名称,当选择其中一个专业名称时,学号字段中自动填入相 对应的代码。修改学号中第三四位的内容时必须是专业表中的代码,如果没有就要提示报错



 文本框中显示学号我知道只要建立数据源就可以了,但是组合框怎么实现以上功能呢?

[此贴子已经被作者于2017-8-11 16:55编辑过]

附件: 您没有浏览附件的权限,请 登录注册
2017-08-11 16:33
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:108
帖 子:3912
专家分:14671
注 册:2014-5-20
  得分:10 

** test.prg
CREATE CURSOR 表1 (学号 C(10))
INSERT INTO 表1 VALUES ("2056001")
INSERT INTO 表1 VALUES ("3078002")
CREATE CURSOR 表2 (代码 C(2), 专业名 C(10))
INSERT INTO 表2 VALUES ("78","物理专业")
INSERT INTO 表2 VALUES ("56","化学专业")
INDEX on 代码 TAG 代码
SELECT 表1
SET RELATION TO SUBSTR(学号,3,2) INTO 表2
GO TOP
of = CREATEOBJECT("myForm")
of.show
READ EVENTS
SET RELATION TO
RETURN

DEFINE CLASS myForm as Form
    ADD OBJECT label1 as label WITH top=14,left=10,caption="学号"
    ADD OBJECT text1 as textbox WITH top=10,left=40
    ADD OBJECT label2 as label WITH top=14,left=160,caption="专业名"
    ADD OBJECT combo1 as combobox WITH top=10,left=200,style=2,rowsourcetype=3,;
        rowsource="SELECT 专业名,代码 FROM 表2 INTO CURSOR 专业名列表"
    ADD OBJECT cmd1 as commandbutton WITH top=2,left=320,width=40,height=22,caption="添加"
    ADD OBJECT cmd2 as commandbutton WITH top=26,left=320,width=40,height=22,caption="修改"
    ADD OBJECT grid1 as myGrid WITH top=50
   
    PROCEDURE unload
        CLEAR EVENTS
    ENDPROC
   
    PROCEDURE init
        this.grid1.setfocus
        this.grid1.click
    ENDPROC
        
    PROCEDURE grid1.click
        thisform.text1.value = 表1.学号
        thisform.combo1.value = 表2.专业名
    ENDPROC

    PROCEDURE grid1.AfterRowColChange(nColIndex)
        this.click
    ENDPROC
   
    PROCEDURE combo1.InteractiveChange
        thisform.text1.value = LEFT(thisform.text1.value,2)+专业名列表.代码+SUBSTR(thisform.text1.value,5)
    ENDPROC
   
    PROCEDURE cmd1.click
        IF SEEK(SUBSTR(thisform.text1.value,3,2), "表2")
            INSERT INTO 表1 VALUES (thisform.text1.value)
            thisform.grid1.setfocus
        ELSE
            MESSAGEBOX("学号中专业代码无效")
        ENDIF
    ENDPROC

    PROCEDURE cmd2.click
        IF SEEK(SUBSTR(thisform.text1.value,3,2), "表2")
            REPLACE 表1.学号 WITH thisform.text1.value IN "表1"
            thisform.grid1.setfocus
        ELSE
            MESSAGEBOX("学号中专业代码无效")
        ENDIF
    ENDPROC
ENDDEFINE

DEFINE CLASS myGrid as grid
    RecordSource="表1"
    AllowCellSelection=.F.
    ColumnCount=2
   
    PROCEDURE init
        this.Column1.ControlSource="表1.学号"
        this.Column2.ControlSource="表2.专业名"
    ENDPROC
ENDDEFINE
附件: 您没有浏览附件的权限,请 登录注册
2017-08-11 22:21
wedsic
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2017-7-17
  得分:0 
回复 8楼 吹水佬
谢谢 水大侠
7 天前 00:18









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

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