|
ThisForm.Label4.Visible =.F.
ThisForm.Label5. Visible =.7.
ThisForm.Label6. Visible =.F.
ThisForm.Label7.Visible =.F.
ThisForm.Label8.Visible =.F.
ThisForm.Label9. Visible = -F.
ThisForm.Label10.Visible =.F.
ThisForm.Labell1.Visible = -F.
ThisForm.Labell.Caption = 'Ключ' ThisForm.Labe12.Caption = 'Имя'
ThisForm.Textl. Visible =.T.
ThisForm.Text2.Visible =.T.
ThisForm.Text3.Visible =.F.
ThisForm.Text4.Visible =.F.
ThisForm. Text 5. Visible =.F.
ThisForm.Text6.Visible =.F.
ThisForm.Text7.Visible =.F.
ThisForm.Text8.Visible =.F.
ThisForm. Text 9.Visible =.F.
' ThisForm.TextlO.Visible =.F.
ThisForm.Textll. Visible =.F.
в. Кнопка «Отчество»
CLOSE INDEX SELECT Ot
SET INDEX TO Ot.cdx ORDER TAG Name Ogl = 3
ThisForm.Gridl.Columnl.Visible =.F. ThisForm.Gridl.Column2.Visible =.F. ThisForm.Gridl.Column3.Visible =.F. ThisForm.Gridl.Column4.Visible =.F. ThisForm.Gridl.Column5.Visible =.F. ThisForm.Gridl.Column6.Visible =.F. ThisForm.Gridl.Column?.Visible =.T. ThisForm.Gridl.Column8.Visible =.F. ThisForm.Gridl.Column9.Visible =.F.
ThisForm.Labell.Visible =.T.
ThisForm.Label2.Visible =.T.
ThisForm.Label3.Visible = -F.
ThisForm.Label4.Visible =.F.
ThisForm.Label5.Visible =.F.
ThisForm.Label6.Visible =.F.
ThisForm.Label7.Visible =.F.
ThisForm.Label8.Visible =.F.
ThisForm.Label9.Visible =.F.
ThisForm.LabellO.Visible =.F.
ThisForm.Labelll.Visible =.F.
ThisForm.Labell.Caption = 'Ключ' ThisForm.Label2.Caption = 'Отчество'
ThisForm.Textl.Visible =.T.
ThisForm.Text2.Visible =.T.
ThisForm.Text3.Visible =.F.
ThisForm.Text4.Visible =.F.
ThisForm.Text5.Visible =.F.
•ThisForm. Text6.Visible =.F.
ThisForm.Text7.Visible =.F.
ThisForm.Text8.Visible =.F.
ThisForm.Text9.Visible = -F.
ThisForm.Text10.Visible = -F.
ThisForm.Textll.Visible =.F.
г. Кнопка «Город -
SELECT Town Ogl = 4
ThisForm.Gridl.Colunnl.Visible =.F. ThisForm.Gridl.Column2-Visible =.F. ThisForm.Gridl.Column3.Visible =.F. ThisForm.Gridl.Columr.4. Visible = ThisForm.Gridl.Columns.Visible =.F. ThisForm.Gridl.Column6.Visible =.F. ThisForm.Gridl.Column7.Visible =.F. ThisForm.Gridl.Column8.Visible =.T. ThisForm.Gridl.Column9.Visible *.F.
ThisForm.Labell.Visible =.T.
ThisForm.Label2.Visible =.T.
ThisForm.Label3.Visible =.F.
ThisForm.Label4.Visible =.F.
ThisForm.LabelS.Visible =.F.
ThisForm.Label6.Visible =.F.
ThisForm.Label7.Visible =.F.
ThisForm.Label8.Visible = -F.
ThisForm.Label9.Visible = -F.
ThisForm.LabellO.Visible =.F.
ThisForm.Labelll.Visible =.F.
ThisForm.Labell.Caption = 'Клоч'
ThisForm.Label2.Caption = 'Город'
ThisForm.Text1.Visible =.T.
ThisForm. Text2.Visible =.T.
ThisForm.Text3.Visible =.F.
ThisForm.Text4.Visible =.F.
ThisForm.Text5.Visible =.F.
ThisForm.Text6.Visible =.F.
ThisForm.Text7.Visible =.F.
ThisForm.Text8.Visible =.F.
ThisForm.Text9.Visible =.F.
ThisForm.TextlO.Visible =.F.
ThisForm.Textll.Visible =.F.
_screen.ActiveForm.Refresh()
д. Кнопка «Улица*
SELECT Street Ogl = 5
ThisForm.Gridl-Columnl.Visible =.F. ThisForm.Gridl.Column2.Visible =.F. ThisForm.Gridl.Column3.Visible =.F. ThisForm.Gridl.Column4.Visible =.F. ThisForm.Gridl.Со1шт5.Visible =.F. ThisForm.Gridl.Column6.Visible =.F. ThisForm.Gridl.Column7.Visible =.F. ThisForm.Gridl.Column8.Visible =.F. ThisForm..Gridl.Column9.Visible = -T. ThisForm.Labell.Visible =.T.
ThisForm.Label2.Visible =.T.
ThisForm.Label3.Visible =.F.
ThisForm.Label4.Visible =.F.
ThisForm.Labe15.Visible =.F.
ThisForm.Label6.Visible =.F.
ThisForm.Label7.Visible =.F.
ThisForm.Label8.Visible =.F.
ThisForm.Label9.Visible =.F.
ThisForm.LabellO.Visible =.F.
ThisForm.Labelll.Visible =.F.
ThisForm.Labell.Caption = 'Ключ' ThisForm.Label2.Caption = 'Улица'
ThisForm.Text1.Visible =.T.
ThisForm.Text2.Visible =.T.
ThisForm.Text3.Visible =.F.
ThisForm.Text4.Visible =.F.
ThisForm.Text5.Visible =.F.
ThisForm.Text6.Visible =.F.
ThisForm.Text7.Visible =.F.
ThisForm.Text8.Visible =.F.
ThisForm.Text9.Visible = -F.
ThisForm. TextlO. Visible =.F.
ThisForm.Textll.Visible =.F.
_screen.ActiveForm.Refresh()
e. Кнопка «Клиент»
SELECT Customer Ogl = 6
SET INDEX TO Customer, cdx ORDER TAG Cust ThisForm.Gridl.Visible =.T.
ThisForm.Grid2.Visible =.F.
ThisForm.Grid3.Visible =.F.
ThisForm.Gridl.Columnl. Visible =.T.
ThisForm.Gridl.Column2.Visible =.T. ThisForm.Gridl.Column3.Visible =.T.
ThisForm.Gridl.Column4.Visible =.T.
ThisForm.Gridl.Columns.Visible =.T.
ThisForm.Gridl.Column6.Visible =.T. ThisForm.Gridl.Column7.Visible =.T. ThisForm.Gridl.Columns-Visible =.T. ThisForm.Gridl.Column9.Visible =.T. ThisForm. Label l.i'isible =.T.
ThisForm.Label2.Visible =.T.
ThisForm.Label3.Visible =.T.
ThisForm.Label4.Visible =.T.
ThisForm.Label5.Visible =.T.
ThisForm.Label6.Visible =.T.
ThisForm.Label7.Visible =.T.
ThisForm.Label8.visible =.T.
ThisForm.Label9.visible =.T.
ThisForm.LabellO.Visible =.T.
ThisForm.labelll.Visible =.T.
ThisForm.Text 1.Visible =.T.
ThisForm.Text2.Visible =.T.
ThisForm.Text3.Visible =.T.
ThisForm.Text4.Visible =.T.
ThisForm.Text5.Visible =.T.
ThisForm.Text6.Visible =.T.
ThisForm.Text7.Visible =.T.
ThisForm.Text8.Visible =.T.
ThisForm.Text9.Visible =.T.
ThisForm.TextlO.Visible =.T.
ThisForm.Textll.Visible =.T.
ThisForm.Labe11.Caption = 'Ключ'
ThisForm.Label2.Caption = 'Фирма'
_screen.Act iveForm.Refresh()
Обработчик нажатия кнопки «Первая»
* Переход на первую запись IF!BOF()
GO TOP
DO CASE Case Ogl =1
ThisForm.Text1.Value = Fam.Key_fam
ThisForm.Text2.Value = Fam.Kame_fam
SET MESSAGE TO 'Нажата кнопка с номером 1' Case Ogl = 2
ThisForm.Textl.Value = Im.Xey_im
ThisForm.Text2.Value = Im.Name_im
SET MESSAGE TO 'Нажата кнопка с номером 2' Case Ogl = 3
ThisForm.Texcl.Value = 0~.Xey_ot
ThisForm.Texc2.Value - Ot.Name_ot
SET MESSAGE TO 'Нажата кнопка с номером 3' OTHERWISE
SET MESSAGE TO 'Нажата кнопка с номером 'более 3'
ENDCASE
ENDIF
..screen. Act iveForm. Refresh ()
Обработчик нажатия кнопки «Следующая*
* Переход к следующей записи I? 1E0F()
SKIP
DO CASE Case Ogl =1
ThisForm.Textl.Value = Fam.Key_fam ThisForm.Text2.Value = Fam.Name_fam SET MESSAGE TO 'Нажата кнопка с номером 1'
Case Ogl = 2
ThisForm.Text1.Value = Im.Key_im
ThisForm.Text2-Value = Im.Name_im
SET MESSAGE TO 'Нажата кнопка с номером 2'
■ Case Ogl = 3
ThisForm.Text1.Value = Ot.Key_ot
ThisForm.Text2.Value = Ot.Name_ot
SET MESSAGE TO 'Нажата кнопка с номером 3' OTHERWISE
SET MESSAGE TO 'Нажата кнопка с номером '+; 'более 3'
ENDCASE
ENDIF
_screen.Act iveForm.Re fresh()
Обработчик нажатия кнопки «Предыдущая*
* Переход к предыдудей записи IF!B0F()
SKIP - 1 DO CASE Case Ogl =1
ThisForm.Text1.Value = Fam.Key_£am
ThisForm.Text2.Value = Fam Name_fam
SET MESSAGE TO 'Нажата кнопка с номером 1' Case Ogl = 2
ThisForm.Textl.Value = Im.Key_im
ThisForm.Text2.Value = Im.Name_im
SET MESSAGE TO 'Нажата кнопка с номером 2' Case Ogl = 3
ThisForm.Textl.Value = Ot.Key_ot
ThisForm.Text2.Value = Ot.Name.ot
SET MESSAGE TO 'Нажата кнопка с номером 3'
OTHERWISE
SET MESSAGE ТО 'Нажата кнопка с номером '+; 'более 3'
ENDCASE
ENDIF
screen.ActiveForm.Refresh()
Обработчик нажатия кнопки «Последняя>
* Переход к последней записи
IF LB0FO GOTO BOTTOM DO CASE Case Ogl =1
ThisForm.Textl.Value = Fam.Key_fam
ThisForm.Text2. Value -*= Fair..hame_fam SET MESSAGE TO 'Нажата кнопка с номером 1' Case Ogl = 2
Thi sForm.Text1.Value = Im.Key_im
ThisForm.Text2.Value = Im.Name_im
SET MESSAGE TO 'Нажата кнопка с номером 2' Case Ogl = 3
ThisForm.Textl.Value = Ot.Key_ot
ThisForm.Text2.Value = Ot.Name_ot
SET MESSAGE TO 'Нажата кнопка с номером 3' OTHERWISE
SET MESSAGE TO 'Нажата кнопка с номером '+; 'более 3'
ENDCASE
ENDIF
—screen.Act iveForm.Refresh()
Обработчик нажатия кнопки «Поиск*
ThisForm.Gridl.Visible =.F.
ThisForm.Grid2.Visible =.F.
ThisForm.Grid3.Visible =.F.
ThisForm.Labell2.Visible =.T.
ThisForm.Textl2.Visible =.T.
ThisForm.Labell2.Caption = 'Условие поиска'
DO CASE Case Ogl =1
nn = ThisForm.Text12.Value
LOCATE FOR Fam.Name_fam = ALLTRIM(nn)
IF FOUND() THEN
ThisForm.Textl.Value = Fam.Key_fam ThisForm.Text2.Value = Fam.Name_£am ELSE
IF MESSAGEBOX('Фамилия не найдена',;
6 + 32 + 256, 'Выход') = б THEN
ENDIF
ENDIF
SET MESSAGE TO 'Нажата кнопка с номером 1' Case Ogl = 2
nn = ThisForm.Textl2.Value
LOCATE FOR Im.Name_im = ALLTRIM(nn)
IF FOUND0 THEN
ThisForm.Textl.Value = Im.Key_im
ThisForm.Text2.Value = Im.Name_im
ELSE
IF MESSAGEBOX{'Имя не найдено',;
6 + 32 + 256, 'Выход') = 6 THEN
ENDIF
ENDIF
SET MESSAGE TO 'Нажата кнопка с номером 2'
Case Ogl =3
nn = ThisForm.Text12.Value
LOCATE FOR Ot.Name_ot = ALLTRIM(nn)
IF FOUND{) THEN
ThisForm.Textl.Value = Ot.Key_ot ThisForm.Text2.Value = Ot.Name_ot ELSE
IF MESSAGEBOX('Отчестве не найдено*.; 6+32+256. 'Выход') = 6 THEN ENDIF ENDIF
SET MESSAGE TO 'Нажата кнопка с номером 3' OTHERWISE
SET MESSAGE TO 'Нажата кнопка с номером 'более 3'
ENDCASE
Обработчик нажатия кнопки «Фильтр»
ThisForm.Gridl.Visible =.F.
ThisForm.Grid2.Visible =.F.
ThisForm.Grid3.Visible =.F.
ThisForm.Labell2.Visible =.T.
ThisForm.Textl2.Visible =.T.
ThisForm.Labell2.Caption = 'Условие фильтра'
CLEAR DO CASE Case Ogl =1 1=0
nn = ThisForm.Textl2.Value 1 = LEN(ALLTRIM(nn))
k = RAT(';', ALLTRIM(nn))
ml = SUBSTR(nn, 1, 1-2)
m2 = SUBSTR(nn, 1)
IF 1 >0 THEN
ACTIVATE WINDOW Filer SHOW WINDOW Filtr BROWSE IN WINDOW Filtr;
FOR Name_fam > ml.AND. Name_fam < m2; FIELDS Key_fam:H = «Ключ», Name_fam:h =«Имя»; FONT «Times New Roman», 12 STYLE «В1»
ENDIF
ThisForm.Textl2.Value = '' && пустая строка SET MESSAGE TO 'Нажата кнопка с номером 1'
Case Ogl = 2 1=0
nn = ThisForm.Text12.Value 1 = LEN(ALLTRIM(nn))
k = RAT(*;', ALLTRIM(nn)) ml = SUBSTR(nn, 1, 1-2) m2 = SUBSTR(nn, 1)
IF 1 >0 THEN ACTIVATE WINDOW Filtr SHOW WINDOW Filtr
BROWSE IN WINDOW Filtr FOR Name_im > ml.AND.; Name_im < m2;
FIELDS Key_im:H = 'Ключ', Name_im:h =‘Имя'; FONT 'Times New Roman', 12 STYLE 'BI'
ENDIF
ThisForm.Text12.Value = " && пустая строка
SET MESSAGE TO 'Нажата кнопка с номером 2'
Case Ogl = 3 1=0
nn = ThisForm.Textl2.Value 1 = LEN(ALLTRIM(nn))
k = RAT(';', ALLTRIM(nn))
ml = SUBSTR(nn, 1, 1-2)
m2 = SUBSTR(nn, 1)
IF 1 >0 THEM ACTIVATE WINDOW Filtr SHOW WINDOW Filtr
BROWSE IN WINDCW Filtr FOR Name_ot > ir.l.AND.; Name_ot < m2;
FIELDS Key_ot:H = 'Ключ', Name_ot;h ='Имя'; FONT 'Times New Roman', 12 STYLE 'BI'
ENDIF
ThisForm.Textl2.Value = " && пустая строка
SET MESSAGE TO 'Нажата кнопка с номером 3' OTHERWISE
SET MESSAGE TO 'Нажата кнопка с номером ' +; 'более 3'
ENDCASE
Обработчик нажатия кнопки «Добавить*
DO CASE
Case Ogl = 1
nn = ThisForm.Text2.Value
LOCATE FOR Fam.Name_£am = ALLTRIM (nn)
IF FOUND() THEN
IF MESSAGEBOX('Дубликат фамилии ' + nn,;
6 + 32 + 256,'Выход') = 6 THEN ENDIF ELSE
SET ORDER TO TAG Fam OF Fam.cdx GOTO BOTTOM n = Fam.Key_£am + 1
APPEND BLANK
REPLACE Fam.Key_fam WITH n,;
Fam.Name_fam WITH ThisForm.Text2.Value ENDIF
Case Ogl = 2
nn = ThisForm.Text2.Value
LOCATE FOR Im.Name_im = ALLTRIM(nn)
IF FOUND() THEN IF MESSAGEBOX('Дубликат имени ' + nn,;
6 + 32 + 256,'Выход') = 6 THEN ENDIF ELSE
SET ORDER TO TAG Im OF Im.cdx GOTO BOTTOM n = Im.Key_im + 1
APPEND BLANK
REPLACE Im.Key_im KITH n, Im.Name_im; WITH ThisForm.Text2.Value
ENDIF Case Ogl = 3
nn = ThisForm.Text2.Value
LOCATE FOR Ot.Nair.e_ot = ALLTRIM (nn)
IF FOUND() THEN IF MESSAGEBOX('Дубликат отчества ' + nn,; 6 + 32 + 256.«Выход») = 6 THEN
ENDIF
ELSE
SET ORDER TO TAG Ot OF Ot.cdx GOTO BOTTOM n = Ot.Key_ot + 1
APPEND BLANK
REPLACE Ot.Key_ot WITH n, Ot.Name_ot; WITH ThisForm.Text2.Value
ENDIF
ENDCASE
Обработчик нажатия кнопки «Выход*
* выход из формы с подтверждением
1? MESSAGEBOX('Выдти из формы?',4-32-256,'Зыход'} = б _screen.Act iveForm.Release()
ELSE
_screen.Act iveFom. Refresh ()
ENJIF
Поиск настроен на неточное совпадение, то сеть вводятся несколько первых символов искомого значения. На экран выводится первое найденное значение. Так как поиск производится по индексному полю, то значения содержащие первые одинаковые символы размещаются друг за другом (рис. 10.4).
При фильтрации в условии фильтра сначала указывается нижняя граница (строго меньше), затем разделитель (символ «> — точка с запятой) и далее верхняя граница (строго меньше). Пробе-
Условие пенсия |
I----------- * [top |
Добавить | |
Пои с г iV iT I 1 п. |
J |
Смпьтр |
ы Первая j Следующая [ Предыдущая | Последняя } Выход Рис. 10.4. Поиск в таблице «Фамилия». |
| ||
| £л»«| Имл |
|
II | Щу Валентина |
|
| 4 Валерий |
|
| t Виктор |
|
■ | И Владимир | —. |
ИМЯ |
rU.tnilfl £ ИМЯ ; Г /'Гсздд ~ Уякцз Г Клиент |
floBatxtt
i |
Уучи.кчЬхпьтза
Поиск |
|w J
Фильтр |
J
Персая | Слгдющэя | Пргдыдацая | f П«-адндя | 8ыюд' | Рис. 10.5. Фильтрация таблицы «Имя».
лы внутри условия фильтра запрещены. Результат фильтрации приведен на рис. 10.5.
При добавлении значений в родительскую таблицу («Фамилия», «Имя» и «Отчество») поле ключа не заполняется. Уникальное значение первичного ключа присваивается автоматически.
10.5. КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Для каких целей используют элементы управления?
2. Что такое класс?
3. Что такое объект?
4. Назовите ключевые слова для доступа к объектам.
5. Что из себя представляет экранная форма и для каких целей она используется?
6. Назовите два способа создания экранной формы.
7. Укажите назначение и основные принципы работы с Мастером форм.
8. Укажите назначение и основные принципы работы с Конструктором форм.
9. Укажите назначение режима проектирования в Конструкторе форм.
10. Как установить режим проектирования в Конструкторе форм?
11. Укажите назначение рабочего режима в Конструкторе форм.
12. Как перейти в рабочий режим в Конструкторе форм?
13. Укажите назначение панели инструментов Form Controls в Конструкторе форм.
14. Укажите назначение панели инструментов Fomi Designer и Конструкторе форм.
15. Укажите назначение панели инструментов Layout в Конструкторе форм
16. Укажите назначение панели инструментов Color Palette в Конструкторе форм.
17. Какие действия надо выполнить для размещения компонента на форме?
18. Как сделать компонент активным (пассивным)?
19. Укажите назначение окна Properties. Для какого компонента предназначено окно Properties?
20. Объясните назначение вкладок окна Properties: All. Data, Methods, Layout и Other.
21. Назовите два способа задания свойств и методов компонента.
22. Как удалить компонент с формы?
23. Как установить на форме вспомогательную сетку?
24. Что такое фокус управления?
25. Как изменить порядок обхода элементов управления (компонент)?
26. Укажите основные свойства и методы компонента «Форма».
27. Укажите основные свойства и методы компонента «Label».
28. Укажите основные свойства и методы компонента «TextBox*.
29. Укажите основные свойства и методы компонента «EditBox*.
38 Укажите основные свойства и методы компонента
«Command Button».
Укажите основные свойства и методы компонента
«CommandG roup*.
* Укажите основные свойства и методы компонента «Option Group».
. Укажите основные свойства и методы компонента «CheckBox».
и» Ui и* и* ы и> ы «90 9\ 'Л ^ Ы |
. Укажите основные свойства и методы компонента ListBox».
. Укажите основные свойства и методы компонента «ComboВох».. Укажите основные свойства и методы компонента «Spinner».
. Укажите основные свойства и методы компонента «Line*.
. Укажите основные свойства и метопы компонента «Shape».
. Укажите основные свойства и методы компонента «Image».
40. Укажите основные свойства и методы компонента «General*.
Глава 11
ОСНОВЫ ЯЗЫКА ЗАПРОСОВ SQL
Структурированный язык запросов SQL является универсальным средством управления базами данных. Этот язык предусмотрен практически во всех системах управления базами данных. С помощью языка SQL можно как создавать новые объекты, так и управлять существующими объектами. Рассмотрим основные команды языка SQL.
11.1. СОЗДАНИЕ ТАБЛИЧНОГО ФАЙЛА
CREATE TABLE | DBF <имятаблицы>
(NAME <длинное имя таблицы> 1 FREE J
(<имя поля 1> <тнп поля 1> [<шириня поля 1> [, <т©чность> ] 1) (NULL | NOT NULL]
I CHECK <выр.1> [ ERROR «сообщение> ] ]
[ DEFAULT <выр.> ]
(PRIMARY KEY [<выр.> TAG <имятега>] |
UNIQLE [<выр.> TAG <нмятега>]]
(FOREIGN KEY <выр>ТАС <имятега>
[REFERENCES <нмя таблнды> I TAG <нмя тега 1> ] ] t NOCPTRANS ]
1(<имяполя2>...)]
I FROM ARRAY <нмямассива>
Команда создает таблицу либо описанием всех полей, либо на основе массива. Таблица создается и открывается в исключительном режиме в самой младшей доступной рабочей обла- задании меню таблицы опции TABLE и DBF идеи-
NAME <длинное имя табляцы> — задаст длинное имя таблицы до 128 символов. Длинное имя используется для таблиц, которые являются частью базы данных
TREE — опция указывает на то что создаваемая таблица не является частью открытой в данный момент базы данных. Если при создании таблицы ист открытых баз данных, то опцию указывать не обязательно.
(<имя поля 1> <тип поля 1> [<ширина поля 1> [, <точность> ] ]) —
параметры, которые используются для описания каждого поля. Первые два параметра обязательны для полей.любых типов.1 <ширина поля > используется для символьных и числовых полей. <точность> используется для числовых полей с плавающей точкой или двойной точности. Тип поля может быть задан одним символом
С —символьный D —тип даты Т —тип дата- N —числовой
время
Y — денежный L — логический М — тип Memo G — обшее поле
F — с плавающей В — поля двойной Р — поля рисунков
точкой точности
NULL | NOT NULL — разрешает или запрещает пустое (нулевое) значение поля.
CHECK <выр.1> — задает условие достоверности вводимого значения поля. В опции ERROR можно зачать собственное сообщение об ошибке.
DEFAULT <выр.> — задает значение поля по умолчанию. PRIMARY KEY [ <выр.> TAG <имя тега> ] — создает первичный ключ. Первичный ключ создастся по полю, которое указано перед этой опцией. Если добавлено <выр.>, то первичный ключ создается в соответствии с указанным выражением. Если добавлено TAG <имя тсга>, то первичный ключ создается на основе указанного индекса. Каждая таблица может иметь только один первичный ключ.
UNIQUE [<выр.> TAG <имя тега> ] — создает альтернативный ключ. Правила создания альтернативного ключа анало! ичнЫ правилам создания первичного ключа.
FOREIGN KEY <выр.> TAG <имя тега> — создаст внешний ключ для связи с родительской таблицей.
REFERENCES <имя таблицы> [ TAG <имя тега 1> ] — задает имя родительской таблицы, а при необходимости и имя индекса в родительской таблице. Если опция TAG опущена, то связь устанавливается с первичным ключом родительской таблицы. NOCPTRANS — запрещает использование символьных полей и полей типа Memo в различных кодовых страницах.
Указанные опции могут быть повторены для любот поля таблицы.
FROM ARRAY <нмя массива> — позволяет создать таблицу на основе массива, а не описывать каждое поле.
11.2. ДОБАВЛЕНИЕ ЗАПИСЕЙ В ТАБЛИЦУ
В конец таблицы можно добавить записи либо с клавиатуры, либо из массива, либо из переменных памяти.
а. Добавление записей с клавиатуры.
INSERT INTO <имятаблнцы>
[ ([<нчя пазя 1> [, <нмя паля 2>... ]))
VALUES (<выр.1> [, <выр.2> [,... ]))
При этом порядок указания имен полей произвольный, но в опции VALUES тип каждого значения должен соответствовать типу поля. Имена полей указаны в круглых скобках после имени таблицы.
Если при добавлении новой записи в таблицу значения заносятся во все поля и значения располагаются строго по порядку описания полей, то в формате команды допускается не указывать имена полей:
INSERT INTO <имя таблнкы>
values (<выр.1> [, <выр.2> [,... ] ])
б. Добавление записей из массива.
INSERT INTO <имятаблнцы> FROM ARRAY <нмямассива>
«• Добавление записей из переменных памяти.
INSERT into <имятаблицы> FROM MEMVAR
В любом из трех случаев программист должен следить за со- °тветствием типов вводимых данных типам полей таблицы.
11.3. РЕДАКТИРОВАНИЕ ЗАПИСЕЙ ТАБЛИЦЫ
Любую запись (или группу записей) в таблице можно отредактировать. Для этого предназначена команда:
UPDATE <нчя таблицы>;
SET <имя поля 1> = <значение 1> [, <ммя поля 2> ™
<значенис 2>... ];
WHERE <нмя поля ионска> = <)словие нонска>
Если опция WHERE опущена, то замена значения будет произведена во всем столбце.
11.4. ВЫБОР ДАННЫХ ИЗ ТАБЛИЦЫ
Команда SELECT позволяет производить выборку данных как из одной таблицы, так и из нескольких взаимосвязанных таблиц, и помещать результат выборки либо в новую таблицу, либо в другой приемник данных. Отобранные данные могут быть сгруппированы и отсортированы.
SELECT [ALL | DISTINCT) [<псендоиим 1>] Спуикгвыбора>[, <пеевдоннм>,) <пункт выбора>...)
FROM <имя таплипы> [<псевдоним 2> J [, <имя таблнцы> [<псевлояим 3>]... ]
[[ INTO ARRAY <ичя массика> | INTO CURSOR <имя> |
INTO TABLE | DBF <имя тайлицы>
| [ТО FILE <нмяфайла> [ADDITIVE] | ТО PRINTER]]
(NOCONSOLE]
[ PLAIN ]
[NOWAIT]
[WHERE <условнесоединення> [AND <условиесоединсния>...] [ AND | OR <условие фильтра> [ AND | OR <условне фильтра>... [ [ GROUP BY <колонка гругшы> [, <каюнка группы>... ] ]
[ HAVING <условие фильтра> ]
[UNION [ALL] <комаиаа SELECI>]
[ ORDER BY <пункт порядка> [ ASC | DESC ]
[, <пункт порядка> [ ASC | DESC ]... ] ]
Назначение опций:
ALL — отображает все поля одной иди нескольких таблиц. Опция но умолчанию.
DISTINCT — содержит имена полей, которые надо выбрать. Имена полей могут быть составными с указанием псевдонима рабочей области, в которой находится таблица, содержащая нужное поле. Составные имена используются, если данные выбираются из нескольких таблиц.
FROM — перечисляются имена таблиц или псевдонимы рабочих областей, из которых выбираются поля.
IMO ARRAY — результат выборки направляется в масеив. ГМО CURSOR — результат выборки направляется во временную таблицу.
INTO TABLE | DBF — результат выборки направляется в постоянную таблицу.
ТО FILE результат выборки направляется в текстовый файл. Если добавлена опция ADDITIVE, то выбранные данные добавляются в конец существующего файла.
ТО PRINTER — результат выборки направляется на принтер.
Ест опции INTO и ТО отсутствуют, то результат выборки направляется на экран.
NOCONSOLE — запрет вывода на экран.
PLAIN — запрет вывода заголовков колонок.
NOWAIT — устраняет паузу при заполнении экрана. Результат выборки будет выводиться непрерывно до конца выборки.
WHERE — задает условия поиска данных в нескольких таблицах. Каждое <условие соединения> сравнивает поле одной таблицы с полем другой таблицы. Каждое <условие фильтра> сравнивает два поля или одно поле с переменной или константой. GROUP BY — позволяет группировать записи в порядке возрастания значений одного или нескольких полей.
HAVING — включает в запрос столько групп, сколько задано условий.
ORDER BY — позволяет сортировать результат выборки (запроса) по возрастанию (ASC) или по убыванию (DESC) одного или нескольких полей.
VNlON — позволяет комбинировать результат текущего запро- Са (выборки) с результатами другого запроса SELECT. Если не Указана опция ALL, то повторяющиеся записи исключаются.
Для задания экранного имени столбца (поля) допускается nq пользование опции AS после имени поля.
11.5. ПРИМЕРЫ
Пример 1. Вывести в окно Query значения трех полей всех за писсй таблицы Catalog.
CLOSE ALL
SET DEFAULT TO E:\Prim_bd
USE Catalog IN 2 INDEX Catalog ALIAS Cat;
ORDER TAG Name SET TALK OFF CLEAR SSLE Cat
SELECT Name_book, Year, Price FROM Catalog
Пример 2. Вывести в окно Query значения полей из разнь таблиц.
CLOSE ALL
SET DEFAULT TO E:\Prim_bd USE Catalog IN 2 ALIAS Cat
USE Fam IN 5 ALIAS Fam
USE Im IN 7 ALIAS Im
USE Ot IN 10 ALIAS Ot
SET TALK OFF CLEAR SSLE Cat
SELECT F.Name_fam, I.Name_im, O.Name_ot, C.Name_book, C.Year. C.Price;
FROM Catalog C, Fam F, Im I, Ot O;
WHERE C.Key_fam=F.Key_fam AND;
C.Key_im=I. Key_im AND C.Key_ot=O.Key_ot
Результат работы примера приведен на рис. 11.1.
4)3 «7 |
наше а* Наш* Ы «та book у [ТТааап Г псэккк урглыикок». |
ОМ 1Й»Т O Wl |
1S«J 57 00) ш |
,р«шж _ 1м««сандр Cepiwim |Гриа _______________________________ Т^.ц "_____ 'Тмоисей^ [смлтмж T*m*^4ii*^aap*_tiir3»«. эактрк- |гйаль”_ Николай _ ^В*силы»*1 В*чара на жор» fry; Дтикки “ircrant 'Николай 0«сигъм*к_____ j-'t а» гам _________________________________ ГЙолЕ ~ Накопай Цйс«ч.км-) ^'»оср_ и»п»«* *г_и iponiM0_ Нгадникр:Галактоноакм |1сигиир»с:»цн. Аксакса |
19S3 089 |
200157 00 19Ч] 075" |
оголк накопай____ IBacnr«aaa-i ^ккоор Мартам**г_и ________ 9)к 100___________ Ьтмо_______ Вгадникр_____ [Гтакпкоиоаии^ Пскагткирасзааан. 1105-Г Гсо_______ Гсмск 'С»рк«й_ Тикаофемкн _Т<рСскчда* 19»;| 115 йамрнко ГТарас_______:Григсэьмж |д>0рачное _______________________________ i1*"] —I Iimiw ■ iwitijjita i.y - s-?-r yWfck1 xtk |
Тр,ш««__рпяикда jC»pmiw _ иэеоим»_______ Р«Ш1И4 и*Л«««ИДР ClIMUW EM(mJC4MK4 "р^ийж клкк >кдр ’с*рк*«ккч ГЫрик» |
е] |
196С! 905 |
Нагм.ЮТ |
CLEAR SELE Cat SELECT F.Name_fan AS 'Фамилия', I.Nane_im AS 'Имя'; O.Name_ot AS 'Отчество',; С.Name_book AS ' Наззание_книги',; С.Year AS 'Год', С.Price AS 'Цена'; FROM Catalog C. Fam F. Im I. Ot O; WHERE С. Key_fam=F.Key_fam AND; C.Key_im=I. Key_im AND C.Key_ot=O.Key_ot Обратите внимание на то, что в экранных именах столбцов за- Прещено использовать символ пробел. Символ пробел в опции AS Л1я поля Name book заменен на символ «_ * (подчеркивание). |
CLOSE ALL SET DEFAULT ТО E:\Prirr._bd
|
Пример 3. Вывести в окно Query значения полей из разных таблиц. Экранные имена столбцов задать буквами русского алфавита. |
Рис. 11.1. Результат работы примера 2 |
L |
Дата добавления: 2015-09-29; просмотров: 20 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |