Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Посоветуйте выбор свзки компонентов |
Автор: Hexel 26.9.2011, 22:32 |
Добрый день! Посоветуйте пожалуста какой набор компонент взять для решения задачи. Нужно наладить учет ремонта оборудования на 2 уровнях: менеджера (принимает и выдает технику) и мастера (собственно выполняет диагностику и чинит). Процесс происходит в несколько этапов с участием того либо иного работника. Со структурой БД вроде определился, с СУБД тоже (MS SQLExpress). Делфи 2009. Проект в большей степени образовательный, чем прикладной. На текущий момент думаю, удачно будет взять TClientDataSet плюс dbExpress. В чем основной вопрос - я хочу наверное создать компонент типа ListView, котрый берет запрос SQL и отображает его в табличном виде, а названия заголовков берет из специальной таблицы алиасов. Он также должен поддерживать изменение датасета, но при этом изменения записывать видимо с помощью запросов в соотв таблицы БД. Вот тут для меня сложность. Когда-то я пытался редактировать непостредственно датасет с запросом, но ничего не вышло. Если я правильно понял, мне нужен ClientDataset, подключаемый к БД через DatasetProvider. При команде на внесения изменений ClientDataset вызывает встроенный компонент SQLResolver, который выполняет описанную выше процедуру: разбивает изменения, внесенные в запрос на изменения, вносимые в конкретные таблцы (правда не совсем понятно по какому алгоритму). Если так, то можно посмотреть пример такого механизма или его описание? Может есть более технологичный способ решения изменения датасета на основе запроса? Еще раз скажу, что пример больше для набивания руки в делфи 2009, хотя и результат тоже пригодится) |
Автор: Akella 28.9.2011, 12:57 | ||
1. Чем это обоснованно? 2. Почему не ADO (dbGo)? |
Автор: Hexel 28.9.2011, 20:03 |
Akella, спасибо добрый человек) я уже думал не увижу АДО) TClientDataSet мне нравиться тем, что я могу с его помощью сделать редактируемый запрос. раньше у меня такое не получалось с например TADOQuery. то есть, я получаю датасет тем же ADOQuery без кеширования (forward only, как-то так) и заливаю его в ClientDataSet, где преспокойно его редактирую. если я правильно понял, он логирует внесенные изменения, и по команде на обновление эти изменения магическим образом преобразовываются в изменения исходных таблиц БД. вот тут и нужна подсказка, как и чем лучше реализовать такой процесс? |
Автор: Akella 29.9.2011, 14:21 |
Я не понимаю что нужно? Что за форварды, редактируемые запросы..... Что в твоём представлении "редактируемый запрос"? Или ты просто не разбираешь в терминологии? |
Автор: superVad 29.9.2011, 16:42 |
Что бы это могло значить? С помощью ADOQuery ты получаешь набор данных. А датасет это компонент такой (TADODataSet например). Тебе надо с терминологией разобраться - а то я чувствую себя слегка странно когда твой вопрос читаю. |
Автор: Akella 29.9.2011, 16:56 |
датасет = DataSet = НД = Набор Данных запрос <> НД Добавлено через 13 секунд да, давайте тут азы изучать! |
Автор: Frees 29.9.2011, 17:06 |
в ADO TADOQuery - набор данных по нему можно ходить в вперед и назад по записям и вроде редактировать запись, ADO както разбирается какой UPDATE сделать.... Добавлено через 1 минуту и 26 секунд если взять TpFIBQuery например то там можно идти по записям только вперед... |
Автор: Hexel 29.9.2011, 22:30 |
Народ, я прошу прощения за туман) я правда не совсем разбираюсь, но хочу все прояснить, хотя бы для себя. пока что как я понимаю: запрос - текстовое выражение, содержащее описание необходимых данных датасет (набор данных) - таблица, содержащая данные, выбранные на основе запроса. то есть если я буду говорить за датасет как компоненту, я буду писать TDataset или Dataset что в моем понимании кэшируемый датасет - набор данных, загруженный в озу после выполнения запроса. допускает произвольное позиционрование и перемещение назад и вперед некэшируемый - датасет, который не загружается в озу, а используется для однократного перебора записей от первой к последней. произвольное позиционирование и переход назад не допускает. "редактируемый запрос" - датасет, посредством которого можно редактировать данные в БД в виде выборки из нескольких таблиц. насколько я знаю, ADOQuery не допускает Insert, Delete и Edit. а мне нужно чтоб допускал, и в конечном счете внесенные в датасет изменения раскидать по таблицам БД, на основе которых был построен набор данных. ну уже если и тут я все напутал, посоветуйте литературу! =) кстати, а как использовать Update? всегда, когда я вызывал эту процедуру в ADOQuery, она отвечала мне, что недостаточно информации для обновления. |
Автор: Akella 30.9.2011, 09:57 |
ты сам себе противоречишь Добавлено через 27 секунд редактируемый не запрос, а набор данных Добавлено через 1 минуту и 43 секунды Hexel, тебе нужно почитать литературу. На сим считаю вопрос исчерпанным. |