КулЛиб - Классная библиотека! Скачать книги бесплатно
Всего книг - 713372 томов
Объем библиотеки - 1405 Гб.
Всего авторов - 274722
Пользователей - 125099

Последние комментарии

Новое на форуме

Новое в блогах

Впечатления

Влад и мир про Семенов: Нежданно-негаданно... (Альтернативная история)

Автор несёт полную чушь. От его рассуждений уши вянут, логики ноль. Ленин был отличным экономистом и умел признавать свои ошибки. Его экономическим творчеством стал НЭП. Китайцы привязали НЭП к новым условиям - уничтожения свободного рынка на основе золота и серебра и существование спекулятивного на основе фантиков МВФ. И поимели все технологии мира в придачу к ввозу промышленности. Сталин частично разрушил Ленинский НЭП, добил его

  подробнее ...

Рейтинг: +1 ( 1 за, 0 против).
Влад и мир про Шенгальц: Черные ножи (Альтернативная история)

Читать не интересно. Стиль написания - тягомотина и небывальщина. Как вы представляете 16 летнего пацана за 180, худого, болезненного, с больным сердцем, недоедающего, работающего по 12 часов в цеху по сборке танков, при этом имеющий силы вставать пораньше и заниматься спортом и тренировкой. Тут и здоровый человек сдохнет. Как всегда автор пишет о чём не имеет представление. Я лично общался с рабочим на заводе Свердлова, производившего

  подробнее ...

Рейтинг: +1 ( 1 за, 0 против).
Влад и мир про Владимиров: Ирландец 2 (Альтернативная история)

Написано хорошо. Но сама тема не моя. Становление мафиози! Не люблю ворьё. Вор на воре сидит и вором погоняет и о ворах книжки сочиняет! Любой вор всегда себя считает жертвой обстоятельств, мол не сам, а жизнь такая! А жизнь кругом такая, потому, что сам ты такой! С арифметикой у автора тоже всё печально, как и у ГГ. Простая задачка. Есть игроки, сдающие определённую сумму для участия в игре и получающие определённое количество фишек. Если в

  подробнее ...

Рейтинг: 0 ( 0 за, 0 против).
DXBCKT про Дамиров: Курсант: Назад в СССР (Детективная фантастика)

Месяца 3-4 назад прочел (а вернее прослушал в аудиоверсии) данную книгу - а руки (прокомментировать ее) все никак не доходили)) Ну а вот на выходных, появилось время - за сим, я наконец-таки сподобился это сделать))

С одной стороны - казалось бы вполне «знакомая и местами изьезженная» тема (чуть не сказал - пластинка)) С другой же, именно нюансы порой позволяют отличить очередной «шаблон», от действительно интересной вещи...

В начале

  подробнее ...

Рейтинг: +2 ( 2 за, 0 против).
DXBCKT про Стариков: Геополитика: Как это делается (Политика и дипломатия)

Вообще-то если честно, то я даже не собирался брать эту книгу... Однако - отсутствие иного выбора и низкая цена (после 3 или 4-го захода в книжный) все таки "сделали свое черное дело" и книга была куплена))

Не собирался же ее брать изначально поскольку (давным давно до этого) после прочтения одной "явно неудавшейся" книги автора, навсегда зарекся это делать... Но потом до меня все-таки дошло что (это все же) не "очередная злободневная" (читай

  подробнее ...

Рейтинг: +1 ( 1 за, 0 против).

S. D. F. [W Cat] (fb2) читать постранично, страница - 4

- S. D. F. 139 Кб, 23с. скачать: (fb2) - (исправленную)  читать: (полностью) - (постранично) - W. Cat

 [Настройки текста]  [Cбросить фильтры]

#c3c3c3;');

 LHTML.add('padding:3px; vertical-align:top; }');

 LHTML.add('table td {border:1px solid #c3c3c3; padding:3px; vertical-align:top;');

 LHTML.add('</style></head><body>');

end;

- Тут, я ничего объяснять не буду HTML сегодня не наша тема.

- В цикле стр 200 – 320 выдается результат предшествующего запроса. Остальное все просто.

* Опять, таки не вижу, чему тут гордится.

- Мартышка, к старости, слаба глазами, стала? У меня есть предложение, после того как мы закончим разговор, отложи этот файл в далекую папку, и через пол года, напиши такую же программу самостоятельно, пользуясь справочниками, интернетом, но не этим текстом. Вот тогда, посмотрим.

* Хорошо! Спорим, что я напишу лучше!

- Вполне возможно. Я буду только рад. Выиграет только вселенский разум.

* Ладно, успокоились, что у нас еще есть неясного.

* А, что такое MakeSQL – по смыслу делается строка запроса?

- Да, это очень простая функция, и возможно это надо еще упростить…

010 function MakeSQL:string;

020 var

030  i : integer;

040 begin

050  result := '';

060  with FMain.Memo1 do

070  for i := 0 to Lines.Count - 1 do

080   if trim(Lines[i]) <> '' then

090    begin

100    FMain.His.Lines.Add(Lines[i]);

110   result := result + Lines[i] + ' ';

120  end;

130 result := trim(result);

140 end;

- Все, что находится в Memo1 записывается в одну строку(стр. 110) и одновременно сохраняется в истории(стр. 100).

* Так значит мы можем теперь выполнять SQL запросы?

- И да, и нет.

* ??

- Выполнять запросы можем, но не всегда увидим результат. Ну, еще не все готово.

* Так давай! Беги, покупай, эти тр-ан-зис-то-ры!

- Не спеши. Выполним, те SQL, что запланированы.

- Но сначала еще одна мелочь. Сделай обработчик для кнопки Show DB это на самой первой закладке.

procedure TFMain.Button3Click(Sender: TObject);

begin // Show DB

 ShowTables;

end;

???????

Первые запросы


- Ну, что, давай попробуем.

- Открой или сделай новую базу и выполни следующий запрос:

CREATE TABLE Salespeople

( snum integer,

sname char (10),

city char (10),

comm decimal );

* Говорит что все OK.

- Перейди на первую закладку и нажми кнопку Show DB.

* Ура!! Заработало!!

- Рано кричать, закрой программу, включи опять и открой твою базу.

* Есть, таблица сразу отобразилась.

* Есть вопросик, для чего у нас на форме CheckListBox1 и закладка Result.

- Ну, с итоговой закладкой погоди, а вот по первому пункту поболтаем.

- А пока потренируйся, введи еще пару таблиц, пока это без разницы, ну что-то типа «Коты Герои»(кличка, возраст, степень героизма, аппетит и т.д.) и т.д.

* А как?

- Начинай читать книги по SQL. Я предлагал только играться, (и сделать инструмент для игры) а правила игры вспоминай сам.

- А мне, пора возвращаться к своим, ко… нет к баранам.

Продолжаем клепать ББД


- Итак закладка Structure DB показывает имеющиеся в сей базе таблицы.

- Но, интересно узнать из каких полей состоит таблица.

- Именно эту информацию будет показывать CheckListBox1

* Но, кроме имен полей, хочется знать их типы, размеры и прочее.

- В числе прочей, эта информация появится на накладке Result, но как сказал классик «в очередь, с*ны дети, в очередь».

- Так, мне этот бардак надоел, делаем так, как я привык. Во-первых вставляем новый модуль:

unit gv; // Глобальные переменные

interface

var

 Path : string; // Путь к исполняемой программе

implementation

end.

* Да, знатный модуль.

- Смейся, смейся. При помощи этого модуля, я привык такой фокус делать, закачаешься, но сейчас это не к месту.

- Второе: делаем обработчик создания формы:

10 procedure TFMain.FormCreate(Sender: TObject);

20 begin

30  Path := ExtractFileDir(ParamStr(0)) + '\';

40  OpenDialog1.InitialDir := Path;

50   PageControl1.ActivePage := TabSheet1;

60 end;

- Строка 30 – инициализация пути к запускаемой программе.

* А для чего?

- Ну для начала изменим procedure TFMain.NewDB1Click:

150       IBDatabase1.DatabaseName:=  Path + fn;

* А зачем? И так все хорошо работало.

- Хорошо, да не очень. Если при сохранении указывается только имя файла, операционная система записывает его в текущую папку, если это папка, откуда программа запускалась, то все нормально, но если со времени запуска программы пользователь заходил в другие папки (текущая папка сменилась), то потом, найти созданный файл, большая проблема. И совсем другое дело, когда мы даем команду записать файл в конкретную папку.

* И для этого заводить специальный модуль.

- Не ворчи, сказано, это моя привычка.

- Строка 40 Инициализация текущей папки для диалога открытия файла.

- По умолчанию диалог откроется с Моих Документов, что часто очень не удобно…

- Строка 50 Делаем активной первую закладку нашей программы, независимо от того, на которой мы остались при запуске компиляции.

* Ух, что-то я за… работался.

- Ладно, давай прервемся.

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

А вот и продолжение


- Ну, с новыми силами…

- Для ListBox1 делаем обработчик двойного клика. Т.е. по этому событию должно отобразится содержимое соответствующей  таблицы.

procedure TFMain.ListBox1DblClick(Sender: TObject);

var

 kod : integer;

begin

  ShowFields;

end;

010 procedure ShowFields;

020 var

030  n   : integer;

040 begin

050  CLBox1.Clear;

060 with DataModule2.IBSQL1 do

070  begin

080     Close;

090     SQL.Clear;

100 SQL.Add('select R.RDB$FIELD_NAME from RDB$FIELDS F, RDB$RELATION_FIELDS R '+

110 'where F.RDB$FIELD_NAME = R.RDB$FIELD_SOURCE and R.RDB$SYSTEM_FLAG = 0