Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 18:26   #11
MarazmDed
Пользователь
 
Регистрация: 19.12.2012
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
как и раньше - указать источник данных и выбрать соотв. поля
Но для этого нужно прокликать датасет и прописать там эти поля. А для лукапов нужно сделать на несколько кликов больше.

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
лукапы в гриде в крупных проэктах? --- ггг ... юзай хранимые процедуры на стороне сервера
под лукапом я понимаю контрол, при редактировании в гриде, который представляет собой выпалашку. При чем тут хранимки?

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
интересно, а как ты сейчас решаешь эту проблемму?
Никак. Я свято верю, что DBGrid + DatsSet умеют работать с порциями данных. Ошибаюсь?

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
зы. Аватар, +1
Т.е. Delphi предназначен исключительно для лабораторных работ и курсачей, а не для реальной работы?
зы: 1000000 взят с потолка, конечно же. Но большие таблицы бывают. Бывают даже таблицы, где больше ляма записей.
MarazmDed вне форума Ответить с цитированием
Старый 19.12.2012, 19:15   #12
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Цитата:
Но для этого нужно прокликать датасет и прописать там эти поля. А для лукапов нужно сделать на несколько кликов больше.
читай п.2
Цитата:
под лукапом я понимаю контрол, при редактировании в гриде, который представляет собой выпалашку.
редактировать данные в гриде - не есть хорошим тоном
Цитата:
Я свято верю, что DBGrid + DatsSet умеют работать с порциями данных. Ошибаюсь?
очень сильно ошибаешься
Цитата:
Но большие таблицы бывают. Бывают даже таблицы, где больше ляма записей.
http://programmersforum.ru/showthread.php?t=209246
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 19.12.2012, 20:22   #13
MarazmDed
Пользователь
 
Регистрация: 19.12.2012
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
редактировать данные в гриде - не есть хорошим тоном
Ну опять же от ситуации зависит. Если в таблице предполагается 0-20 записей и есть 1-5 полей, то на фига для редактирования городить отдельную форму? Например, в той же 1с есть справочники, которые редактируются из формы, а есть - которые из списка.

Все же вопрос в следующем (пример):
1. Имеем таблицу Customer:
Name, Gender, INN, DocType.
Gender - пол, выпадашка, ссылается на другую таблицу
DocType - тип документа (паспорт, права и т.д.).
2. Имеем 10 форм, в которых используется Customer. По логике форм, курсоры в каждой из них независимы.
Как такое создать?
1. Кладем на форму датасет. Дабл клик по нему. Добавили все поля из бд. Видим, что поля Gender и DocType добавились как Integer, а надо как String.
2. Добавляем два лукап поля lkpGender и lkpDocType, корректно настраиваем связи
3. Прописываем все свойства у полей (русские названия столбцов).
Повторяем пп.1-3 ДЛЯ ВСЕХ 10 ФОРМ!
Такой подход к разработке приложений БД я считаю мега уродским. Т.е. визуальное проектирование только усложняет жизнь. Можно ли в Delphi стандартными или нестандартными средствами сделать ОПИСАНИЕ таблицы? Ну т.е. я однократно создаю датасет, все в нем настраиваю (1-3) и говорю - это не таблица, это - шаблон. Далее, когда мне понадобится 10 раз поюзать эту табличку я создам 10 датасетов на основании данного шаблона, исключив тем самым пп.1-3.
Очевидно, что так сделать можно. Под каждую табличку создаем отдельный DataModule, на который кладем DataSet, и в котором все однократно создаем. Убираем датамодуль из auto-create forms и когда надо - создаем свои экземпляры датамодуля. Недостаток в том, что всю схему БД утомительно описывать. Одно дело, я протыкал бы в рамках одного датамодуля все датасеты, другое дело, в каждом датамодуле ручками создавать экземпляры зависимых датамодулей и т.д. Получается адЪ.

Помнится в Delphi 6 появилась такая загогулина, как диаграммы. Там можно было настраивать связи между компонентами. Имхо, именно эта штука и была создана для облегчения визуального создания крупных приложений. Вопрос такой: есть что-то подобное в Delphi XE2 и выше? Либо вопрос другой: как избавиться от вышеописанного ада?


Цитата:
Сообщение от Yurk@ Посмотреть сообщение
очень сильно ошибаешься
http://programmersforum.ru/showthread.php?t=209246
Но ты вроде бы даже ссылку дал на статью, которая как раз говорит об обратном. В датасетах есть свойство FetchSize - разве это не оно?
MarazmDed вне форума Ответить с цитированием
Старый 19.12.2012, 21:22   #14
MarazmDed
Пользователь
 
Регистрация: 19.12.2012
Сообщений: 29
По умолчанию

Я не одинок в своих проблемах http://pyatochkin.blogspot.ru/2010/1...c-pattern.html
MarazmDed вне форума Ответить с цитированием
Старый 19.12.2012, 21:40   #15
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
И в учебниках все получается очень красиво: положили пару компонент на форму, в датасете создали поля, настроили описания и т.д. Положили на форму навигатор, вуаля! Но почему-то нет учебников, по проектированию крупных приложений (и даже средних, трудоемкость, которых вылезает за пару таблиц).
Положить пару компонент на форму и т.д. по тексту != создать БД. Расписывать на миллион страниц создание объемной БД - бессмысленно по двум причинам: 1) принципы создания реляционных БД не зависят от объема этих самых баз; 2) чем проще пример - тем проще в нем разобраться (читай - научиться).
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 20.12.2012, 05:53   #16
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Цитата:
а) в стринггриде много чего нет (сортировка по разным столбцам - уже творчество),
А чего order by в запросах уже запрещено использовать?
Цитата:
б) что делать, если в таблице, скажем, 1000000 записей?
Больше 6 записей у меня пользователю не покажет... оснавная таблица у меня прирастает в 1 000 000 записей в месяц. (ибо зачем ему там ковыряться)

Цитата:
в) Программирование интерфейса становится мучительным
с чего хоть? 1 stringgrid универсально выводит любую информацию из любых запросов вообще без компонентов dataset

Цитата:
2) Для чего же в Delphi вообще сделали визуальные компоненты для БД, если их невозможно применять на практике?
Да можно... но делать миллиард кликов меня обламывает

Цитата:
3) В датасете не получится ничего не настраивать - как DBGrid узнает, какие есть поля в таблице?
А заранее перед нажатием клавиши вы в запросе не перечисляете поля которые нужно вывести..или тупо если таблица 100 на 100 всё выводите? включая не нужные пользователю технические поля.

Цитата:
4) Как при таком подходе реализовать работу с лукапами?
Всегда юзал отдельные формы для заполнения справочников, прямой доступ к базе давать это от Лукавого
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 20.12.2012, 07:13   #17
superedward
Форумчанин
 
Аватар для superedward
 
Регистрация: 27.11.2012
Сообщений: 190
По умолчанию

Цитата:
Сообщение от MarazmDed Посмотреть сообщение
Простой пример. Есть некая таблица, допустим "физ. лица", в которой есть лукапы на другие таблицы. Из разных форм мы ссылаемся на эту таблицу. Например, "сотрудники", "покупатели". Беда в том, что каждый раз, когда нам нужен НОВЫЙ датасет (со своим, независимым курсором), нужно будет заново описывать все поля/лукапы и т.д., что утомляет. Очень бы хотелось иметь некий инструмент, который бы позволял рисовать схему БД, и прямо в этой схеме задавать все параметры (лукапы, названия колонок и т.д.), а при выкладывании датасета на форму, чтобы все свойства заполнялись по этой схеме. Такой подход был бы продуктивным.

Поделитесь советами, кто как проектирует приложения, посложнее студенческих курсовых?
Тоже в свое время задавался подобной проблемой. Вопрос, вообще говоря, гораздо шире, чем простое автоматическое связывание таблиц с лукапами. Ведь для каждой таблицы нужно определить: изменение данных, сортировку, группировку, итоги, печать...
Я остановился на варианте, когда база данных самодостаточна, т.е. содержит всю информацию, как с ней работать. Поэтому не нужно переписывать программную оболочку для каждой новой БД.
Кроме того, программная часть тоже самодостаточна, т.е. позволяет создавать новые базы данных без дополнительных приложений.
Но, как вы понимаете, у всякой универсальности две стороны... И тут важно правильно расставить концепции, что вы хотите получить в итоге.

Цитата:
Сообщение от BARNEY Посмотреть сообщение
последнее время вообще stringgrid'om пользуюсь...
То, что DBGrid морально устарел и никого не устраивает, факт, думаю, общеизвестный. Его можно использовать только студентам в курсовых.
А как это выглядит визуально StringGrid в качестве отображения данных? Интересует, реализованы сортировка, группировка, итоги?

Цитата:
Сообщение от Аватар Посмотреть сообщение
Выбросить такую программу, желательно еще до того как начать ее делать
Аватар, в принципе, прав. Зачем пользователю миллион записей, если он их даже за целый рабочий день не сможет просмотреть? Важно не количество, а качество отображения данных: сортировка, группировка, итоги.
superedward вне форума Ответить с цитированием
Старый 20.12.2012, 09:03   #18
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Снимок.JPG

Ну примерно так выглядит... всё что вы писали.делается на стороне сервере..клиенту лишь посылается результат... который уже на форме и отображается
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 20.12.2012, 10:41   #19
superedward
Форумчанин
 
Аватар для superedward
 
Регистрация: 27.11.2012
Сообщений: 190
По умолчанию

Цитата:
Сообщение от BARNEY Посмотреть сообщение
Ну примерно так выглядит... всё что вы писали.делается на стороне сервере..клиенту лишь посылается результат... который уже на форме и отображается
Спасибо, очень наглядно.
А реализованы ли отметки сортировки (1), группировка данных (2) и какие-нибудь итоги (3) ?

Без имени.jpg
superedward вне форума Ответить с цитированием
Старый 20.12.2012, 12:04   #20
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

ну я таким извращение не занимался.... выводить пользователю кучу чего с чем ему ещё и ковыряться каждый раз надо... не проще спросить у него чего ему надобно...
сортировка делается по запросу (клику на заголовок, выбор в каком нибудь комбо боксе и т.д. )
Такую группировку как у вас я бы сделал слева от grida (не важно какого). пример аутглюк мелкомягких.
итоги в label в низу.

не знаю... может вы ещё не сталкивались с такими проектами..когда у вас куча клиентов по все области размазано... база одна, но конект происходит по всяким модемам, сотовым сетям и т.д. где процент потери пакетов 60-70%. Очень хочется увидеть как вы пользователю пол базы в интерфейс пихаете...
По этому голый sql на стороне сервера + передача готовых данных пользователю.
А как вы их там сгруппируете и размажете красиво на форме дело вкуса. Но заходя
в программу пользователь точно знает что ему надо сделать..и меня лично всегда напрягает делать кучу манипуляций чтобы сделать конкретное действие.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проектирование БД Morgusha SQL, базы данных 1 03.06.2012 10:22
Проектирование БД. lovetolaugh БД в Delphi 3 15.06.2011 22:08
проектирование бд NieL Помощь студентам 1 28.04.2011 18:04