S. D. F. - [6]

Шрифт
Интервал

- Как видишь, на экран выдается название таблицы, а затем таблица с описанием полей.

* Погоди! А что это в 280 строке?

- О, кота то я, и не заметил.

function FieadType(n:integer):string;

begin

 case n of

  7  : result := 'smallint';

  8  : result := 'integer';

  9  : result := 'quad';

  10 : result := 'float';

  11 : result := 'd_float';

  12 : result := 'date';

  13 : result := 'time';

  14 : result := 'char';

  27 : result := 'double';

  35 : result := 'date';

  37 : result := 'varchar';

 261 : result := 'blob';

 else  result := IntToStr(n)+' ?';

 end; // case

end;

В результате отобразится, нечто такое:

- * -

- Ну, и чего так долго, конечно, пива много не бывает, но…

* В общем-то, получилось, но никак не могу скопировать получившееся.

- Да, есть такая задача. Вставь в самом конце (перед end.) в файле Unit1:

initialization

  OleInitialize(nil);

finalization

  OleUninitialize;

А в самом начале этого файла вставь ActiveX в разделе uses.

* Так, просто! Да что же это такое. Просто хочется рвать и метать!!

- Это Windows.

* Ну, что теперь отображаем данные?

- Нет, не к спеху, да и отображать еще нечего, давай отдохни, а я подготовлюсь к последнему рывку.

«Продолжение следует»

Последний? Рывок к ББД


- Предлагаю вернуться к выполнению SQL запроса.

- Бывают запросы SELECT и все остальные. Результат выполнения SELECT – будем выдавать в закладку result,  а остальные просто выполнять.

- Переделываем Button1Click:

010 procedure TFMain.Button1Click(Sender: TObject);

020 begin  // кнопка run SQL

030    RunSQL(MakeSQL);  // выполение команды SQL

040 end;

- Пойдем дальше.

- Теперь можно заняться кнопочкой «Show Data»

010 procedure TFMain.Button5Click(Sender: TObject);

020 var

030  i : integer;

040  S : string;

050 begin  // Show Data

060  with CheckListBox1 do

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


Еще от автора W Cat
Задачник по программированию для школы

Задачи для школьника, должны быть веселы!На наших занятиях, запрещена фраза "мы это не проходили" - если это надо для решения задачи - "пройди", источников море, учитель подскажет.Не получается? Возможно, ты выбрал задачу не по силам, ничего - это тоже опыт, отложи, попробуй следующую. Мало решить задачу, придумай свою...Ученик должен уметь: (поставить задачу + решить задачу + учиться) * n ...


Система Диофанта

Если вы хотите поразить одноклассников молниеносным решением квадратных уравнений [КУ], давайте развлечемся.


Рекомендуем почитать
Долбаные города

В богатом и процветающем государстве Новый Мировой Порядок, а, еще точнее, в маленьком городке Ахет-Атон живет Макс Шикарски, у которого не все в порядке дома, не все в порядке с головой, не все в порядке с друзьями. После трагедии, случившейся в его школе, Макс пытается найти виновного в том, что его друг, в одночасье превратившийся в героя новостей, стал школьным стрелком. Эти поиски заводят Макса и его друзей далеко, открывая им природу жестокости последнего столетия.


Кошак драный!

 Одно слово может изменить твое решение. Одно чувство может изменить твою жизнь. Один человек может изменить тебя.


Это точно она?!

Императорская чета в шоке. Вместо "Прекрасной принцессы" старый прорицатель показал им настоящую "Волю звезд". Придется теперь Кристиану Наглому, наследнику Империи, жениться на девушке-панке из нашего мира. Вот только девушка немного против… Кто кого?! Спешите на шоу: "Темный властелин против панка"!


Чардаш заводных игрушек

В 2040 году частный детектив Кармайкл расследует убийство генетически модифицированной девушки, благодаря своим спецспособностям погружаясь в сны подозреваемых. (редактор Алла Лисова, дизайн обложки Геннадий Беляев)


Дубовый лист

Что может знать человек, о времени? Под силу ли ему осознать всю его тяжесть? А главное, сможет ли человек, понять что такое парадокс? Пара молодых ученых, получила возможность проверить это. Чем все закончилось, вы можете узнать прямо сейчас…


Учитель

Они не знают, за что воюют.