Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Во избежание мерцания при создании дерева следует запретить перерисовку, а по окончании проектирования снова ее разрешить.
BeginUpDate; EndUpDate.
OnChaning – Это событие происходит при выделении узла пользователем, имеет параметры:
OnChaning (Node: TreeNodes; Var AllowChange: Bootlean)
При развертывании узла происходят события:
OnExpanding – перед
OnExpanded – после
При свертывании узла
OnCallapsing – перед
OnCallapsed – после
41. Как установить связь между дочерней и родительской таблицами через поля связи; описать порядок действий; выводы. Визуальные компоненты TDBLookupComboBox, TDBLookupListBox.
Для полей просмотра можно использовать специальные компоненты: TDBLookUpListBox (список) и TDBLookUpComboBox (выпадающий список; служит для выбора значений в поле одного набора данных из списка значений, источником которого выступает значение какого-либо поля из другого набора данных; наборы связываются по полю связи).
- Name - DBCBoxItems;
- DataSource - имя источника вспомогательной таблицы (источника TDataSource), для поля которой устанавливается связь: DSParts (DSTovar);
- DataField - имя поля вспомогательной таблицы, для которого устанавливается связь: ItemNo(kod_sl);
- ListSource - имя главной таблицы (источника): DSItems(DSSlovar_t);
- ListField - имя поля головной таблицы, содержащее расшифровку кода: ItemName(Name_sl); можно указать несколько полей, разделяя их “;”.
- KeyField - имя поля главной таблицы, содержащее код: ItemKod(kod_sl);
- RowCount – сколько строк показать в выпадающем списке;
- KeyValue – текущее значение поля связи;
Методы: DropDown – разворачивает список выбора; CloseUp – сворачивает;
43. Компонент TQuery; особенности набора данных Query; различие между TTable и TQuery; связь с таблицами при использовании компонента TQuery.
НД, записи которого отобраны из нескольких таблиц, нельзя редактировать. Компонент TQuery может быть связан с таблицей напрямую или содержать копии отобранных записей, доступные только для чтения. Вид взаимодействия определяется свойством RequestLive, если оно равно false, то только чтение, если – true, то редактирование. Редактирование возможно при соблюдении следующих условий (эти условия справедливы и для свойства CanModify):
НД формируется обращением только к одной таблице;
НД не упорядочен (в запросе не используется ORDER BY);
в НД не используются совокупные характеристики типа SUM, COUNT и др.;
НД не кэшируется (CachedUpdates равно false);
Если в результате запроса не может быть получен редактируемый НД, то значение true свойства RequestLive игнорируется. В свойстве DatabaseName надо задать БД, с которой будет осуществлена связь (псевдоним). Для компонента TQuery не устанавливается свойство DataSource, т. к. в результате запроса может сформироваться НД, связанный с несколькими таблицами. На первоначальном этапе проектирования необходимо сформировать главное свойство TQuery – SQL, содержащее запрос SQL и тем самым указывающее, с какой таблицей следует связать и какой НД надо создавать, а затем настраивать остальные свойства. На этапе проектирования достаточно указать запрос SELECT * FROM <имя таблицы>.
45. Понятие набора данных; состояния набора данных и методы для их установления; навигация по набору данных; способы обращения к полям.
Иерархия следования.
TDataSet
¯
TBDEDataSet
¯
TDBDataSet
¯ ¯
TTable TQuery
Набор данных (НД) – группа одной или нескольких таблиц.
TTable содержит записи, источником которых может быть только одна таблица БД, состав записей зависит от условия фильтрации.
TQuery содержит записи, источником которых могут быть несколько таблиц, а также агрегированные значения, просчитанные по полям одной или нескольких таблиц.
НД – результат запроса SQL, представленный оператором Select. Этот запрос SQL записывается в свойстве SQL TQuery. Псевдоним указывается в BDName, но нет свойства TableName.
В НД TTable можно указать текущий индекс, установивший свойство IndexName или свойство IndexFieldName – поле, по которому создан индекс. Эти свойства автоматически не меняются, они могут устанавливаться в программе.
Состояние НД.
НД могут находится в нескольких состояниях. Свойство State определяет состояние. Оно доступно только во время выполнения программы и только для чтения. Состояние имеет префикс ds.
dsInActive – НД закрыт.
dsBrowse – просмотр при открытом НД, данные не могут изменяться. Это состояние является состоянием по умолчанию при открытии БД.
dsEdit – редактирование текущей записи, возникает после метода Edit.
dsInsert – добавление новой записи.
dsSetKey – поиск записи по критерию, просматривает записи, но не позволяет их редактировать и добавлять.
dsCalcField – установление вычисляемых полей по заданному алгоритму. Алгоритм задается в обработчике события onCalcFields. Изменения не могут вноситься, после выхода из этого режима возвращается предыдущее состояние.
dsFilter – обрабатывается фильтрация записей, заданная в обработчике onFilterRecord или в свойстве Filter (TTable), при условии, что свойство Filtered = true. Если в указанных местах описываются разные, то выполняются оба.
Состояние может устанавливаться во время выполнения, но не непосредственно, а с использованием различных методов.
46. Фильтрация записей; обработчик события OnFilterRecord.
Событие OnFilterRecord
Событие OnFilterRecord возникает при установке значения True в свойство Filtered. Обработчик события имеет два параметра: имя фильтруемого набора данных и переменную Accept, в которую программа должна поместить True, если текущая запись удовлетворяет условию фильтрации.
В отличие от критерия в строке Filtered, ограниченного рамками синтаксиса условного выражения, критерий, реализуемый в обработчике события OnFilterRecord, определяется синтаксисом Object Pascal и может организовать сложные алгоритмы фильтрации. Однако следует помнить, что в обработчике OnFilterrecord последовательно перебираются все записи БД, в то время как методы SetRange, ApplyRange и им сопутствующие методы компонента TTable используют индексно-последовательный метод, т. е. работают с частью записей в физической БД. Это делает использование обработчика OnFilterRecord предпочтительным для фильтрации небольших объемов записей и сильно ограничивает его применение при больших объемах данных.
Всякий раз, когда приложение обрабатывает событие OnFilterRecord, набор данных переводится из состояния dsBrowse в состояние dsFilter. Это предотвращает модификацию набора данных во время фильтрации. После завершения текущего вызова обработчика события ObFilterRecord набор данных переводится в состояние dsBrowse.
Пример: чтобы создать набор данных из тех записей базы данных, в которых поле "Должность" содержит значение "преподаватель", можно использовать такой обработчик:
procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept := DataSet['Должность'] = 'преподаватель';
end;
Еще один пример: отфильтровать базу "Сотрудники" по условию "Отобрать всех, у кого табличный номер (поле "#") больше значения, вводимого пользователем в Edit1, и в поле "ФИО" есть подстрока символов, вводимых пользователем в Edit2":
procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept := (DataSet['#'] > Edit1.Text) and (Pos(Edit2.Text, DataSet['ФИО']) > 0);
end;
Если в строке Filter и обработчике события OnFilterRecord заданы разные критерии фильтрации, выполняются оба.
47. Поиск записей в наборе данных; методы Locate, FindKey, FindNearest, Lookup.
Метод Locate Function Locate (const KeyFields: string; const KeyValues: Variant; Options: TlocateOptions): Boolean;
Метод Locate ищет первую запись, удовлетворяющую критерию поиска, и если такая запись найдена, делает ее текущей. В этом случае в качестве результата возвращается true. Если поиск был неуспешным, false.
KeyFields – поле или список ключевых полей, по которым ведется поиск; строковое значение; поля разделяются «;».
KeyValues – массив ключевых значений типа Variant; i – значение соответствует i-му полю из списка KeyFields.
Options указывает необязательные значения режимов поиска: loCaseInsensitive – поиск ведется без учета высоты букв; loPartialKey – запись считается удовлетворяющей условию поиска, если она содержит часть поискового контекста.
Locate отличается от FindKey, FindNearest, GoToKey, GoToNearest тем, что перечисленные методы производят поиск только по полям, входящим в состав текущего индекса; текущей становится логически самая первая запись, удовлетворяющая условию поиска. Locate производит поиск по любому полю (полям) даже не входящим в состав индекса. Может использовать индекс, если поля поиска входят в индекс.
Table1.Locate (‘Doljnost;UchStepen’, VarArrayOf ([‘доцент’,’кхн’]), [loPartialKey]);
Этот метод целесообразно использовать на небольших объемах, т. к. при поиске используется последовательный метод доступа.
Метод Lookup
Function Lookup (const KeyFields: string; const KeyValues: Variant; const ResultFields: string): Variant;
Метод Lookup находит запись, но не делает ее текущей, а возвращает значения некоторых полей этой записи. Lookup осуществляет поиск только на точное соответствие критерию поиска.
KeyFields – список ключевых полей, по которым необходимо осуществить поиск, поля поиска разделяются «;».
KeyValues – указывает поисковые значения: i – значение из списка KeyFields соответствует i значению из списка KeyValues ( в случае нескольких полей список поисковых значений нужно приводить к типу вариантного массива при помощи функции VarArrayOf).
Если запись в результате поиска не найдена, то возвращаемое значение = Null. Для анализа такого результата можно использовать функцию VarIsNull (const v:variant): Boolean, возвращает true при значении параметра V, равном Null. В противном случае Lookup возвращает значения полей найденной записи, список которых указывается в ResultFields.
Рассмотрим методику FindKey.
При использовании методики FindKey таблица также должна быть проиндексирована по тем ключевым полям, по которым осуществляется поиск. В метод FindKey передается массив значений ключевых полей в той последовательности, в которой они входят в индекс. Для строковых полей можно использовать метод FindNearest, обеспечивающий переход к наиболее совпадающей строке при неполном совпадении. Перед выполнением поиска текущим устанавливается индекс, построенный по поисковым полям (Table1.IndexFieldNames:=’<имя ключевого поля>’; или Table1.IndexName:=’<имя индекса>’;).
Table1.IndexFieldNames :=’Otdel;Fam’;
Table1.FindKey([<значение первого поля ключа>, <значение воторого поля ключа>]);
Table1.FindNearest ([<значение первого поля ключа>, <значение воторого поля ключа>]);
Если поиск завершился успешно, то найденная запись становится текущей (если заданным условиям поиска соответствует несколько записей, то первая из них), а метод возвращает значение true. При неудачном поиске, указатель не перемещается, а возвращаемое занчение равно false.
50. SQL; раздел DDL - создание таблиц, индексов; обновление таблиц, индексов; удаление.
1. Команда CREATE TABLE – это команда создает пустую таблицу; определяет имя таблицы и множество поименованных столбцов в указанном порядке. Для каждого столбца устанавливается тип и размер.
CREATE TABLE <имя таблицы> (
<имя столбца> <тип данных> [(<размер>)],
……. …… …….
<имя столбца> <тип данных> [(<размер>)]
);
Размер можно не указывать, в этом случае он устанавливается автоматически.
Таблицу может удалить только ее владелец. Перед удалением таблицы нужно удалить все данные из нее, т. е. сделать ее пустой. Заполненную таблицу удалить нельзя.
Команда DROP TABLE <имя таблицы>;
Индексы – это упорядоченный список содержимого столбца или группы столбцов таблицы. Индексы предназначены обеспечить проблему поиска по значению какого-либо из полей. составного ключа заключаются в скобки и перечисляются через запятую. Индексы создаются командой:
CREATE INDEX <имя индекса> ON <имя таблицы> (<имя поля>);
Балансировку индексов выполняют последовательно выполненные операторы деактивации и активации индексов:
ALTER INDEX <имя индекса> DEACTIVATE;
ALTER INDEX <имя индекса> ACTIVATE;
Индекс удаляется по своему имени командой
DROP INDEX <имя индекса>; или DELETE INDEX <имя таблицы>.<имя индекса>;
51. Ограничения на множество допустимых значений таблицы; последовательности; поддержание ссылочной целостности данных; ограничение внешнего ключа Foreign Key.
Существуют два основных типа ограничения - это ограничение на столбцы и ограничения на всю таблицу. Ограничение на столбец добавляют в конец определения столбца после указания типа данных и перед запятой. Ограничения на таблицу размещаются в конце определения таблицы, после определения последнего столбца, перед закрывающейся круглой скобкой.
Ограничение на использование NULL – значения.
Запрещает использование NULL – значение; ключевое слово NOT NULL . NULL – специальный символ, обозначающий, что поле пустое, но он полезен не всегда.
Первичный ключ никогда не содержит NULL-значение, т. к. это нарушило бы функциональную зависимость. Если стоит ключевое слово NOT NULL непосредственно после типа данных (включая размер) столбца, то любая попытка ввести NULL – значение будет отвергнута.
Уникальность как ограничение на столбец.
UNIQUE - ограничение уникальности на столбец отвергает все попытки ввода значений в этот столбец, уже содержащихся в другой строке. Поле, на которое накладывается ограничение UNIQUE должно иметь и ограничение NOT NULL.
Можно сделать уникальным группу полей, указав ограничение UNIQUE для таблицы. При объединении полей в группу важен порядок. Использование ограничения UNIQUE для таблицы является полезным, если не требуется поддержание уникальности отдельных полей. Ограничение UNIQUE создает индексы, не сообщая об этом пользователю. Столбцы, отличные от первичного ключа, для которых требуется поддерживать уникальность значений, называется уникальным ключом.
Ограничение на первичный ключ (PRIMARY KEY).
В последних версиях SQL поддерживает ограничение для первичного ключа PRIMARY KEY (в ранних версиях это было не реализовано на логическом уровне и требовало наложение дополнительного ограничения UNIQUE).
Ограничение PRIMARY KEY можно применять к таблице в целом или к множеству строк. По функциональным возможностям это ограничение схоже с ограничением UNIQUE, но! только один первичный ключ состоящий из любого количества столбцов, может быть определен для данной таблицы. В первичных ключах не допустимо использование NULL значение
Ограничение на выбор значения поля.
Для задания диапазона значений для поля используется ограничение CHECK; это ограничение определяет условие, которому должно удовлетворять вводимое значение. Проверка осуществляется до занесения значения в таблицу. Если значение условия в ограничении CHECK принимает значение ЛОЖЬ, то попытка ввода значения в поле отвергается.
Когда все значения одного из полей таблицы должны быть представлены в поле другой таблицы, это означает, что поле ссылается (или является ссылкой) на таблицу. Между значениями двух полей есть прямая связь. Когда поле таблицы ссылается на другое поле в другой таблице, оно называется внешним ключом (Foreign Key); поле, на которое он ссылается, называют его родительским ключом (Parent Key). Имена внешнего и родительского ключей могут быть разными.
Внешний ключ, как и первичный, может быть определен на любом количестве полей, которые все вместе рассматриваются как единое целое. Внешний ключ и родительский ключ, на который он ссылается, должны быть определены на одинаковом множестве полей (по количеству полей, их типам и порядку следования). Каждое значение внешнего ключа ссылается на одно значение родительского. Это означает, что система находится в состоянии ссылочной целостности.
Каждое значение внешнего ключа должно быть представлено в родительском ключе один и только один раз. Любое число внешних ключей может ссылаться на одно и тоже значение родительского ключа.
Назначение ограничения Foreign Key – ограничить вводимые в БД значения так, чтобы внешний ключ и его родительский ключ соответствовали принципам ссылочной целостности. Назначение этого ограничения защищает внешние ключи от значений, не представленных в родительском ключе. Ограничение Foreign Key может указываться как для одного столбца, так и для нескольких.
52. SQL; раздел DML - INSERT - добавление записей; UPDATE - изменение записей; DELETE - удаление записей.
1. Добавление записей.
INSERT INTO <имя таблицы> VALUES (<значю1>, <знач.2>, …, <знач.N>);
Значения из списка должны иметь тип данных, соответствующий типу данных столбца, описанного в таблице командой CREATE. Значения не могут содержать выражения. Значения вводятся в порядке следования столбцов. Если значение на момент ввода не известно, то заносится NUUL – специальный символ, который не заключается в скобки. В команде INSERT можно использовать имена столбцов, тогда порядок ввода значений не зависит от порядка их расположения в таблице, например,
INSERT INTO Customers (city, cname, cnum) VALUES (‘London’, ’Hoffman’, 2001);
Для опущенных столбцов вводятся значения по умолчанию, если значение по умолчанию не указано и допускается NUUL-значение, то вводится NUUL-значение.
2. Удаление строк таблицы.
DELETE FROM <имя таблицы>; - удаляются все строки таблицы.
Если нужно удалить отдельные строки, то указывается условие:
DELETE FROM <имя таблицы> WHERE <условие>;
Для удаления единственной строки в качестве условия лучше использовать первичный ключ.
3. Изменение значения поля.
Команда изменения содержит предложение UPDATE для задания имени таблицы и предложение SET, определяющее изменения для столбца (столбцов).
UPDATE <имя таблицы> SET <имя столбца>=<новое значение столбца>;
53) SQL; раздел DML – SELECT – запрос к базе данных:предложение Where; использование операторов In и BetWeen при генерации условия; опреатор Like и работа с Null значениями.
оператор IN – определяет множество, которому может принадлежать значение поля, указанного в условии.
SELECT * FROM Salespeople SELECT * FROM Salespeople
WHERE city=’Barselona’ WHERE city IN
OR city=’London’; (‘Barselona’,’London’);
эти две команды равнозначны.
Множество заключается в круглые скобки; элементы множества перечисляются через запятую; элементы множества символьного типа заключаются в одиночные кавычки.
использование оператора BETWEEN – он по своим функциональным возможностям сходен с оператором IN, разница в том, что множество задается не перечнем, диапазоном (граничные значения включаются в проверяемое условие).
… BETWEEN <нач. граница> AND <конечная граница> …
Короткие граничные значения символьного типа дополняются пробелами (пробел предшествует всем символам латинского алфавита).
Операторы IN и BETWEEN чувствительны к порядку: первое значение в предложении должно быть первым в соответствии с алфавитным или числовым порядком;
оператор LIKE – применим только к полям символьного типа и используется для поиска подстрок, т. е. входит ли указанная подстрока в указанное поле;
m_SQL:=’SELECT k. id, k. docseria, k. docnomer FROM kont k
WHERE k. Family LIKE ‘’’+
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


