- Ну, что, теперь, твоя очередь тестировать программу.
- * -
- * -
- Ну, как успехи. Выходит?
* И входит, и выходит. Вообще-то мне нравится, но я обнаружил бревно в твоем глазу.
* Как-то раз вылезло такое сообщение:
“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.
Так вот, мой дорогой единственный читатель, ежели тебе, почему-то захотелось продолжения нашего общения, оставь отзыв на флибусте (flibusta.net) я там регулярно пасусь.
А пока, прощаюсь. Успехов!
W Cat.