这里有一个快速的东西供你咀嚼。
我为您创建了表格并插入了您的示例数据,尽管您将及时了解表格结构。
至于为表创建列名,尽量不要使用保留字,甚至不要使用可能会导致混淆的函数……例如在本例中为“Class”、“Day”。编码时,您会看到保留字通常以蓝色语法颜色显示。如果您在创建表时使用了该名称,请再次考虑为该列取一个更好的名称。
至于 VFP 列名。如果表不是“数据库容器”的一部分,那么列名限制只有 10 个字符(所以我将您的“Lesson_Name”更改为“LessonName”)。
我正在使用简单的 SQL 查询来做这个示例。您在 VFP 与其他 sql 数据库中看到的查询差异相对较小。重要的是,在 VFP 中,分号表示命令在下一行继续。在 SQL 中,分号通常表示命令的结束。
*/ 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