Виртуальная библиотека Delphi

Здесь есть возможность читать онлайн «Виртуальная библиотека Delphi» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Виртуальная библиотека Delphi: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Виртуальная библиотека Delphi»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Виртуальная библиотека Delphi — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Виртуальная библиотека Delphi», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

SELECT D1.Column1, D2.Column2 FROM ":Alias1:DB1" D1, ":Alias2:DB2" D2

Вообще экспериментировать с SQL-запросами проще следующим образом — создайте запрос QBE, настройте его так, как вам нужно, а затем оттранслируйте его в SQL. В результате вы получите правильный текст нужного вам SQL-запроса. Владельцы Delphi Client/Server могут использовать также и Visual Query Builder. Однако, не все QBE-запросы могут быть оттранслированы в SQL.

3. Ошибка в SQL запросе.

картинка 41

У меня есть TQuery и TDataSource . В свойстве SQL для TQuery я пишу

SELECT * FROM dbo.AnyTable

база данных на MS SQL Server. Когда я устанавливаю Active в True , то получаю ошибку: 'Token not found. Token :dbo. line number:1' . Что не так?

картинка 42

Если свойство RequestLive=True , то имя таблицы нужно брать в кавычки:

SELECT * FROM "dbo.table"

Если свойство RequestLive=False , кавычек не требуется:

SELECT * FROM dbo.table

4. Проблемы при работе с MS Access через TQuery.

картинка 43

Я безуспешно пытался использовать данные из Microsoft Access иначе, нежели просто с помощью TTable . Используя TQuery я могу только читать результат, но не могу редактировать. После "login screen" возникает сообщение типа 'Passthrough SQL connection must be shared' .

картинка 44

Измените в настройке псевдонима (alias) пункт 'SQLPASSTHRU MODE' на 'SHARED AUTOCOMMIT'.

5. Как создать таблицу при помощи SQL (или почему не работает TQuery.Open)?

TQuery.Open возвращает результат в виде курсора, в связи с этим он работает только для тех выражений, которые возвращают курсор. CREATE TABLE возвращает только результат операции - поэтому для выполнения этого выражения необходимо использовать TQuery.ExecSQL . Но и это может не сработать, если конкретный драйвер БД не поддерживает операцию создания таблиц - для получения характеристик драйвера используйте функции BDE ( DbiOpenDriverList , DbiGetDriverDesc ).

6. Возврат значения select max() и подобных SQL-выражений.

Я хочу выполнить SQL-выражение и получить результат в свою переменную, что-то типа

SELECT MAV(FieldA) FROM TableB INTO :VariableC;

Вам не нужно использовать оператор INTO для программного доступа к результату — его можно получить используя свойства Fields или FieldByName соответствующего компонента TQuery .

TQuery1.Add( ' SELECT MAX(FiledA) FROM TableB ');

TQuery.Open;

...

VariableC := TQuery1.Fields[0];

Или, если результат нужно визуально отобразить, достаточно подключить к используемому TQuery компоненты TDataSource и TDBText .

7. Автоматический подсчет сумм при помощи TQuery.

картинка 45

Меня интересует возможность подсчета суммы по таблицам, которые уже находятся на форме.

картинка 46

Есть очень простой способ — предположим, что у вас есть на форме Query1 , DataSource1 , DBGrid1 . Добавьте на эту же форму компоненты Query2 , DataSource2 , DBText1 . Установите property Query2.DataSource=DataSource1 . В Query2.SQL напишите

SELECT SUM(FieldName) FROM TableName

где TableName — имя той же таблицы что и у Query1 , а FieldName — имя столбца по которому производится подсуммирование. Далее свяжите между собой Query2 , DataSource2 и DBText1 .

При изменении Query1 (если конечно Query1.RequestLive=True ) Query2 будет автоматически перевыполняться. Это решение хоть и простое, но неэкономичное — особенно при большом количестве записей в исходной таблице. Более того, запрос Query2 должен иметь WHERE идентичный Query1 .

Для подсчета сумм правильнее использовать событие TQuery.OnCalcFields . Хорошим примером является X:\DELPHI\DEMOS\DB\MASTAPP\MASTAPP.DPR.

8. Использование кавычек в параметризированном запросе.

картинка 47

Мой запрос получает параметр. Проблема в том, что строка параметра содержит " (двойную кавычку), которая приводит к Runtime Error.

картинка 48

Вам необходимо использовать динамический SQL-запрос, иначе при указании например

WHERE TABLE.FIELD = 'let"ter'

вы получите ошибку.

9. Как создать отдельный компонент TTable?

Легко и просто — точно также как и обычный компонент. При этом в качестве параметра конструктору можно передавать значение nil.

var

MyTable: TTable;

begin

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Виртуальная библиотека Delphi»

Представляем Вашему вниманию похожие книги на «Виртуальная библиотека Delphi» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Виртуальная библиотека Delphi»

Обсуждение, отзывы о книге «Виртуальная библиотека Delphi» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x