首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在FoxPro中使用多个表

在FoxPro中使用多个表
EN

Stack Overflow用户
提问于 2014-01-27 21:26:07
回答 1查看 2.2K关注 0票数 0

我的IT课有件棘手的事要做。

代码语言:javascript
复制
Two Tables: 
Classes |Class C-3, Day N-1, Lessons C-7|
Lessons |Lesson C-1, Lesson_Name C-10|

First table:
IX - 1 - MEP    
X - 2 - MBE
XI - 3 - FCM

Second table:
M - Maths
E - English
B - Biology
F - French
P - Physics
C - Chemistry

在第一个表中,“课程”列是“课程名称”(例如)的第一个字符。数学等等)

第二个表格是从第一个表格中输入的经验教训。(第一课-课名前。我需要从键盘输入一个类(使用输入或获取/读取),并写出该类的课程名称。

我希望你能理解我想说的话。

我试图从工作区域中的第一个表的类和经验列中创建两个单独的数组,然后在另一个工作区域中使用第二个表来写出课程名称,但我就是不能让它工作。我很感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-27 23:32:09

这是你要嚼的东西。我为您创建了表,并插入了示例数据,即使表结构,您将更及时地了解。

至于为表创建列名,尽量不要使用保留的词,甚至是可能引起混乱的函数.在这种情况下,“类”、“日”。在编码时,您将看到保留的单词通常以蓝色语法颜色出现。如果在创建表时,请重新考虑列的更好名称。

至于VFP列名。如果表不是“数据库容器”的一部分,那么列名限制仅为10个字符(因此我将您的"Lesson_Name“更改为"LessonName")。

我使用简单的SQL查询来完成这个示例。VFP与其他sql数据库在查询方面的差别相对较小。重要的是,在VFP中,分号表示命令在下一行继续运行。在SQL中,分号通常表示命令的结尾.

代码语言:javascript
复制
*/ Sample... create the tables and insert the values
SET SAFETY OFF
CLOSE TABLES ALL 
CREATE TABLE Classes;
    (    Class C(3),;
        Day N(1),;
        Lessons C(7) )

INSERT INTO Classes ( Class, Day, Lessons );
    VALUES ( "IX", 1, "MEP" )

INSERT INTO Classes ( Class, Day, Lessons );
    VALUES ( "X", 2, "MBE" )

INSERT INTO Classes ( Class, Day, Lessons );
    VALUES ( "XI", 3, "FCM" )

*/ Create the next table and insert their records        
CREATE TABLE Lessons ;
    (   Lesson C(1),;
        LessonName C(10) )

INSERT INTO Lessons ( Lesson, LessonName );
    VALUES ( "M", "Math" )

INSERT INTO Lessons ( Lesson, LessonName );
    VALUES ( "E", "English" )

INSERT INTO Lessons ( Lesson, LessonName );
    VALUES ( "B", "Biology" )

INSERT INTO Lessons ( Lesson, LessonName );
    VALUES ( "F", "French" )

INSERT INTO Lessons ( Lesson, LessonName );
    VALUES ( "P", "Physics" )

INSERT INTO Lessons ( Lesson, LessonName );
    VALUES ( "C", "Chemistry" )


*/ Prepare a look and keep asking until a user hits the escape key (ASCII 27)
DO WHILE LASTKEY() <> 27
    */ prepare a value for data entry of the class
    SomeClass = "   "
    @ 1,1 say "Enter a value for a class (escape or leave blank to exit):" get SomeClass picture "!!!" 
    READ 
    IF EMPTY( SomeClass )
        EXIT 
    ENDIF 

    */ Query the classes table for the value entered
    USE IN SELECT( "FoundClass" )
    SELECT Class, Day, Lessons;
       FROM Classes;
       WHERE Class = SomeClass;
       INTO CURSOR FoundClass READWRITE 

    */ Did we find the class?   
    IF RECCOUNT( "FoundClass" ) = 0
       MESSAGEBOX( "Sorry, class was not found" )
    ELSE 
       */ Now, get all lessons associated with the class.
       USE IN SELECT( "FoundLessons" )
       SELECT Lesson, LessonName;
          FROM Lessons;
          WHERE Lesson $ FoundClass.Lessons;
          INTO CURSOR FoundLessons READWRITE 

        IF RECCOUNT( "FoundLessons" ) = 0
            MESSAGEBOX( "Sorry, no lessons found for the class" )
        ELSE 
            CLEAR
            ?
            ?
            ?
            ? "Class: " + FoundClass.Class, ;
              "  Day: ", FoundClass.Day, ;
              " Lessons: " + FoundClass.Lessons
            ? "Lessons:"  
            SELECT FoundLessons
            SCAN
               ? FoundLessons.LessonName
            ENDSCAN 
        ENDIF 
    ENDIF 

    USE IN SELECT( "FoundClass" )
    USE IN SELECT( "FoundLessons" )
ENDDO
CLEAR
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21392025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档