![]() |
|
![]() ![]() ![]() |
|
Hexel |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 30.10.2007 Где: UA Репутация: нет Всего: нет |
Добрый день!
Посоветуйте пожалуста какой набор компонент взять для решения задачи. Нужно наладить учет ремонта оборудования на 2 уровнях: менеджера (принимает и выдает технику) и мастера (собственно выполняет диагностику и чинит). Процесс происходит в несколько этапов с участием того либо иного работника. Со структурой БД вроде определился, с СУБД тоже (MS SQLExpress). Делфи 2009. Проект в большей степени образовательный, чем прикладной. На текущий момент думаю, удачно будет взять TClientDataSet плюс dbExpress. В чем основной вопрос - я хочу наверное создать компонент типа ListView, котрый берет запрос SQL и отображает его в табличном виде, а названия заголовков берет из специальной таблицы алиасов. Он также должен поддерживать изменение датасета, но при этом изменения записывать видимо с помощью запросов в соотв таблицы БД. Вот тут для меня сложность. Когда-то я пытался редактировать непостредственно датасет с запросом, но ничего не вышло. Если я правильно понял, мне нужен ClientDataset, подключаемый к БД через DatasetProvider. При команде на внесения изменений ClientDataset вызывает встроенный компонент SQLResolver, который выполняет описанную выше процедуру: разбивает изменения, внесенные в запрос на изменения, вносимые в конкретные таблцы (правда не совсем понятно по какому алгоритму). Если так, то можно посмотреть пример такого механизма или его описание? Может есть более технологичный способ решения изменения датасета на основе запроса? Еще раз скажу, что пример больше для набивания руки в делфи 2009, хотя и результат тоже пригодится) |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
||||
|
||||
Hexel |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 30.10.2007 Где: UA Репутация: нет Всего: нет |
Akella,
спасибо добрый человек) я уже думал не увижу АДО) TClientDataSet мне нравиться тем, что я могу с его помощью сделать редактируемый запрос. раньше у меня такое не получалось с например TADOQuery. то есть, я получаю датасет тем же ADOQuery без кеширования (forward only, как-то так) и заливаю его в ClientDataSet, где преспокойно его редактирую. если я правильно понял, он логирует внесенные изменения, и по команде на обновление эти изменения магическим образом преобразовываются в изменения исходных таблиц БД. вот тут и нужна подсказка, как и чем лучше реализовать такой процесс? |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Я не понимаю что нужно? Что за форварды, редактируемые запросы.....
Что в твоём представлении "редактируемый запрос"? Или ты просто не разбираешь в терминологии? |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 3 Всего: 15 |
Что бы это могло значить? С помощью ADOQuery ты получаешь набор данных. А датасет это компонент такой (TADODataSet например). Тебе надо с терминологией разобраться - а то я чувствую себя слегка странно когда твой вопрос читаю. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
датасет = DataSet = НД = Набор Данных
запрос <> НД Добавлено через 13 секунд да, давайте тут азы изучать! |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
в ADO TADOQuery - набор данных по нему можно ходить в вперед и назад по записям и вроде редактировать запись, ADO както разбирается какой UPDATE сделать.... Добавлено через 1 минуту и 26 секунд если взять TpFIBQuery например то там можно идти по записям только вперед... -------------------- Кольцов Виктор Владимирович |
|||
|
||||
Hexel |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 30.10.2007 Где: UA Репутация: нет Всего: нет |
Народ, я прошу прощения за туман) я правда не совсем разбираюсь, но хочу все прояснить, хотя бы для себя. пока что как я понимаю:
запрос - текстовое выражение, содержащее описание необходимых данных датасет (набор данных) - таблица, содержащая данные, выбранные на основе запроса. то есть если я буду говорить за датасет как компоненту, я буду писать TDataset или Dataset что в моем понимании кэшируемый датасет - набор данных, загруженный в озу после выполнения запроса. допускает произвольное позиционрование и перемещение назад и вперед некэшируемый - датасет, который не загружается в озу, а используется для однократного перебора записей от первой к последней. произвольное позиционирование и переход назад не допускает. "редактируемый запрос" - датасет, посредством которого можно редактировать данные в БД в виде выборки из нескольких таблиц. насколько я знаю, ADOQuery не допускает Insert, Delete и Edit. а мне нужно чтоб допускал, и в конечном счете внесенные в датасет изменения раскидать по таблицам БД, на основе которых был построен набор данных. ну уже если и тут я все напутал, посоветуйте литературу! =) кстати, а как использовать Update? всегда, когда я вызывал эту процедуру в ADOQuery, она отвечала мне, что недостаточно информации для обновления. |
|||
|
||||
Данкинг |
|
||||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Сначала пробуешь запрос в самой СУБД. Исправляешь ошибки. Потом строку с запросом переносишь в ADOQuery.SQL. Добавлено через 47 секунд
Эко ты загнул. ![]() Добавлено через 1 минуту и 48 секунд Edit к запросам явно не относится, но ADOQuery всё это тем не менее понимает. -------------------- There's nothing left but silent epitaphs. |
||||
|
|||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
ты сам себе противоречишь Добавлено через 27 секунд редактируемый не запрос, а набор данных Добавлено через 1 минуту и 43 секунды Hexel, тебе нужно почитать литературу. На сим считаю вопрос исчерпанным. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |