Консультация № 62687
15.11.2006, 06:15
0.00 руб.
0 14 3
Здравствуйте.
1) Подскажите, как написать SQL запрос к InterBase в Delphi 7…
К парадоксу писал так:
SQL.Add(‘SELECT ID, Name, Avtor, Izd, God, Vid, Sp‘);
SQL.Add(‘FROM ":PPT:1.db"‘);
SQL.Add(‘WHERE‘);
SQL.Add(‘(God = "‘+ God + ‘")‘);
SQL.Add(‘ORDER BY Name‘);
где PPT – псевдоним, а 1.db – имя файла БД.
Пробовал аналогичный к InterBase, выходит ошибка “Table does not exist“.
2) Как автоматически при загрузке Win XP стартовать InterBase Server v. 6.5.0.28? Сейчас запускаю так: Открываю IBConsole, щёлкаю по Local Server, ввожу имя, пароль и он стартует…

Обсуждение

давно
Мастер-Эксперт
425
4118
15.11.2006, 07:12
общий
это ответ
Здравствуйте, ALL_mikky!
Аналогом работы с IB является работа с Акцесовской базой. В IB все таблицы точно так-же хранятся в одном файле базы данных.
1. Нужно установить коннект с базой данных.
2. Открыть базу данных.
3. Выполнить запрос к одной или нескольким таблицам.
Например в БД у Вас есть таблица работников rabotniki с полями ID, NAME, DOLJNOST, ZARPLATA. Тогда запрос к таблице будет выглядеть так:
SELECT name, doljnost, zarplata FROM rabotniki
WHERE zarplata>10000
ORDER BY name
Естественно, прежде чем выполнять запрос, Вы должны создать как саму базу данных, так и необходимые Вам таблицы, тогда ошибки типа “Table does not exist“ у Вас выскакивать не будут, т.к. Вы точно будете знать, какие таблицы и с какими именами у Вас существуют в базе данных.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Мастер-Эксперт
425
4118
15.11.2006, 07:51
общий
По-моему у Вас там ситуация винигрета. :)Поясните в таком случае, какими компонентами для доступа к данным Вы пользуетесь?
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
15.11.2006, 08:10
общий
Согласен с Вами. Делал по электронной книге “Иллюстрированный самоучитель по Delphi для начинающих”. Упаковал в архив файлы проекта и базу данных http://slil.ru/23407924 весит 365 КБ. Скачайте пожалуйста и посмотрите…
Неизвестный
15.11.2006, 11:11
общий
это ответ
Здравствуйте, ALL_mikky!

1) Соединение с IB идет в два этапа:
- на форму бросается компонент IBDatabase, в котором указывается путь к БД (возможно сетевой), логин и пароль, роль пользовтеля и диалект.
- потом бросается компонент IBTransaction, в котором указывается ссылка на IBDatabase и поведение трансакций.
- после этого кладется компонент IBQuery и DBDataSource, ссоответствующими ссылками.
ПОсле этого в IBQuery.SQL.Add(‘Select * from Table where ... order...‘);
И открываешь запрос.
ЕСли к Query прицеплен DBGrid то получаешт содержимое в гриде.
Неизвестный
15.11.2006, 12:16
общий
Архангельский Андрей Германович, начал на новой форме, но что то не получается… Залил http://slil.ru/23408548 (349 КБ), что получилось + БД. Посмотрите и подправьте, что там не так… Для примера, сделайте один любой SQL запрос…
давно
Мастер-Эксперт
425
4118
15.11.2006, 20:03
общий
To ALL_mikky:Я убрал из Вашего проекта те компоненты доступа к данным, которые там не нужны и положил на форму компоненты, которые обычно используются для работы с базой данных InterBase. База открывается, SQL запрос выполняется, данные Вы можете видеть в Grid‘е.Для примера я внес простой запрос SELECT * FROM Table1, поэтому конкретный нужный Вам запрос Вы внесете сами.Файл проекта можно забрать тут:http://aksinia.nm.ru/files/files.rar
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Мастер-Эксперт
425
4118
15.11.2006, 20:07
общий
В качестве пожелания, которое Вы не должны игнорировать.Купите книгу по работе с базами данных в Дельфи, например Фаронов "Программирование баз данных в Delphi 7" или любую подобную, в которой бы подробно рассказывалось о работе с базами данных. Иначе, если Вы просто слепо, без понимания, будете копировать примеры, дальше никогда не продвинетесь.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
15.11.2006, 21:28
общий
это ответ
Здравствуйте, ALL_mikky!
К последнему ответу добавлю, Вам многое надо забыть, что вы умели делать в Paradox, IB - это совсем другая СУБД, SQL-серверная.
Почитайте, вот здесь:
http://www.interbase-world.com/ru/firebird/,
там написано о FB бесплатном аналоге IB.
Неизвестный
16.11.2006, 00:26
общий
sir henry, Спасибо Вам. Но http://aksinia.nm.ru/files/files.rar - Запрашиваемая Вами страница не найдена. Залейте ещё...
давно
Мастер-Эксперт
425
4118
16.11.2006, 03:27
общий
Извините, вот правильная ссылка:http://aksinia.nm.ru/files/proj.rarКогда откроете проект, то у компонента IBDatabase в свойстве DatabaseName пропишите путь к Вашей базе данных, где она реально лежит.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
16.11.2006, 04:40
общий
Спасибо Вам за помощь.Скачал Ваш пример. Запустился, только, когда удалил все свои кнопки. Тоесть осталось:unit InterBase;interfaceuses Windows, Messages, Classes, SysUtils, Graphics, Controls, StdCtrls, Forms, Dialogs, DBCtrls, DB, DBTables, Mask, ExtCtrls, Grids, DBGrids, IBCustomDataSet, IBQuery, IBDatabase;type TForm1 = class(TForm) ScrollBox: TScrollBox; Panel1: TPanel; DataSource1: TDataSource; Panel2: TPanel; Button1: TButton; DataSource2: TDataSource; DBGrid2: TDBGrid; Edit1: TEdit; Button2: TButton; Button3: TButton; Edit2: TEdit; Button4: TButton; Button5: TButton; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; IBDatabase1: TIBDatabase; IBQuery1: TIBQuery; IBTransaction1: TIBTransaction; private { private declarations } public { public declarations } end;var Form1: TForm1; God,text,Names,Iz,Av,Vid,Sp: string[30];implementation{$R *.DFM}end.Как вывести этот select * from TABLE1 запрос на конкретную кнопку?И как сделать конкретный запрос допустим при нажатии кнопки:procedure TForm1.Button6Click(Sender: TObject);begin{Что тут писать?}end;
давно
Мастер-Эксперт
425
4118
16.11.2006, 06:02
общий
Точно так же как Вы делали и раньше:IBQuert1.Close; {Закрыть запрос}IBQuert1.SQL.Clear; {Очистить текст старого запроса}IBQuery1.SQL.Add(‘Сюда пишете текст нужного Вам запроса‘); {Внести новый}IBQuery1.Open; {Открыть запрос}
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
16.11.2006, 06:14
общий
СПАСИБО!!! Ура! Всё получилось. Теперь напишу запросы...
Неизвестный
16.11.2006, 08:17
общий
sir henry, Посмотрите http://slil.ru/23413583 (37,6 КБ). По году ищет замечательно, но по имени ошибка…
Форма ответа