Вверх ↑
Этот топик читают: Гость
Ответов: 689
Рейтинг: 20
#1: 2006-09-24 21:33:51 ЛС | профиль | цитата
После появления версии 159 на форуме началось активное обсуждение встроенного в HiAsm и написанного на самом же HiAsm SQL Query Builder'e - т.е. неком визуальном средстве написания SQL запросов для локальных поддерживаемых HiAsm баз данных (в данный момент наиболее яркий пример - SQLLite - новый компонент версии 159) - в данные момент отсутствует.

Я позволю себе начать эту тему (хотя возможно впоследствии и не буду ее куратором), т.к. считаю что это вполне возможно силами любителей и профессионалов HiAsm. Итак идея такова:

Непосредсвенно на HiAsm написать, по возможности, визуальный редактор SQL запросов, так называемый SQL Builder, аналог MS SQL IM QBuilder, с аналогичными или более простыми, но вполне подходящими для работы с базой данных, возможностями.

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



На настоящий момент тема развивалась здесь. Часть кодов (некоторые вполне рабочие, некоторые только обозначают концепции тоже частично изложены там - авторам кодов просьба продублировать их здесь - требования к коду: не использовать не стандартные компоненты, указывать версию HiAsm).



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

Вот в принципе все. Далее лирика:
Это все нам по силам. Написать SQL Query Builder на мой взгляд возможно, хотя и не совсем легко. Давайте попробуем?
карма: 0

0
Ответов: 3655
Рейтинг: 69
#2: 2006-09-24 21:41:45 ЛС | профиль | цитата
oldTV, Как раз для таких проектов были задуманы комнаты только им кирдык настал
карма: 0

0
Ответов: 689
Рейтинг: 20
#3: 2006-09-24 21:52:07 ЛС | профиль | цитата
Когда наладит Dilma перейдем в комнаты, кто против?
Мой код, пока без учета твоих предложений по низпадающим спискам, это позже...
Код смотрите ниже, нестандартные элементы не используются, версия Hiasm=157 (немного модифицированы шрифты (сомнительная модификация), подправлен текст, добавлены комментарии.

Комментарии я думаю добавлять необходимо, по мере возможности...
карма: 0

0
Ответов: 8930
Рейтинг: 823
#4: 2006-09-24 23:00:17 ЛС | профиль | цитата
Вячеслав, на каком элементе нет doOpen?, я своих точек не придумывал!

[size=-2]------ Добавлено в 23:00
Tad, 1 - легко, 2 - не знаю почему!
oldTV, при изменении схем в режиме правки они не сворачиваются в ссылку, а Galkov ругается, не используйте!
карма: 19

0
Ответов: 689
Рейтинг: 20
#5: 2006-09-24 23:02:16 ЛС | профиль | цитата
Ок, code_306
карма: 0

0
файлы: 1code_306.txt [6.4KB] [587]
Ответов: 16884
Рейтинг: 1239
#6: 2006-09-24 23:08:51 ЛС | профиль | цитата
Леонид,
1) знаю, что легко и желательно при закрытии программы запоминать базу с которой работал.
2) тоже не знаю (пример от Dilma тоже не хочет, нужно посмотреть коды doClose)
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3655
Рейтинг: 69
#7: 2006-09-24 23:44:27 ЛС | профиль | цитата
Леонид, При вставке схемы (304) появляется окно :
Не найдена точка onOpen элемента SQLite_DB.
ХиАсм b159 + патч от Dilma.
Странный глюк.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#8: 2006-09-25 03:24:57 ЛС | профиль | цитата
Вячеслав писал(а):
oldTV, Как раз для таких проектов были задуманы комнаты только им кирдык настал

Уже несколько дней как работают

Вячеслав писал(а):
Леонид, При вставке схемы (304) появляется окно :
Не найдена точка onOpen элемента SQLite_DB.
ХиАсм b159 + патч от Dilma.
Странный глюк.

на SVN обновленные версии лежат, вышедшие уже после патча.
карма: 27
0
Ответов: 16884
Рейтинг: 1239
#9: 2006-09-25 08:24:20 ЛС | профиль | цитата
Леонид,
procedure THISQLite_DB._work_doClose;
begin
if id <> nil then
begin
sqlite3_close(id);
id := nil;
end;
end;
2) вот так будет работать
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8930
Рейтинг: 823
#10: 2006-09-25 09:02:01 ЛС | профиль | цитата
Tad, и правда!
карма: 19

0
Ответов: 689
Рейтинг: 20
#11: 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] [576], code_313.txt [15.1KB] [534]
    Ответов: 8930
    Рейтинг: 823
    #12: 2006-09-25 18:03:01 ЛС | профиль | цитата
    oldTV, пореже, а то у меня диск кончается
    карма: 19

    0
    Ответов: 3655
    Рейтинг: 69
    #13: 2006-09-25 18:19:24 ЛС | профиль | цитата
    пореже, а то у меня диск кончается
    Да похоже скоро для ХиАсм надо будет отдельный диск покупать .

    oldTV,
    Чисто технически я не могу работать с комнатами с работы
    Ну вот мы думали он на работе работает - а он В Номера, В Номера

    P/S примечание: номер - это комната в гостиннице.
    карма: 0

    0
    Ответов: 689
    Рейтинг: 20
    #14: 2006-09-25 20:37:30 ЛС | профиль | цитата
    давайте чуть концепцию пообсуждаем:
    алгоритм подходит (ну если брать за основу)?


    У меня жена этот форум иногда почитывает , так что про номера осторожнее
    карма: 0

    0
    Администрация
    Ответов: 15295
    Рейтинг: 1519
    #15: 2006-09-25 21:30:26 ЛС | профиль | цитата
    давайте чуть концепцию пообсуждаем

    именно в таком виде и стоит делать. Может быть даже стоит разбить генерацию строки SELECT на шаги(либо вкладки с мгновенным показом результата), поскольку на одной форме все не влезет



    У меня жена этот форум иногда почитывает

    Тоже HiAsm'ом увлекается?
    карма: 27
    0
    Сообщение
    ...
    Прикрепленные файлы
    (файлы не залиты)