Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  08:08[Войти] | [Зарегистрироваться]
Обсуждение темы:
Можно, но не нужно.


Последнее время я не программирую, а рaзгpебаю зaвалы которые оставили до меня покoления программистов. Чтобы внести минимальное декоративное изменение требуется исправить несколько модулей и потратить несопоставимую по сложности работу по выискиванию всех мест, в которые надо внести изменения.
Дело в том, что тем методы, которые допустимы в примерах, олимпиадах и лабах по программированию, совершенно неприемлемы при создании крупных и долгоживущих прикладных программ.
Предлагаю в этой теме публиковать примеры, как не надо программировать на Delphi, что бы потом не было мучительно больно от встречи с теми, кто исправлял твой код.

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 421 сообщение

Добавить свое сообщение

Отслеживать это обсуждение
<<<... | 361—352 | 351—342 | 341—332 | ...>>>
Всего сообщений в теме: 421; страниц: 43; текущая страница: 8


№ 351   15-04-2009 05:35 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 349« (Сергей Перовский)
___________________________

А оно надо? Очень надо? Тогда расскажите, зачем.
Не понял. Вы же сами говорили, что проектировать надо на ООП, а не в реляционной БД. ORM и дает эту возможность.

Мне никак не удается понять. Все примеры, которые приводят сторонники ORM мне кажутся надумаными - в них объектная и реляционнная модель спроектированы по разным принципам и возникает искусственная задача описания соответствия.
Сергей, когда я использую ORM я НЕ проектирую реляционную модель. Это не моя проблема. Мне достаточно описать задачу в терминах ООП.
Можно ли все делать без ORM? Безусловно. Но приходится руками писать кучу кода, который по идее уже написан разработчиками ORM.


№ 350   15-04-2009 05:30 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 345« (Geo)
___________________________

Почему я должен для этого создавать ClientDataSet, выгружая в него данные из таблицы?
Потому что.
Недавно в одной книге я прочитал фразу: "Прежде чем нарушать правило, необходимо его как следует выучить".
Вы, Юрий, выучили правила работы с БД в Delphi, поэтому Вам можно нарушать. Но того, кто не выучил, лучше бить по рукам. По крайней мере, это намного проще, чем долго и вдумчиво учить его делать хорошие решения без db-aware.


№ 349   15-04-2009 05:25 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 343« (panda)
___________________________
Но что делать, если CodeGear не предоставляет механизма ORM/OP?
А оно надо? Очень надо? Тогда расскажите, зачем.
Мне никак не удается понять. Все примеры, которые приводят сторонники ORM мне кажутся надумаными - в них объектная и реляционнная модель спроектированы по разным принципам и возникает искусственная задача описания соответствия.


№ 348   15-04-2009 03:08 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 347« (Geo)
___________________________
Но случаи бывают разные. Бывают несчастные случаи :o) но к счастью сравнительно редко.
 Cep


№ 347   15-04-2009 02:53 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 346« (Cepгей Poщин)
___________________________
>>> Наверняка есть таблица с именами кого-нибудь, эту таблицу надо както отображать для выбора строки, для этого используется некоторый набор данных
Типовая ситуация -- это отображение в гриде данных из ReadOnly запроса. Наверное, в этом случае удобнее будет пользоваться механизмами, типа UpdateSQL, встроенными в компонент Query. Но случаи бывают разные.
 Geo


№ 346   15-04-2009 01:50 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 345« (Geo)
___________________________
Вот это вот ID=12 откуда взялось? Это что какаято глобальная настройка, которая всего одна?
Наверняка есть таблица с именами кого-нибудь, эту таблицу надо както отображать для выбора строки, для этого используется некоторый набор данных, потомок TDataSet (не обязательно TClientDataSet, это вопрос личных предпочтений). Так вот мой опус призывает к тому, что надо нормально его настроить и сделать редактируемым и привесить db-подобные компоненты, а не пытаться создать им самопальную замену. На создание полноценного аналога уйдёт слишком много времени, кроме того это будет источником ошибок как сейчас, так и в будущем.
 Cep


№ 345   15-04-2009 01:09 Ответить на это сообщение Ответить на это сообщение с цитированием
Я вчера писал сообщение уже на бегу и, видимо, оно получилось не совсем удачным. Поясняю мысль...

Пусть я хочу послать серверу запрос

UPDATE MyTable SET Name='Вася' WHERE ID=12

Почему я должен для этого создавать ClientDataSet, выгружая в него данные из таблицы? Для того, чтобы DBAware-компоненты работали?!

Вариант номер два. Я хочу выгрузить на клиента определенный набор данных, произвести кое-какую обработку и внести изменения. Работать нужно одновременно со всеми записями, так что массив предпочтительнее. Все равно создавать ClientDataSet и скакать по записям?

В общем, ClieentDataSet дает то же самое преимущество, что и работа непосредственно с таблицами, но лишен недостатков этой работы. Однако, не надо забывать, что работа с базами данных может заключаться не только в заполнении большого количества полей таблиц значениями, введенными в TEdit.
 Geo


№ 344   14-04-2009 13:34 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 341« (Geo)
___________________________
Если мне нужно работать с одной единственной записью и разнести поля этой записи по форме, то этого нет. Одна — частный случай 10, не вижу проблем. А если Вас попросят добавить к редактору одной строки в виде формы еще и редактор того же, но в виде таблицы, ну привык пользователь к Excel. То, что на первый взгляд кажется долго создавать DataSet, поля и т.п., так потребуется для своих редакторов фильтровать буквы, контролировать максимальную длину поля, да мало ли что и если ни чего не забыть, то времени потребуется еще больше.

В общем я не утверждаю, что сделать лучше чем есть невозможно, но сколько не приходилось править программ (включая и свои) за 10 лет, ни где не встречал такого.
 Cep


№ 343   14-04-2009 12:30 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 341« (Geo)
___________________________

Авторы Delphi не сделали механизма, который бы позволял по введенным в Edit'ы значениям формировать и отправлять на сервер запрос UPDATE. Вернее, сделали, но только один единственный -- грид. Если мне нужно работать с одной единственной записью и разнести поля этой записи по форме, то этого нет.
А вот с этого места, пожалуйста, поподробнее. С каких это пор логика работы разных db-aware контролов с DataSource стала отличаться? Вот только что посмотрел - TDBLookupComboBox работает ничуть не хуже, чем TDBGrid.

Вообще говоря, соглашусь с тем, что традиционный db-aware из Delphi 1 в современных условиях уже не является самым лучшим подходам. Но что делать, если CodeGear не предоставляет механизма ORM/OP? Искать сторонний? Ну... да, есть такие, только до нормальных аналогов из других платформ (таких как Hibernate или Spring) они, мягко говоря, не доросли. Разрабатывать свой - можно конечно. Но тогда встанет вопрос, а зачем делать что-то еще? Проще заняться исключительно бизнесом по разработке нормального ORM для Delphi.


№ 342   14-04-2009 12:09 Ответить на это сообщение Ответить на это сообщение с цитированием


<<<... | 361—352 | 351—342 | 341—332 | ...>>>
Всего сообщений в теме: 421; страниц: 43; текущая страница: 8


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования