Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#16: 2006-09-25 21:38:18 ЛС | профиль | цитата
oldTV, пронумеровал бы шаги алгоритма - легче обсуждать. Номер такой-то сделать так-то.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 689
Рейтинг: 20
#17: 2006-09-26 09:00:26 ЛС | профиль | цитата
== Уточненный алгоритм ==
№ п.п ====== Действие ====== Степерь реализации в текущем коде ====== Желающие заниматься
-1Обсуждение задачи, список участников, разбор направленийРеализовано частично
0Концепция и интерфейсное решениеНе обсуждено и не реализовано
1Открыть базу данных (Часть кода написана уже Леонидом)Реализовано частичноЛеонид , oldTV
2Получить список таблиц и их параметры (какие - надо уточнятьРеализовано частичноoldTV
3Определить тип запроса к базе - (SELECT, INSERT, UPDATE, DELETE и их расписать их возможные модификации)Не реализовано
4При выборе таблицы (ц) - определять поля таблицы и их параметры (типы, длину и пр.)Не реализовано
5Выбор и перенос необходимых таблиц базы в окно работы с нимиНе реализованоoldTV
6Автоматическое или ручное определение Alias'овНе реализовано
7Определение связей (для меня самое сложное)Не реализовано
8Выбор полей для отображения (аналог SELECT * или SELECT Field1, Field2 или SELECT d.Field1, c.*);Реализовано частично, oldTV
9выбор полей для определения условий и менеджер условий (типа WHERE d.Field1>0 или WHERE Field1>0 and Field3='root')Реализовано частично, oldTV
10определение порядка вывода результата (order by)Почти реализованоoldTV
11Работы с группировкой (тут такие сложности начнуться, что аж ноги сводит, если не сказать грубее )Не реализовано
12Работы с JOIN (я просто молчу уже )Не реализовано
13Исключение возможных баговНе реализовано

специал фор ю, Tad

Dilma писал(а):
Тоже HiAsm'ом увлекается?

Да нет, смотрит чем это так муж увлеченно занят
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#18: 2006-09-26 12:38:56 ЛС | профиль | цитата
Проверка синтаксиса

Синтаксиса чего Если строка будет полностью генерироваться, что же тут проверять...
карма: 27
0
Ответов: 2125
Рейтинг: 159
#19: 2006-09-26 12:48:44 ЛС | профиль | цитата
Видимо, генерировать можно и неправильные строки
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#20: 2006-09-26 13:18:56 ЛС | профиль | цитата
oldTV, давайте определимся точно о чем разговор - SQL Query Builder или SQLite Query Builder

[size=-2]------ Добавлено в 13:18
У Леонида, насколько мне известно, "реализовано частично" для SQLite
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 689
Рейтинг: 20
#21: 2006-09-26 14:39:47 ЛС | профиль | цитата
я так думаю что для начала надо говорить о SQLite Query Builder'e, т.е. о той базе, на основе которой сделан Elements.db в HiAsm. Потом, если проект будет развиваться можно будет говорить и поддержке других баз (речь о локальных базах).

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

Например, в моем же коде нет проверки синтаксиса: и запрос может быть сгенерирован вот такой:
* from elements where id=5, т.е. собственно SELECT отсутствует.

И потом, SQLite например, насколько я прочел в документации, like например не поддерживает. Игры на моем билдере со знаками > или < для текстовых тоже привели к необычному результату, так мне кажется не должно быть... но это потом.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#22: 2006-09-26 16:26:22 ЛС | профиль | цитата
oldTV, если билдер генерит неправильную строку запроса - это баг.
карма: 27
0
Ответов: 689
Рейтинг: 20
#23: 2006-09-26 17:08:08 ЛС | профиль | цитата
Dilma, ну хорошо, пусть будет не проверка синтаксиса, а исключение возможных багов
карма: 0

0
Ответов: 8926
Рейтинг: 823
#24: 2006-09-26 23:32:26 ЛС | профиль | цитата
oldTV, вот заготовка, пусть и у Вас диск заканчивается
code_322
карма: 19

0
файлы: 1code_322.txt [10.9KB] [705]
Ответов: 262
Рейтинг: 6
#25: 2006-09-27 06:54:44 ЛС | профиль | цитата
oldTV, Like прекрасно работает. Вот справка: http://www.sqlite.org/lang_select.html

    SELECT [ALL | DISTINCT] result [FROM table-list]
    [WHERE expr]
    expr ::= expr binary-op expr
    expr [NOT] like-op
И вот этот запрос исполняется без проблем
select * from elements where id like '%str%' order by id
карма: 0

0
Ответов: 689
Рейтинг: 20
#26: 2006-09-27 08:53:09 ЛС | профиль | цитата
Леонид, не совсем мне нравится такое интерфейсное решение. Что мне нравится/не нравится и что я хотел бы обсудить:
  • меню оставить конечно же, без него не пойдет. но, открыв например базу, вываливать все таблицы с результатами - неправильно. А если у меня 12000 строк и 600 полей? зачем? Я настойчиво призываю обсудить сначала все, а потом ваять. А то каждый вроде бы двигается, а в том ли направлении пока не ясно.
  • мне очень не нравится идея с Tab'ами. Ну очень. Почему то коробит от того, что если таких таблиц в базе будет 75, то навигировать по табам будет очень неудобно. + поиск. если таблицы вываливать в список, или хотя бы в StrTable - там хотя бы поиск можно организовать. по табам мне кажется не удобным.
  • я написал вверху алгоритм, все вроде бы не против такого. Но реализация началась с интерфейса. А может быть так пойдет: есть меню, пользователь выбрал направление (твой раздел меню Файл - выбрал пользователь "Создать" - попал в закладку работы с новой базой, выбрал "Открыть" - попал в закладку работы с открытой базой, т.е. для начала получил список имеющихся в базе таблиц.

    т.е. я хотел бы сначала пообсуждать все, взять направления работы и работать в этом направлении. Я поэтому и дальше ничего не выкладываю.

    Алгоритм поправил
  • карма: 0

    0
    Гость
    Ответов: 17029
    Рейтинг: 0
    #27: 2006-09-27 10:05:22 правка | ЛС | профиль | цитата


    Редактировалось 4 раз(а), последний 2021-05-21 07:53:52
    карма: 0

    0
    Ответов: 689
    Рейтинг: 20
    #28: 2006-09-28 16:25:15 ЛС | профиль | цитата
    Леонид, давай поиграем в мою сторону развития интерфейса?

    Грубо говоря для того, что-бы все вышло как надо, как я задумал, нужно динамически в определенное место формы добавить ListBox. Вот это было бы классно. Дальше связи показать через
    Add(Img_Line,374166,245,336)
    {
    }

    Под словом динамически понимается: на форме я не помещаю этого элемента при конструировании, он выводится по клику на листбоксе со списком таблиц. Можно ТАКОЕ сделать?

    Пока у меня вот это получилось (нажмите меню, Таблица-Добавить:
    Add(MainForm,15114789,245,21)
    {
    Left=20
    Top=105
    Width=750
    Height=465
    }
    Add(IndexToChanel,14689582,133,112)
    {
    Count=30
    link(onEvent7,9471186:doDraw,[(226,160)(226,272)])
    }
    Add(Menu,5694909,84,105)
    {
    Menu=#4:Файл|1:(|7:Создать|7:Открыть|7:Закрыть|5:Выход|1:)|7:Таблица|1:(|8:Добавить|7:Удалить|6:Строки|1:(|8:Добавить|7:Удалить|13:Редактировать|1:)|7:Колонки|1:(|8:Добавить|7:Удалить|5:Связи|1:(|8:Добавить|7:Удалить|1:)|1:)|1:)|7:Запросы|1:(|7:Выбрать|1:(|7:Запрос1|7:Запрос2|1:)|9:Составить|1:)|6:Помощь|1:(|7:Таблицы|7:Колонки|6:Строки|5:Связи|10:Об авторах|1:(|6:Леонид|1:)|1:)|
    Point(onSelectNum)
    link(onSelectNum,14689582:doEvent,[])
    }
    Add(Memory,8133708,420,28)
    {
    Default=Integer(250)
    }
    Add(Img_Rectangle,9471186,287,266)
    {
    BgColor=32768
    Style=1
    Point2AsOffset=0
    DrawSource=1
    link(onDraw,12024776:doDraw,[])
    link(Bitmap,10645217:Var3,[(293,163)])
    link(Point1,11729885:Point,[])
    link(Point2,12144205:Point,[(307,163)(335,163)])
    }
    Add(Img_Text,12024776,343,266)
    {
    Font=[MS Sans Serif,8,0,15793151,1]
    Text="Таблица"
    DrawSource=1
    link(Bitmap,10645217:Var2,[(349,217)(251,217)])
    link(X,1173430:Value,[(363,163)(384,163)])
    link(Y,8133708:Value,[(370,163)(426,163)])
    }
    Add(PointXY,11729885,294,28)
    {
    X=100
    Y=250
    }
    Add(PointXY,12144205,329,28)
    {
    X=100
    Y=100
    }
    Add(GetDataEx,10645217,238,154)
    {
    link(Data,15114789:Handle,[])
    }
    Add(Memory,1173430,378,28)
    {
    Default=Integer(100)
    }
    карма: 0

    0
    Ответов: 16884
    Рейтинг: 1239
    #29: 2006-09-28 17:06:58 ЛС | профиль | цитата
    Подскажите, как считать названия полей из созданой (пустой) таблицы БД.
    карма: 25
    Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
    0
    Ответов: 2125
    Рейтинг: 159
    #30: 2006-09-28 18:44:54 ЛС | профиль | цитата
    Tad, Если записей нет, то callback не вызовется. Надо чтобы были Можно, например, воспользоваться возможностями LEFT OUTER JOIN (допустим нужны поля таблицы "test" )

    select t.* from (select 1 as xx) x left outer join test t on x.xx=1 limit 1[/code]
    О как. У меня работает :)
    карма: 1

    0
    Сообщение
    ...
    Прикрепленные файлы
    (файлы не залиты)