![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
rich |
![]()
Сообщение
#1
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
т.е нужно чтобы изменения внесенные пользователем в ячейках сохранялись в базу.как оптимальней сделать?
Сообщение отредактировал Litkevich Yuriy - 2.2.2009, 13:38
Причина редактирования: уточнил название темы
|
|
|
![]() |
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Вместо QTableWidget использовать QTableView + QSqlTableModel, смотри пример
%QTDIR%\examples\sql\cachedtable для модели выбираешь стратегию
т.е. когда пользователь нажмет кнопку Submit тогда все изменения отправятся в БД Сообщение отредактировал Litkevich Yuriy - 13.3.2008, 22:25 |
|
|
rich |
![]()
Сообщение
#3
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
много ручной работы, да и что ты вцепился в QTableWidget, для твоей задачи удобнее использовать представление, а не просто таблицу
|
|
|
rich |
![]()
Сообщение
#5
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
ясно.переделывать нехотелось
![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Да переделок мимнимум, возьми готовые файлы:
tableeditor.h tableeditor.cpp и используй вместо таблицы, т.е. вместо:
сделаешь так:
Предвари это дело следующими строчками соединения с БД:
где: QODBC - имя драйвера, MyBD - имя БД. |
|
|
rich |
![]()
Сообщение
#7
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
дело ещё в том что у меня таблица оч динамична.кол-во колонок зависит от одной табл БД,строк-от 2хдругих,данные же из другой табл БД..
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
а можешь свой запрос показать, я представить немогу как можно влиять на колонки и строки одновременно
|
|
|
rich |
![]()
Сообщение
#9
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
Одним запросом тоже не знаю как.Попробую на словах.сейчас в дороге.выбираю из бд нужное значение кол-ва и по нужной формуле генерю колонки:setColumnCount(3+2n/*например*/).строчки:замысел из одной таблицы первое наименование,под ним всё что к нему относится из второй,второе значение первой табл.,под ним всё что к нему относится из2.дерево вобщем по двум таблицам.по ходу генерю строчки и втыкаю в них наименования.коряво наверно.надеюсь понятно изложил.код только вечером могу выложить.
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#10
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
что-то странная у тебя структура данных, и показать такую пользователю? а у него голова не отвалится.
и как ты предпологаешь сохранять данные при таком раскладе, целостность связей сохранять? |
|
|
rich |
![]()
Сообщение
#11
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
sql в принципе способен одним запросом деревья поляхать,из одной таблицы точно.из 2х не получалось.
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#12
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
при твоей непонятной структуре не мудрено, вообще я, не спец по БД, очень просто могу извлечь хоть из тыщи, все зависит от того как ты структуру данных спроектировал.
Вот и хотелось понять что там такое у тебя по хорошему из клиента запросы типа SELECT ..... не отправляют, обращаются к хранимой процедуре, а она возвращает нужное, при сложных запросах это вообще единственный путь, т.к. план запроса в БД будет однажды построен и выполнятся будет шустро + сервером БД. Сообщение отредактировал Litkevich Yuriy - 14.3.2008, 7:44 |
|
|
rich |
![]()
Сообщение
#13
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
Какая есть.конечный пользователь подготовлен и эту прогу юзал,но под виндой.как пока не знаю точно.
|
|
|
rich |
![]()
Сообщение
#14
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
rich |
![]()
Сообщение
#15
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
Вот и хотелось понять что там такое у тебя у меня там примерно следующее: день1|день3|день5|день n|множитель|день1'|день3'|день5'|день n'|примечание / /1,3,5...n- задает юзер берётся из БД // день 1'= день 1*множитель +--- родитель //родители одна табл ¦ +--- (2) ребенок //дети другая ¦ +--- (3) ребенок ¦ +--- ребенок ¦ L---ребенок ¦ всего ¦ из всех с зубами //признак зубов для ребенка задает юзер +--- родитель2 //такая структура характерна для ¦ +--- (2) ребенок //всех дет.садов,отличаются они днями ¦ +--- (3) ребенок ¦ +--- ребенок //в табличке ещё все подкрасить надо ¦ L---ребенок ¦ всего ¦ из всех с зубами +--- родитель3 ¦ +--- (2) ребенок ¦ +--- (3) ребенок ¦ +--- ребенок ¦ L--- ребенок ¦ всего ¦ из всех с зубами L--- родитель4 +--- (2) ребенок +--- (3) ребенок +--- ребенок L---ребенок ¦ всего ¦ из всех с зубами ¦ ¦ итого L итого с зубами примерно так. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#16
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
так а примерный вид таблицы которую пользователь смотрит, можешь показать?
просто, я думаю, можно на основе этого сделать свою модель, а к ней прицепить стандартное табличное представление, на первый взгляд много работы, но на самом деле меньше чем кажется --- еще такой вопрос, таблица родители - справочник, а вот с детьми как? это справочники или связующие таблицы, там ограничения наложены в виде внешних ключей? или ты этим в програме занимаешся? Сообщение отредактировал Litkevich Yuriy - 14.3.2008, 23:44 |
|
|
rich |
![]()
Сообщение
#17
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
rich |
![]()
Сообщение
#18
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
Сообщение отредактировал rich - 15.3.2008, 0:39 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#19
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
это и есть та сборная табл,каторую пользователю представить надо ХМ, таблица это таблица, а у тебя дерево, тоды QTreeWidget или QTreeView надо. но чтобы хранить флаги изменений данных внесенных пользователем тебе буфер нужен будет, как не крути получится некая модель данных, которя может называться хоть масивом хоть еще как-то, но смысл ее именно модель, вообщем по капай в этом направлении. |
|
|
rich |
![]()
Сообщение
#20
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
это и есть та сборная табл,каторую пользователю представить надо ХМ, таблица это таблица, а у тебя дерево, тоды QTreeWidget или QTreeView надо. но чтобы хранить флаги изменений данных внесенных пользователем тебе буфер нужен будет, как не крути получится некая модель данных, которя может называться хоть масивом хоть еще как-то, но смысл ее именно модель, вообщем по капай в этом направлении. ok. я в QTableWidget вяжу под родителя детей и т.д. и столбики генерятся.именно таблично надо.в QTree не будет такого эффекта |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 11.7.2025, 6:57 |