Автор: admin | 18.12.2007 в 11:23 | Рубрики: Базы данных

Как мне передать переменную в запрос?

Сначала вы должны создать запрос, использующий переменную.

Select Test.”FName”, Test.”Salary Of Employee”
From Test
Where Test.”Salary of Employee” > :val
Примечание: Если вы просто пишете имя поля как “Salary of Employee”, вы получите ошибку “Capability Not Supported”. Это должно быть просто Test.”Salary of Employee”.
В нашем случае имя переменной “val”, но это может быть любое другое (естественно). Затем вы переходите к свойству TQuery’s params и устанавливаете параметр “val” в зависимости от требуемого типа. В нашем примере мы используем тип integer.
Читать полностью…

Почему мышиный курсор не возвращается обратно (не становится обычной стрелкой) после выполнения запроса?

При выполнении открытого запроса, Delphi изменяет для вас курсор, и произойти это может даже в середине события, как, например, при нажатии на кнопку. Приведенный ниже пример отобразит курсор в виде иконки песочных часов (SQL Hourglass Icon) после того, как вы закроете окно с сообщением. При этом мышь будет вести себя так, как будто находится в режиме “стрелки”.

// Добавьте к обработчику события нажатия кнопки,
// использование запроса при этом не имеет значения
// Select * from Customer (в IBLocal)

with query1 do
begin
close;
open;
showmessage(IntToStr(RecordCount));
end; // with

При наступлении события, Delphi пробует обратно придать курсору тип стрелки (Arrow), при этом выводится новая форма (диалог showmessage), которая мешает автоматическому переводу курсора в режим стрелки.

Для решения этой проблемы нужно добавить Application.ProcessMessages прежде, чем форма будет показана, это позволит обработать все сообщения, скопившиеся в очереди (и очистить ее), после чего мышиный курсор вновь пример нормальную форму.

// Добавьте к обработчику события нажатия кнопки,
// использование запроса при этом не имеет значения
// Select * from Customer (в IBLocal)

with query1 do
begin
close;
open;
application.ProcessMessages; // Добавьте эту строку.
showmessage(IntToStr(RecordCount));
end; // with

Постовой:
Женский журнал “Мой стиль” - свежая информация из мира моды и дизайна.

Содержание

Обзор
Создание таблиц с помощью SQL
Заключение
Обзор

На данном уроке мы познакомимся еще с одной возможностью создания таблиц - через посылку SQL-запросов. Как Вы, наверное, могли заметить на предыдущем уроке, Database Desktop не обладает всеми возможностями по управлению SQL-серверными базами данных. Поэтому с помощью Database Desktop удобно создавать или локальные базы данных или только простейшие SQL-серверные базы данных, состоящие из небольшого числа таблиц, не очень сильно связанных друг с другом. Если же Вам необходимо создать базу данных, состоящую из большого числа таблиц, имеющих сложные взаимосвязи, можно воспользоваться языком SQL (вообще говоря, для этих целей лучше всего использовать специализированные CASE-средства, которые позволяют в интерактивном режиме сгенерировать всю структуру базы данных и сформировать все связи; описание двух наиболее удачных CASE-средств - System Architect и S-Designor - дано в дополнительных уроках). При этом можно воспользоваться компонентом Query в Delphi, каждый раз посылая по одному SQL-запросу, а можно записать всю последовательность SQL-предложений в один так называемый скрипт и послать его на выполнение, используя, например, Windows Interactive SQL (WISQL.EXE) - интерактивное средство посылки SQL-запросов к InterBase (в том числе и локальному InterBase), входящее в поставку Delphi. Конечно, для этого нужно хорошо знать язык SQL, но, уверяю Вас, сложного в этом ничего нет! Конкретные реализации языка SQL незначительно отличаются в различных SQL-серверах, однако базовые предложения остаются одинаковыми для всех реализаций. Практика показывает, что если нет необходимости создавать таблицы во время выполнения программы, то лучше воспользоваться WISQL.
Читать полностью…

Автор: admin | в 11:23 | Рубрики: Базы данных

Кто-нибудь знает как “вытащить” месяц или год из datetime-поля с помощью SQL? Я знаю, что QBE этого не может. SQL в состоянии это сделать?

Как насчет функции EXTRACT?

SELECT SALEDATE,
EXTRACT(DAY FROM SALEDATE) AS DD,
EXTRACT(MONTH FROM SALEDATE) AS MM,
EXTRACT(YEAR FROM SALEDATE) AS YY
FROM ORDERS

Автор: | в 11:23 | Рубрики: Базы данных

Я использую поле Tmemo.

Это классно работает до тех пор, пока я не использую расширенные символы (с кодом больше 127). При использовании этих символов текст-то я послать могу, но при последующем поиске записи я получаю такое сообщение об ошибке:

“General SQL error : Cannot transliterate character between character sets.” (Общая ошибка SQL: не могу сопоставить символ с имеющимися наборами символов).

Я понял, в чем ваша ошибка: вы должны установить встроенный набор символов LIBS в DEFAULT CHARACTER SET ISO8859_1. Когда вы впоследствии создадите таблицу, она будет использовать данный набор символов для создания alfanumeric-данных и Blob-полей. Псевдоним базы данных должен быть установлен на драйвер языка BLLT1FR.

После того, как я сделал это и пересоздал базу данных, все заработало как надо.

Может быть и не стоило публиковать эту информацию, поскольку многие пользователи пользуются локальными драйверами, наборами символов и новой версией SQL, но я посчитал ее ценной, поскольку как раз эта инфорамция в описании и отсутствует. Она присутствует только в LIBS “readme”-файле.