Чтение онлайн

на главную - закладки

Жанры

Cat W

Шрифт:

070 begin // составляем список полей

080 if Items.Count = 0 then exit; // если список пуст - уходим

090 S := 'SELECT ';

100 for i := 0 to Items.Count - 1 do // список полей вставляем в запрос

110 if Checked[i] then

120 S := S + LowerCase(Items[i]) + ', ';

130 end; // with CheckListBox1

140 delete(S, length(S)-1, 2);

150 Memo1.Clear;

160 Memo1.Lines.Add(S);

170 S := 'FROM '+ LowerCase( ListBox1.Items[ ListBox1.ItemIndex] );

180 Memo1.Lines.Add(S);

190 RunSQL( MakeSQL);

200 end;

Тут все должно быть ясно: кнопка вырабатывает команду SELECT для полей отмеченных галочкой и распечатывает результат.

* Ну, как теперь-то все готово.

– Вот же шило в одном месте. Ладно, следующий пункт:

Тестирование

– Как ты помнишь, тренироваться мы будем по книге Мартина Грубера «Понимание SQL»[1], при потребности будем поглядывать в «Firebird. Руководство разработчика баз данных» Хелен Борри[2].

* Ну и в интернете найдется масса материала.

– Для нашей игры понадобится база с определенными таблицами, полюбуйся на них приложении к [1].

* Не сказать, что 3 таблицы это очень много, но…

– Я так понимаю, что тебе лень, а лень двигатель прогресса.

– В данном случае, я тебе помогу…

– На закладке SQL ставим еще одну кнопку «Run SQL by List».

– Будут выполнятся запросы записанные в текстовом файле.

– Каждый запрос должен заканчиваться «;», допускается перенос запроса на несколько строк, не допускается несколько запросов в одной строке.

– Не отображается результат запросов SELECT

– При ошибочном запросе, выполнение списка прекращается.

010 procedure TFMain.Button6Click(Sender: TObject);

020 var

030 i : integer;

040 L : TStringList;

050 S : string;

060 begin // Run SQL by List

070 with OpenDialog1 do

080 begin // подготавливаем диалог

090 Filter := 'File with SQL|*.txt';

100 DefaultExt := 'txt';

110 if Execute then

120 with DataModule2 do

130 begin

140 L := TStringList.Create;

150 L.LoadFromFile(FileName); // открываем файл

160 His.Lines.Add('Run SQL by List '+FileName);// запись в историю

170 S := '';

180 for i := 0 to L.Count - 1 do

190 begin

200 S := S + ' ' + L[i]; // складываем строки

210 if pos(';', S) > 0 then // пока в строке не появится ';'

220 begin

230 S := trim(S); // ??

240 His.Lines.Add(S); // записываем запрос в историю

250 if RunSQL(S) then break; // если запрос не выполнился выходим.

260 S := '';

270 end; // if

280 end; // for

290 L.Free;

300 end; // if Execute

310 end; // OpenDialog1

320 end;

* В общем все понятно…

* Что за безобразие, хочу чтобы SELECT тоже выполнялись списком.

– Надо подумать. Минуточку. «Раз, два... Меркурий во втором доме... луна ушла... шесть – несчастье... вечер – семь...»

– Готово – сделать можно, даже несколько вариантов, т.е. я имею в виду из уже готовых элементов кода с минимальными добавлениями, а значит, я ничего подсказывать не буду, уж изволь сделать сам.

* Да?!

– Да.

– Возвращаюсь к нашей теме.

– Сейчас я тебе дам пару файлов. Желательно, чтобы ты поступил так:

– 1. Создай новую базу.

– 2. Сделай из нижеследующего файл и выполни его.

«начало кода»

CREATE TABLE Salespeople

( snum integer,

sname char (10),

city char (10),

comm decimal );

CREATE TABLE Customers

( cnum integer,

cname char (10),

city char (10),

rating integer,

snum integer );

CREATE TABLE Orders

( onum integer,

amt decimal,

odate date,

cnum integer,

snum integer );

«конец кода»

– 3. Тут есть нюанс, который я еще не понял, но после создания таблицы, она не активна!?! Потом попробуешь, и возможно найдешь красивое решение. А пока закрой программу, затем запусти ее вновь и открой свою базу. Этого достаточно.

– 4. Сделай следующий файл и выполни:

«начало кода»

INSERT INTO Salespeople (snum,sname,city ,comm)

VALUES (1001,'Peel','London',.12);

INSERT INTO Salespeople (snum,sname,city ,comm)

VALUES (1002,'Serres','San Jose',.13);

INSERT INTO Salespeople (snum,sname,city ,comm)

VALUES (1004,'Motika','London',.11);

INSERT INTO Salespeople (snum,sname,city ,comm)

VALUES (1007,'Rifkin','Barcelona',.15);

INSERT INTO Salespeople (snum,sname,city ,comm)

VALUES (1003,'Axelrod','New York',.10);

INSERT INTO Customers (cnum,cname,city,rating,snum)

VALUES (2001,'Hoffman','London',100,1001);

INSERT INTO Customers (cnum,cname,city,rating,snum)

VALUES (2002,'Giovanni','Rome',200,1003);

INSERT INTO Customers (cnum,cname,city,rating,snum)

VALUES (2003,'Liu','San Jose',200,1002);

INSERT INTO Customers (cnum,cname,city,rating,snum)

VALUES (2004,'Grass','Berlin',300,1002);

INSERT INTO Customers (cnum,cname,city,rating,snum)

Поделиться:
Популярные книги

Тринадцатый VIII

NikL
8. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый VIII

Убивать чтобы жить 7

Бор Жорж
7. УЧЖ
Фантастика:
героическая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 7

Слезы Эйдена 1

Владимиров Денис
11. Глэрд
Фантастика:
боевая фантастика
фэнтези
попаданцы
5.00
рейтинг книги
Слезы Эйдена 1

Тринадцатый XIII

NikL
13. Видящий смерть
Фантастика:
городское фэнтези
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Тринадцатый XIII

1941, Великая Отечественная катастрофа: Итоги дискуссии

Коллектив авторов
Документальная литература:
военная документалистика
6.25
рейтинг книги
1941, Великая Отечественная катастрофа: Итоги дискуссии

Кодекс Охотника. Книга V

Винокуров Юрий
5. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
4.50
рейтинг книги
Кодекс Охотника. Книга V

Черный маг императора 2

Герда Александр
2. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
6.00
рейтинг книги
Черный маг императора 2

Авиатор: назад в СССР

Дорин Михаил
1. Авиатор
Фантастика:
попаданцы
альтернативная история
5.25
рейтинг книги
Авиатор: назад в СССР

Снега

Чепурин Юлий Петрович
Поэзия:
драматургия
5.00
рейтинг книги
Снега

Ну привет, заучка...

Зайцева Мария
Любовные романы:
эро литература
короткие любовные романы
8.30
рейтинг книги
Ну привет, заучка...

Варяг

Мазин Александр Владимирович
1. Варяг
Фантастика:
альтернативная история
9.10
рейтинг книги
Варяг

Проклятый Лекарь. Том 2

Молотов Виктор
2. Анатомия Тьмы
Фантастика:
фэнтези
попаданцы
7.00
рейтинг книги
Проклятый Лекарь. Том 2

Рубежник

Билик Дмитрий Александрович
1. Бедовый
Фантастика:
юмористическая фантастика
городское фэнтези
мистика
5.00
рейтинг книги
Рубежник

Герой

Мазин Александр Владимирович
4. Варяг
Фантастика:
альтернативная история
9.10
рейтинг книги
Герой