Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
programmirovanie_v_dx:sql_zaprosy [2018/04/01 13:20]
jurist23rus [Использование SQL в скриптах]
programmirovanie_v_dx:sql_zaprosy [2019/03/14 19:02] (текущий)
7bit
Строка 1: Строка 1:
-====== SQL-запросы ======+====== 24. SQL-запросы ======
  
 Синтаксис SQL-выражений в DataExpress (DX-SQL) почти такой же, как в Firebird-SQL.  Синтаксис SQL-выражений в DataExpress (DX-SQL) почти такой же, как в Firebird-SQL. 
Строка 34: Строка 34:
 with SQLSelect('select id, [название] from [запчасти] order by [название]') do  with SQLSelect('select id, [название] from [запчасти] order by [название]') do 
 begin begin
- while not EOF do  +  while not EOF do  
- begin +  begin 
-  // Какие-то действия +    // Какие-то действия 
-  …  +    …  
-  MoveNext; +    MoveNext; 
- end; +  end; 
- Free;+  Free;
 end; end;
 </code> </code>
Строка 63: Строка 63:
 Красным выделено, данные какой формы будут изменяться и поля, которые будут изменены. Красным выделено, данные какой формы будут изменяться и поля, которые будут изменены.
  
-Кроме того класс автоматически определяет генератор, который связан с формой. Так что при добавлении записи, id будет автоматически заполнен. Обращение к генератору тоже занимает какое-то время, поэтому для ускорения массового добавления записей вы можете устанавливать id вручную, без помощи генератора. Для этого установите свойство UseGenerator в False. Правдавам все равно придется корректировать генератор для обеспечения нормальной работы формы. Это делается процедурой SQLExecute.+Класс автоматически определяет генератор, который связан с формой. Свойство UseGenerator определяет как будет использован генератор: 
 +  * ugNotUse - генератор не используется, id записи задается вручную; 
 +  * ugAppend - id записи возвращается генератором при каждом добавлении записи; 
 +  * ugApplyUpdates - перед сохранением изменений в базу значение генератора увеличивается на количество добавленных записей, а id новых записей заполняется значениями.
  
 ===== Выполнение произвольных SQL-инструкций ===== ===== Выполнение произвольных SQL-инструкций =====
  
-Процедура SQLExecute позволяет выполнить произвольный SQL-скрипт, передаваемый в параметр SQL.+Процедура SQLExecute выполняет произвольный SQL-скрипт, передаваемый в параметре SQL.
    
 ''procedure SQLExecute(const SQL: String)'' ''procedure SQLExecute(const SQL: String)''
Строка 83: Строка 86:
 ===== Редактор SQL-выражений ===== ===== Редактор SQL-выражений =====
  
-Редактор поможет вам составить выражение SQL. Откройте редактор:+Редактор поможет вам составить выражение SQL. Откройте редактор:\\ 
 + 
 +{{ :programmirovanie_v_dx:ris_18.jpg?nolink&600 |Кнопка редактора на панели инструментов}}\\ 
 + 
 +{{ :programmirovanie_v_dx:ris_19.png?nolink&600 |Редактор SQL-выражений}} \\ 
 + 
 +Прямо в редакторе можно проверить выражение. Результат работы запроса отображается внизу. Нажмите вторую кнопку на панели инструментов, чтобы скопировать выражение в буфер обмена. Теперь вы можете его вставить в скрипт. Строки обрамляются в кавычки и соединяются символом''+''. Можно сделать наоборот, вставить скопированный текст SQL из скрипта в редактор. Для этого нажмите третью кнопку на панели инструментов. Лишние кавычки и символы ''+'' удаляются. 
 + 
 +===== Сводные таблицы, таблицы и SQL-запросы ===== 
 + 
 +Сводные таблицы обычно используются в связке с запросом (TdxQueryGrid). Но если запрос не привязывать, то их можно использовать для отображения произвольных данных, например полученных SQL-запросом. 
 + 
 +Также можно использовать таблицу (подчиненную форму) для отображения результата SQL-запроса. Эти данные уже можно использовать для печати шаблона.