Виртуальная библиотека Delphi
- Название:Виртуальная библиотека Delphi
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Виртуальная библиотека Delphi краткое содержание
Виртуальная библиотека Delphi - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
12. Использование формата Access 2.0 в Delphi.
Подробное описание подключения:
• Откройте Windows Control Panel, откройте икону ODBC.
• Добавьте драйвер Access в список доступных, если он не указан в списке текущих драйверов.
• Укажите какое-либо имя в "Data Source Name".
• Выберите файл БД кнопкой Select Database.
• Если вы хотите создать новый — выполните пункт Create Database
• Запустите Database Engine Configuration
• Нажмите кнопку New ODBC Driver
• Выберите драйвер типа ACCESS DATA
• В качестве Default Data Source Name выберите предложенное.
• Создайте новый псевдоним в разделе Alias
• Укажите тип драйвера, путь и имя к нужному файлу БД Access.
• Сохраните изменения и закройте Database Engine Configuration
Примечание: избегайте русских названий имен таблиц, использования пробела в именах таблиц, а также русских имен полей в DB Access.
13. Можно ли при помощи Delphi реализовывать проекты, не имеющие отношения к базам данных? Если да, то имеет ли это смысл?
В таком случае стоит воспользоваться вариантом Delphi Desktop или Developer. Выигрыш по скорости разработки очевидно будет значительным; в частности, разработка интерфейса программы под Windows производится действительно скоростными методами. Хороший пример — Screen Saver для Windows.
Общие вопросы по Delphi и данному FAQ (часть 2)
Базы данных — компоненты и VCL.
1. Какие визуальные компоненты для работы с данными входят в Delphi?
Различные версии Delphi содержат следующие наборы компонентов:
Компоненты | Краткое описание | Версии Delphi |
---|---|---|
TDBGrid | Представление данных в виде таблицы (очень сложный и наиболее популярный компонент) | 1 2 3 |
TDBEdit | Редактирования одного поля | 1 2 3 |
TDBNavigator | Как видно из названия, компонент позволяет перемещаться по таблице | 1 2 3 |
TDBLabel | Статическое отображение содержимого поля | 1 2 3 |
TDBMemo | Редактирования текста в поле типа BLOB | 1 2 3 |
TDBImage | Отображение картинок из BLOB-а | 1 2 3 |
TDBRadioGroup, TDBCheckBox | Дополнительные средства отображения данных | 1 2 3 |
TDBComboBox, TDBListBox | Упрощают ввод данных, предлагая несколько заранее определенных вариантов | 1 2 3 |
TDBLookupListBox, TDBLookupComboBox | То же самое, но возможные варианты выбираются из другой таблички | 1 2 3 |
TDBCtrlGrid | Вариант представления записей с произвольным расположением полей | 2 3 |
TDBChart | Компонент для построение графиков и диаграмм на основании данных, хранящихся в таблице | 3 |
TDecisionGrid, TDecisionChart | Компоненты для поддержки принятия решений | 3 |
2. Использование псевдонимов в запросе SQL.

Я делаю запрос по двум таблицам разных форматов, находящихся по разным псевдонимам.
SELECT DB1.Column1, DB2.Column2 FROM :Alias1:DB1, :Alias2:DB2
но в результате получаю ошибку 'неизвестный тип поля "Alias1:DB1"'

На самом деле вы получаете ошибку Unknown Keyword, следовательно всего-лишь нужно заключить псевдоним и имя таблицы в двойные кавычки.
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 запросе.

У меня есть TQuery и TDataSource . В свойстве SQL для TQuery я пишу
SELECT * FROM dbo.AnyTable
база данных на MS SQL Server. Когда я устанавливаю Active в True , то получаю ошибку: 'Token not found. Token :dbo. line number:1' . Что не так?

Если свойство RequestLive=True , то имя таблицы нужно брать в кавычки:
SELECT * FROM "dbo.table"
Если свойство RequestLive=False , кавычек не требуется:
SELECT * FROM dbo.table
4. Проблемы при работе с MS Access через TQuery.

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

Измените в настройке псевдонима (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.

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

Есть очень простой способ — предположим, что у вас есть на форме 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 .
Читать дальшеИнтервал:
Закладка: