Распечатать страницу

Пример с запросом к нескольким таблицам в VFP

« Назад

Из источника данных BookSaleDataBase выбираются сведения о книгах, изданных ранее 1987 г. После чего принимается решение об удалении выбранных записей из таблиц Titles и Title Author.

nStHandle = SQLConnect('BookSaleDataBase')

&&

&& Текст запроса

StmtStr = 'select Authors.Author, Publishers.Name as Publisher, ;

Titles.Title, Titles.[Year Published] as Year_Published, Titles.ISBN ' ;

+ ' from Authors, Publishers, Titles, [Title Author] as Title_Author ' ;

+ ' where Authors.Au_ID = Title_Author.Au_ID ;

and Titles.ISBN = Title_Author.ISBN ;

and Titles.PubID = Publishers.PubID ;

and Titles.[Year Published] < 1987 ' ;

+ ' order by Authors.Author'

&&

&& Выполняем запрос

SQLExec(nStHandle, StmtStr, 'OldBooks')

if Reccount( ) > 0 then

&&

&& Возможный результат см. на рис. 16.16

browse last

nMsg = MessageBox("Удалить записи из таблиц Titles и Title Author?", ;

4 + 32 + 256)

if nMsg = 6 then

&& Нажата кнопка "Да"

&& Удаляем записи. Для этого просматриваем

&& курсор OldBooks, беря из него значение поля ISBN

scan

SQLExec(nStHandle, 'delete from Titles ' ;

+ ' where Titles.ISBN = ?OldBooks.ISBN')

SQLExec(nStHandle, 'delete from [Title Author] ' ;

+ ' where [Title Author].ISBN = ?OldBooks.ISBN')

endScan

endif

else

MessageBox("Нет книг, удовлетворяющих условию Year Published < 1987")

endif

&&

&& Разрываем SQL-соединение

SQLDisconnect(nStHandle)

244.1.-Одна-запись-курсора-OldBooks

Рис. 16.16. Одна запись курсора OldBooks