|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
||||
|
||||
Цитата:
Цитата:
И вообще, я ведь просил помочь написать класс для работы с данной моделью. Если кто либо решит заняться, мне все равно будет, как автор изменит эту модель, лишь бы не нарушил концепцию и была возможность предусмотреть любые дополнения в функционале. |
#17
|
||||
|
||||
Цитата:
Цитата:
Для полноценной гибкости придется проделать огромную работу, для чего вначале грамотно спроектировать систему. Если нет опыта, -- написать первую версию, выкинуть. Написать вторую версию с учетом ошибок первой. Возможно, что и будет юзабельно для других. Третья версия по-любому будет если не бомбой, то не стыдно показать -- это точно. А простота использования и ориентация на неумение работать с БД -- химера и миф. Простота -- штука вообще субъективная, особенно если ее совместно с гибкостью рассматривать. А неумение программиста работать с базами данных -- недостаток, с которым надо бороться, а не потакать ему. Трактовка баз данных как черного ящика никого еще до добра не доводила. Хочется сделать самопальный ORM? Делайте. А вот преимущества из пальца высасывать не надо. Мы и так понимаем, что это вам просто интересно. Хотя для начала я бы посмотрел тот же SQLite. Его теперь и Opera, и Firefox где-то внутри себя применяют. Не знаю только, для чего. |
#18
|
||||
|
||||
Цитата:
Цитата:
Поэтому в этом Цитата:
Цитата:
А С++? Вы знаете, при каких обстоятельствах появилась идея создания этого языка на основе С? Дело в том, что программеры смогли откомпилировать абсолютно нечитабельную строку, после чего схватились за голову... |
#19
|
||||
|
||||
Цитата:
Цитата:
|
#20
|
||||
|
||||
Цитата:
1. По циклу сформировал сложный запрос, который включал в себя еще 0-999 запросов (по циклу и условию), добившись того, что работать можно было через датасурс с ДБкомпонентами. 2. Написал очень, на мой взгляд, удобную функцию, которая по передаваемым данным возвращала двумерный массив со значениями. Для работы с ДБкомпонентами это, конечно, не подходило, но в некоторых случаях мне так было даже удобнее. Цитата:
Но ведь идея была хороша! Жаль за реализацию ее взялись, не продумав все как следует! |
#21
|
||||
|
||||
В оракле все это через системные вьюхи достается, имена таблиц, синонимы, констрейнты.
Все равно мне не понятно, на какой надо делать такую модель? Если сложности с написанием запросов, так пользуйся вьюхами (пакетами/процедурами и т.д.). Не, ну можно конечно изобразить такое, но если ты сам схему базы рисуешь, сам же должен разобраться, да и другие по схеме должны разобраться. Объясните кратко и доступно какие преимущества даст ваш подход. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 17.10.2012 в 10:20. |
#22
|
||||
|
||||
Цитата:
Что для тебя было бы удобнее, например, при построении дерева категорий из базы? 1. Следующий код Код:
procedure TForm1.GetNodeFromDB(Parent: TTreeNode; ID: Integer); var RS:_Recordset; SQLStr:string; TmpTN:TTreeNode; TmpStr:string; TmpInt:integer; begin SQLStr:='SELECT ' + CatSystem.CatName + ' FROM ' + CatSystem.Name + ' WHERE ' + CatSystem.ID + '=' + IntToStr(ID); rs:=ADOCon.Execute(SQLStr); if RS.RecordCount=1 then begin SetLength(CatIDs,Length(CatIDs)+1); CatIDs[High(catids)]:=ID; TmpStr:=VarToStr(RS.Fields.Item[CatSystem.CatName].Value) + ' (' + IntToStr(ID) + ')'; tmptn:=tv1.Items.AddChildObject(Parent,TmpStr,Pointer(CatIDs[High(catids)])); TmpTN.SelectedIndex:=1; SQLStr:='SELECT ' + CatSystem.ID + ' FROM ' + CatSystem.Name + ' WHERE ' + CatSystem.CatParent + '=' + IntToStr(ID); rs:=ADOCon.Execute(SQLStr); if RS.RecordCount>0 then begin rs.MoveFirst; while not RS.EOF do begin tmpint:=Integer(RS.Fields.Item[CatSystem.ID].Value); GetNodeFromDB(TmpTN,TmpInt); RS.MoveNext; end; end; //tmptn:=TTreeNode.Create(); end; end; 2. Вызов такого метода, функции и процедуры для которого уже написаны? Код:
ObjectSystem.FeelingTree(tv:ttreeview;RootCat:integer); Это пример необходимости создания класса для управления системой. Теперь приведу пример, для чего вообще нужна эта система. Какой базой проще рулить, в которой у тебя 5-100 небольших таблиц (и их количество может меняться в зависимости от потребностей, а права на создание есть не у всех пользователей, придется разруливать назначением прав и тд) или базой где всего 4-5 таблиц на все случаи жизни и создавать/удалять ничего не требуется, только создавать удалять записи в уже созданных таблицах? Думаю, ответ очевиден. |
#23
|
||||
|
||||
Цитата:
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#24
|
||||
|
||||
Я бы все на SQL запрос возложил (тем более, что нормальная база может нативно с древовидной структурой работать, да и не только, может еще группировки хитрожопые делать и т.п.).
Писать такое, что в первом примере - это вообще какой-то идиотизм. У меня запрос просто препроцессором обрабатывается (ну там например имя таблички подставить), передается в АДО, туда же параметры передаются, запрос выполнился, вернул датасет, делай с ним что хочешь (можно в коллекцию его передать, дерево наполнять не обязательно по всей иерархии, достаточно лишь первые уровни заполнить, остальное подтягивать из коллекции при раскрытии узла). Всего 3 строчки кода, две из них для транзакций. Если речь конечно идет не о стремных базах (ну там MS Access, dbfки и прочее). — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 17.10.2012 в 11:11. |
#25
|
||||
|
||||
Цитата:
Борланд сделали множество встроенных функций и процедур для упрощения жизни программисту. Создали ДБкомпоненты для удобства работы с БД. Вот только не сделали DBTreeView и другие... Приходится заполнять их вручную. Предложенная мною система будет в том числе и этим заниматься. Последний раз редактировалось morebeauty, 17.10.2012 в 11:31. |
#26
|
||||
|
||||
А чего нет то?
По поводу твоей системы, в качестве полезного опыта она подойдет очень хорошо (если сам будешь писать), много чего выучишь и поймешь (начинающим тоже хорошо подойдет). — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 17.10.2012 в 11:34. |
#27
|
||||
|
||||
Цитата:
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#28
|
||||
|
||||
Цитата:
Привезли в военную часть экскаватор. Командир части построил солдат и говорит: - Радуйтесь! Теперь копать будете не лопатами а экскаватором! Солдаты в недоумении. - Да как же так??? Мы его даже поднять не сможем! |
#29
|
||||
|
||||
Смищьно, ага.
Ну а для каких целей по твоему база? Чтобы в гриды всякие текстики выводить? У ней же дофига назначений и не обязательно её с визуальными компонентами пользовать. Т.е. например, чтобы мне прочитать из базы значение, выполнить над ним действие и снова записать, мне надо вычитать это в грид (ну или ченибудь другое), выполнить действия, заставить грид зааппендить или проапдейтить запись, да? Все делается параметризованными запросами. Ну ежели тебе хочется экскаватор поднимать, пожалуйста, пиши. Применение не более чем в прикладняцких целях, общего универсализма нет. Короче все, в эту тему больше не захожу, не интересно. Можешь дальше обсмеивать онекдотами. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 17.10.2012 в 12:59. |
#30
|
||||
|
||||
Вообще то визуальная часть класса - самое последнее, чему нужно его научить. Основная задача - именно разносторонняя обработка данных.
Вроде нормально все объяснил. Если не понял, зачем чушь то писать? |