Вверх ↑
Ответов: 689
Рейтинг: 20
#1: 2006-09-25 16:48:59 ЛС | профиль | цитата
По делу:
Предлагаю такой алгоритм:
  • Открыть базу данных (Часть кода написана уже Леонидом)
  • Получить список таблиц и их параметры (какие - надо уточнять)
  • Определить тип запроса к базе - (SELECT, INSERT, UPDATE, DELETE и их расписать их возможные модификации)
  • При выборе таблицы (ц) - определять поля таблицы и их параметры (типы, длину и пр.)
    далее сложнее:
    так как запросы могут быть сложными и например выбирать данные из нескольких таблиц необходимо это учесть и расписать такой билдер, который бы это позволял. В моем первом коде это невозможно. Он позволяет выбрать только одну таблицу и с ней работать. В качестве выхода предлагаю следующий алгоритм:
  • выбор и перенос необходимых таблиц базы в окно работы с ними;
  • автоматическое или ручное определение Alias'ов;
  • определение связей (для меня самое сложное).
    после определения учавствующих в запросе таблиц, вывести пользователю все поля данных таблиц с параметрами и дать возможность определить условия по приблизительно такому алгоритму:
  • выбор полей для отображения (аналог SELECT * или SELECT Field1, Field2 или SELECT d.Field1, c.*);
  • выбор полей для определения условий и менеджер условий (типа WHERE d.Field1>0 или WHERE Field1>0 and Field3='root');
  • определение порядка вывода результата (order by);
  • работы с группировкой (тут такие сложности начнуться, что аж ноги сводит, если не сказать грубее );
  • работы с JOIN (я просто молчу уже :shock;
  • проверка синтаксиса ( :? :shock.
    после составления самого кода запроса было бы неплохо включить еще и вывод результата. Но это отдельная пестня. Но без нее никак.

    Чисто технически я не могу работать с комнатами с работы, если можно, давайте пока работать здесь, или дублировать здесь.
    Если алгоритм пойдет, то может быть начнем уже таки? Нет: давайте уточним.

    [size=-2]Добавлено в 11:42
    А вот и первый работающий прототип
    code_312

    [size=-2]Добавлено в 16:48
    А вот работающий вполне уже непрототип (код Леонида и мой я объединил в некой части).
    code_313

    [size=-2]P.S. Как то особого энтузиазма не вижу у коллег... Понедельник что-ли?
  • карма: 0

    0
    файлы: 2code_312.txt [11.9KB] [564], code_313.txt [15.1KB] [522]