Как связать статическую форму с таблицей данных |
Здравствуйте, гость ( Вход | Регистрация )
Как связать статическую форму с таблицей данных |
magoldnew |
29.4.2013, 22:00
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 10 Регистрация: 29.4.2013 Пользователь №: 3816 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравия, гуру, прошу сильно не пинать нуба
В QT Assistant есть пример генерации формы с помощью QDataWidgetMapper и привязки к ней таблицы с помощью QSqlRelationalTableModel, там я как бы разобрался и получил желаемое. А вот к статичной форме созданной с помощью QT Designer никак не могу, сразу скажу я не кул программер мои знания в ООП и С++ достаточно поверхностные, но в принципе если бы в доке нашел подходящий пример в коде разобрался бы. 1. Если не трудно пример исходного кода. 2. Подскажите есть литература/дока с примерами исходного кода как в QT в связке с любой СУБД (желательно MYSQL) создать базу с нуля, сойдет даже на инглише (может даже оно и лучше, на русском никак не мог найти как склепать драйвер на инглише сразу же). P.S. у мелкософта в Access все куда проще, денег только просят P.P.S. даже могу наваять в mysql простенькую бд из трех таблиц и несколькими записями и создать под нее форму в QT лишь бы нашелся тот кто бы это все склеил. |
|
|
lanz |
30.4.2013, 8:39
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
1. Все тоже самое, т.е.
Только вместо mySpinBox будет обращение к форме через поле ui. Например this->ui->amountSpinBox. Название (amountSpinBox) задается в дизайнере в свойстве objectName. 2. Используйте QSqlQuery. http://qt-project.org/doc/qt-4.8/qsqlquery.html Там все просто, передаете в него sql и запускаете выполнятся. |
|
|
Гость_Гость_magoldnew_*_* |
2.5.2013, 0:23
Сообщение
#3
|
Гости |
Благодарю, получилось.
Дабы не плодить еще тем задам вопрос здесь: В форме имеется комбобокс в который для выбора пользователю надо показать объединенное поле, т.е. у меня имеется таблица "люди" в ней внутренний ключ, три внешних ключа ссылающихся на таблицы "фамилии", "имена", "отчества", соответственно мне надо чтобы в комбобокс попал человек . Вижу два варианта, но реализовать пока не получилось: 1. Объединить нужные поля в SQL запросе и подставить их в комбобокс. Проблема: как я понял в метод setRelation в качестве первого аргумента я не могу передать SQL запрос, наверно надо создать виртуальную таблицу, в которой сохранится результат запроса и обращаться к ее полям, как это сделать? (Запрос сделал возвращает в СУБД корректный результат состоящий из внутреннего ключа таблицы "люди" и объединенного поля ФИО). 2. Создать именнованный запрос в СУБД (правда я еще не выяснял есть ли в MYSQL такое) и обращаться к полям данного запроса как к существующей таблице, соответственно этот вариант я еще не пробовал да и не хотелось бы в СУБД плодить лишние "сущности", наверняка эту задачу можно решить первым вариантом или похожим. |
|
|
Litkevich Yuriy |
2.5.2013, 1:07
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Дабы не плодить еще тем задам вопрос здесь: плодить темы плохо, если они уже существуют. А также плохо плодить портянки, содержащие разношёрстую тематику.Базовое правило: Одна проблема - одна тема. Если тема уже существует и не даёт решения проблемы - продолжай в ней. |
|
|
magoldnew |
2.5.2013, 6:00
Сообщение
#5
|
Студент Группа: Новичок Сообщений: 10 Регистрация: 29.4.2013 Пользователь №: 3816 Спасибо сказали: 0 раз(а) Репутация: 0 |
Ну тогда удалите последнее сообщение и наш диалог, я создам новую тему.
|
|
|
Majestio |
5.5.2013, 16:06
Сообщение
#6
|
Студент Группа: Участник Сообщений: 67 Регистрация: 13.2.2013 Пользователь №: 3710 Спасибо сказали: 1 раз(а) Репутация: 1 |
|
|
|
magoldnew |
6.5.2013, 18:31
Сообщение
#7
|
Студент Группа: Новичок Сообщений: 10 Регистрация: 29.4.2013 Пользователь №: 3816 Спасибо сказали: 0 раз(а) Репутация: 0 |
Благодарю, получилось. О5 же, ИМХО, "прямое" использование формы, завязанной непосредственно на таблицу - тупиковый путь. Когда встанет вопрос о многопользовательском использовании, блокировках, длинных транзакциях - вернетесь в начало своих "изысканий" т.е. Вы считаете что лучше сразу заморочиться с динамическими формами, может порекомендуете какой-нибудь материал для изучения, желательно на русском? Одна бд у меня однопользовательская, полностью функциональная в msaccess, я ее просто перевожу на другие рельсы и так сказать "учусь стучать в новый бубен", в той которую планирую делать одновременный доступ нескольких пользователей может понадобиться, но до нее еще далеко, я пока с этой довольно простой бд не разобрался. |
|
|
lanz |
7.5.2013, 12:05
Сообщение
#8
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Цитата О5 же, ИМХО, "прямое" использование формы, завязанной непосредственно на таблицу - тупиковый путь. Когда встанет вопрос о многопользовательском использовании, блокировках, длинных транзакциях - вернетесь в начало своих "изысканий" Ну тогда и мое небольшое ИМХО, надеюсь никто не против Все перечисленные вопросы должны решаться на уровне БД. Решать их на уровне приложения - строить свою СУБД. А как раз для своей задачи - соединении с БД, получение данных/редактирование - общение с БД на уровне запросов - как раз хорошо подходят. |
|
|
Текстовая версия | Сейчас: 6.5.2024, 6:24 |