SQL-менеджер Хортица
Менеджер предназначен для управления данными при помощи SQL-запросов и операторов с упрощенным синтаксисом. С его помощью Вы сможете делать выборки из одной или нескольких таблиц, записывать результаты в новые таблицы или добавлять в существующие, легко и быстро создавать из выборки простые табличные отчеты, отчеты в виде «шахматок», сложные отчеты на основе результатов нескольких SQL-запросов и промежуточных расчетов, передавать их в MS Word, сохранять в текстовых файлах, и многое другое. Встроенный язык с синтаксисом Pascal позволит создавать вычисляемые поля, определять параметры для SQL-запросов, производить различные промежуточные расчеты. Дополнительно менеджер позволяет определять формы ввода, для занесения пользователем исходных данных. Разработанные и отлаженные процедуры (скрипты) можно в дальнейшем использовать под управлением менеджера или интегрировать в Delphi (C++Builder) проекты при помощи специального компонента. Для работы со скриптами менеджер использует многооконный текстовый редактор с удобной помощью (включающей примеры), подсветкой синтаксиса и рядом дополнительных возможностей. Менеджер работает с базами данных форматов Paradox и Dbase. Также его можно использовать с любыми другими базами данных через BDE (в т.ч. Access). Для его использования необходим компьютер с установленным BDE, версии не ниже 3.0 .
Работа с менеджером
Менеджер работает с процедурами, представляющими собой текстовые документы (скрипты). Для работы с документами в программу встроен специальный текстовый редактор, позволяющий одновременно работать с несколькими процедурами. Текущей всегда является одна процедура, окно которой в настоящий момент активно в редакторе. Создать новую процедуру, сохранить, переименовать, удалить, закрыть окно можно при помощи меню Файл. Для выполнения процедуры применяется пункт меню Выполнить (удобнее «горячей клавишей» F9). Открыть существующую процедуру можно при помощи меню Файл->Открыть или горячей клавишей ctrl+O (O латинское от слова Open). Для подсветки синтаксиса следует использовать Редактор ->Подсветка синтаксиса, или Ctrl+F1.
Простой скрипт
select *
from zsEmpl
Данный скрипт выводит на экран список сотрудников. Простым называется скрипт, состоящий из одного SQL-запроса и не содержащий макрокоманд. Если в скрипте имеются макрокоманды, то вывода на экран не происходит.
ShowGrid
select tn,f,DataRogd
from zsEmpl
@@ShowGrid
Если в запросе имеются дополнительные макрокоманды, то для вывода результатов запроса на экран необходимо использовать команду ShowGrid. Возможно использование нескольких таких команд в одном запросе.
Alias
@@Alias=dbDemos
select *
from clients
@@ShowGrid
Обычно SQL-запрос работает с таблицами, находящимися в текущей папке. Иногда возникает необходимость работать с таблицами, находящимися в другой папке. В специальной терминологии папки, содержащие таблицы, называются базами данных и имеют уникальное имя. Сделать текущей одну из определенных в системе баз данных можно при помощи команды Alias. Если на Вашем компьютере установлен один из продуктов Borland вместе с примерами, то приведенный скрипт выводит содержимое таблицы Clients.dbf.
Param
@@Param sumaMin:f=100
select tn,f,knu,vo.name as NameKnu,god,mes,suma
from zaSal sl
left join zsEmpl se
on se.tn=sl.tn
left join zsVidOpl vo
on vo.knu=sl.knu
where suma>:SumaMin
order by f
@@ShowGrid
Для определения параметров, передаваемых SQL-запросу, служит команда Param. Синтаксис команды следующий:
@@Param ParamName:ParamType=ParamValue
ParamName-имя параметра
ParamType-буква, определяющая тип параметра:
i-целое число (integer)
f-число с плавающей точкой (float)
d-дата (data)
a-строка (alpha)
ParamValue-значение, присваиваемое параметру.
Razdel
Команда предназначена для удобства навигации по программе. После команды следует указывать название раздела. По нажатию клавиши Alt+R на экране появляется список разделов, к началу любого из которых легко перейти посредством выбора.
SaveDsToFile, AppendDsToFile, Razdelitel
@@Param god:i=2002
@@Param mes:i=7
//Выбор начислений
select tn,sum(suma) as SumaNach,0 as sumaUd
from zaSal
where god=:god and mes=:mes
group by tn
@@SaveDsToFile c:\q1
//Выбор удержаний
select tn,sum(suma) as sumaUd
from zaUd
where god=:god and mes=:mes
group by tn
@@AppendDsToFile c:\q1
//Рассчет итогов
select tn,
sum(SumaNach) as SumaNach,
sum(SumaUd) as SumaUd
from “c:\q1″
group by tn
@@SaveDsToFile c:\q2
//Рассчет суммы к выплате
select tn,sumaNach,sumaUd,
(sumaNach-sumaUd) as kVypl,
//Здесь может произойти ошибка!
0 as dolg
from “c:\q2″
@@SaveDsToFile c:\q3
//Рассчет долга
update “c:\q3″
set dolg=0-kVypl,kVypl=null
where kVypl<0
@@Razdelitel
//Замена нулевых значений на “пусто”
update “c:\q3″
set dolg=null
where dolg=0
@@Razdelitel
select tn,f,SumaNach,SumaUd,kVypl,dolg
from “c:\q3″ q3
left join zsEmpl se
on se.tn=q3.tn
order by f
@@ShowGrid
Команда SaveDsToFile применяется для сохранения в файле формата Db результатов запроса. Команду AppendDsToFile следует использовать для добавления результатов запроса к существующему Db или Dbf файлу. Добавление записей происходит по именам полей. Порядок их следования не имеет значения. Если типы полей не совпадают, то происходит попытка автоматического преобразования типов. В обеих командах имя файла необходимо указывать без кавычек. Для хранения временных файлов лучше использовать специально отведенную папку, а не корневой каталог. Команда Razdelitel никаких действий не производит. Она предназначена для разделения двух последовательно идущих SQL-запросов. В данном примере, на основании массивов начислений и удержаний рассчитывается сумма к выплате для каждого сотрудника за месяц. В данном примере может произойти ошибка вычислений (см.комментарии). Это связано с тем, что при сложении значений двух полей в запросе, если одно из них не определено, то результат тоже не определен. Т.е., если у сотрудника не было удержаний (к примеру, он получает только детское пособие), то сумма к выплате будет не определена. Для исключения подобных ошибок удобнее использовать поля, вычисляемые при помощи встроенного языка, о котором речь пойдет далее.
Эта запись была опубликована 18.12.2007в 23:02. В рубриках: Базы данных. Вы можете следить за ответами к этой записи через RSS 2.0. Комментарии пока закрыты, но Вы можете оставить трекбек со своего сайта.