W Cat - S. D. F.
Название: | S. D. F. | |
Автор: | W Cat | |
Жанр: | Базы данных, Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), Программирование: прочее, Pascal, Delphi, Lazarus и т.п. | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | - | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "S. D. F."
Если вам интересен SQL, и знаком Delphi, давайте поразвлекаемся программированием.
Читаем онлайн "S. D. F.". [Страница - 7]
- Не отображается результат запросов 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)
VALUES (2006,'Clemens','London',100,1001);
INSERT INTO Customers (cnum,cname,city,rating,snum)
VALUES (2008,'Cisneros','San Jose',300,1007);
INSERT INTO Customers (cnum,cname,city,rating,snum)
VALUES (2007,'Pereira','Rome',100,1004);
INSERT INTO Orders (onum,amt,odate,cnum,snum)
VALUES (3001,18.69,'10/03/1990',2008,1007);
INSERT INTO Orders (onum,amt,odate,cnum,snum)
VALUES (3003,767.19,'10/03/1990',2001,1001);
INSERT INTO Orders (onum,amt,odate,cnum,snum)
VALUES (3002,1900.10,'10/03/1990',2007,1004);
INSERT INTO Orders (onum,amt,odate,cnum,snum)
VALUES (3005,5160.45,'10/03/1990',2003,1002);
INSERT INTO Orders (onum,amt,odate,cnum,snum)
VALUES (3006,1098.16,'10/03/1990',2008,1007);
INSERT INTO Orders (onum,amt,odate,cnum,snum)
VALUES (3009,1713.23,'10/04/1990',2002,1003);
INSERT INTO Orders (onum,amt,odate,cnum,snum)
VALUES (3007,75.75,'10/04/1990',2004,1002);
INSERT INTO Orders (onum,amt,odate,cnum,snum)
VALUES (3008,4723.00,'10/05/1990',2006,1001);
INSERT INTO Orders (onum,amt,odate,cnum,snum)
VALUES (3010,1309.95,'10/06/1990',2004,1002);
INSERT INTO Orders (onum,amt,odate,cnum,snum)
VALUES (3011,9891.88,'10/06/1990',2006,1001);
«конец кода»
- Все должно пройти хорошо.
* Брюки превращаются, превращаются брюки… в элегантную базу данных. Все ОК.
- Теперь заготовка базы у нас есть, и мы можем выполнять запросы из книги [1] выполнятся будут 3 задачи:
- 1. Самообучение SQL.
- 2. Вычитывание книги (с исправлением опечаток)
- 3. Тестирование программы.
* Значит теперь, со всеми переделками, программа сможет выполнить любой запрос?
- Это предстоит проверить.
Прошло три дня.
- Нет, ребята, пулемета я вам не дам.
- В книге оказалось, очень много ошибок. Ну, очень много ошибок, и все они полезные.
* Догадываюсь, задумано издевательство.
- Точно! Мне так понравилась идея с ошибками, что я задумался, не наделать их и в этом тексте.
* Вот этого, не надо!
- Хорошо, но ошибки неизбежны, где-то что-то я упущу, в этом случае я сделаю вид, что все так и задумано…
* Ну, ты и жук!
- Учись, студент. Учись, как сдавать программу заказчику, главное держать невозмутимое выражение морды лица: “Как, при запуске программы включилось форматирование диска? Ну, --">