标题:VFP问题求助
只看楼主
q497968586
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2011-12-11
得分:0 
回复 10楼 tlliqi
还是不行,出现这问题,所有有关的命令查询的题目都无法接着做,还是很感谢你的耐心帮忙
2011-12-11 22:00
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:10 
把如下代码黏贴到test1.prg文件中执行,仍如上一问题,把路径改好。

程序代码:
SET DEFAULT TO "E:\My Documents\Visual FoxPro Projects\q497968586"
CLEAR ALL
CLOSE DATABASES ALL
CLEAR
USE student ORDER 学号 IN 0
USE grade ORDER 学号 IN 0
SELECT grade
SET RELATION TO 学号 INTO student
GOTO TOP
DO WHILE !EOF()
    ? grade.课程号, grade.学号, grade.成绩, student.姓名, student.专业, student.出生日期
    SELECT grade
    SKIP
ENDDO
CLOSE DATABASES ALL

授人以渔,不授人以鱼。
2011-12-11 23:11
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
回复 11楼 q497968586
你不要在命令窗口运行你的程序,就像12楼的例子,要么用程序,要么用表单
2011-12-11 23:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
楼主,仔细看12楼的代码,关键在SET RELATION TO命令,建立两表的关联后,随便主表grade的记录指针怎么动,子表student的记录指针也会自动跟着走,在"学号"上是匹配的,这样两个表实际上等于一个表看待,正如后面?输出的用法显示那样,两个表的数据视为同一条记录,无需建立视图什么的。这样关联之后,即使你用grid控件浏览数据,两个grid表的指针也是联动的。把两个grid合成一个grid也可以,这样根本看不出grid的数据来自两个不同的表。多表关联也可以的,一个表与多个表同时关联也可以。关系数据库,这就是关系,不要动不动就搞视图,只读的视图还好,要在视图上修改数据灌回去原始数据源,嘿嘿,等着崩溃吧,不是电脑崩溃就是你的大脑崩溃。

[ 本帖最后由 TonyDeng 于 2011-12-11 23:37 编辑 ]

授人以渔,不授人以鱼。
2011-12-11 23:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
你再运行下面的程序看看:

程序代码:
SET DEFAULT TO "E:\My Documents\Visual FoxPro Projects\q497968586"
CLEAR ALL
CLOSE DATABASES ALL
CLEAR
USE student IN 0
USE grade ORDER 学号 IN 0
SELECT student
SET RELATION TO 学号 INTO grade
GOTO TOP
Form1 = CREATEOBJECT("C_Form")
Form1.Show
READ EVENTS
CLOSE DATABASES ALL
RETURN 

DEFINE CLASS C_Form AS Form
    Caption = "q497968586的问题"
    Width = 700
    Height = 400
    AutoCenter = .T.
   
    ADD OBJECT Grid1 AS Grid WITH Top = 5, Left = 5, Height = 200, Width = 300
    ADD OBJECT Grid2 AS Grid WITH Top = 5, Left = 310, Height = 200, Width = 300
   
    PROCEDURE Init
        WITH ThisForm
            .SetAll("HighlightStyle", 2, "Grid")
            .SetAll("RecordSourceType", 1, "Grid")
            WITH .Grid1
                .ColumnCount = FCOUNT("student")
                .RecordSource = "student"
            ENDWITH
            WITH .Grid2
                .ColumnCount = FCOUNT("grade")
                .RecordSource = "grade"
            ENDWITH
        ENDWITH
    ENDPROC
   
    PROCEDURE Destroy
        CLEAR EVENTS
    ENDPROC
   
ENDDEFINE

授人以渔,不授人以鱼。
2011-12-12 00:16



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




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

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