W Cat - S. D. F.

Здесь есть возможность читать онлайн «W Cat - S. D. F.» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, Базы данных, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

S. D. F.: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «S. D. F.»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Если вам интересен SQL, и знаком Delphi, давайте поразвлекаемся программированием.

S. D. F. — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «S. D. F.», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

- Между строками 330 и 340 добавляем текст:

330 begin // была ошибка

331 Memo1.Clear;

332 Memo1.Lines.Add(S); // перезапись запроса одной строкой

333 LPos := GetSelStart(Mistake); // поиск места ошибки

334 if LPos > -1 then begin

335 Memo1.SelStart := LPos-1; // вкл индикатора

336 Memo1.SelLength := 1;

337 Memo1.SetFocus;

338 Panel5.Caption := IntToStr(LPos); // дополнительная информ.

339 end;

340 ShowMessage(Mistake); // сообщение об ошибке

- Как видишь, GetSelStart получает строку с описанием ошибки и пытается найти там информация о ее позиции:

function GetSelStart(S: string):integer;

var

i, n : integer;

ss : string;

begin

result := -1;

n := pos('column ',S);

if n > 0

then begin

delete(S,1,n+6);

ss := '';

for i := 1 to length(s) do

if S[i] in ['0'..'9']

then ss := ss + s[i]

else break;

if ss <> '' then

result := StrToInt(ss);

// ShowMessage(S);

end;

end;

- Согласись, тут все довольно просто. Но результат, впечатляет.

- Да, как всегда, что-то да упустишь, во-первых, в компоненте Memo1 измени свойство HideSelection на false – очень помогает, и второе под этим Memo поставь панельку (у меня это Panel5), которая будет показывать текущее положение курсора в строке, для этого вставь обработчик:

procedure TFMain.Memo1Click(Sender: TObject);

begin

Panel5.Caption := IntToStr( Memo1.SelStart );

end;

* Ну, ты загонял, то тут добавить, то там исправить.

- С моей точки зрения, это нормальная работа. Программа, как и живое существо, не рождается полностью функционирующей. Растем, развиваемся, главное, четко понимать, почему и для чего производятся эти манипуляции…

- Ну, что, теперь, твоя очередь тестировать программу.

- * -

- * -

- Ну, как успехи. Выходит?

* И входит, и выходит. Вообще-то мне нравится, но я обнаружил бревно в твоем глазу.

* Как-то раз вылезло такое сообщение:

“Cannot perform operation - DB is currently open”

- Так, так, в каких обстоятельствах появилась ошибка.

* Я отрывал базу.

- И чё сея строчка значит?

* Грит не может выполнять работу – база сейчас открыта.

- Объясни понятнее.

* Т.е. не может открыть базу, потому, что она уже открыта.

- Не обязательно она, но какая-то база открыта.

* Ну, и чего делать?

- Конечно, исправлять.

* Как?

- Думай.

* Ну, если какая-то база открыта, надо ее закрыть.

- Отлично, вот тебе две строчки, вставь их в двух местах… где сам найдешь.

if IBDatabase1.Connected then

IBDatabase1.Connected := false;

* Ты хочешь сказать, что все было запланировано?

- J

- Еще, есть целый ряд ситуаций в книге [1] которые формально не являются ошибкой, но…

* Ну-ка, ну-ка.

- Например такой запрос:

SELECT first.cname, second.cname, first.rating

FROM Customers first, Customers second

WHERE first.rating=second.rating;

* И в чем прикол?

- Попробуй.

* Останавливается на слове second.

- Я тоже не сразу понял, открой в книге [2] список зарезервированных слов.

* Да, не все йогурты одинаковы.

- Как и реализации SQL, но, все они полезны.

* Еще я заметил, что в некоторых случаях запросы выполняется, но порядок строк, не такой как в книге [1].

- Это, та же ситуация. Разные реализации SQL имеют разные установки (по умолчанию) для сортировки, т.е. если будет явно задан порядок, тогда таблица должны 100% совпасть.

* Так, что, задача выполнена?

- Нет, не совсем.

* И в чем дело, какие-то исправления?

- Поправки? Да, так, по мелочи, SetFocus для Memo1 при сбросах.

* И что дает?

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

* А куда дальше, мне кажется, что у меня появилось понимание SQL. Правда, хочется еще раз внимательно перечитать книгу [1].

- Это хорошо, но требуется еще понимание Firebird.

* ?

- Ну, вот сейчас, мы выяснили, что требуется знать зарезервированные слова Firebird. Но в этой системе есть и много вкусненького, что грех не использовать.

* Например?

- Мне очень нравится организация функции AutoIncrement.

- Часто в таблица нужно ключевое поле с уникальными значениями, проще всего его заполнять значениями счетчика.

- Знакомься:

CREATE GENERATOR gl;

SET GENERATOR gl TO 1;

CREATE TRIGGER Persons FOR Persons

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

IF (NEW.P_Id IS NULL) THEN

NEW.P_Id = GEN_ID(gl, 1);

END

// (- * -) умножить примерно на 1024.

* Продолжение следует??

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

* Не отбрешешься!

- Да, помнится, были задумки, но чтобы продолжить надо опять сосредоточится в нужное состояние, лень! А стоит ли!

* А я?!

- Ну, давай прикинем, сколько это будет «я». Скачают, сей файл раз 100 – 200, если отфильтровать скачки по ошибке, удаленные по прочтении двух предложений, прочтенные, но не понятые, и тд и тп, то останется 0.75 читателя, пусть из вежливости будет 1.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «S. D. F.»

Представляем Вашему вниманию похожие книги на «S. D. F.» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «S. D. F.»

Обсуждение, отзывы о книге «S. D. F.» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x