crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как связать статическую форму с таблицей данных
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. Все тоже самое, т.е.
 QDataWidgetMapper *mapper = new QDataWidgetMapper;
mapper->setModel(model);
mapper->addMapping(mySpinBox, 0);
mapper->addMapping(myLineEdit, 1);
mapper->addMapping(myCountryChooser, 2);
mapper->toFirst();

Только вместо 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, 2:23) *
Дабы не плодить еще тем задам вопрос здесь:
плодить темы плохо, если они уже существуют. А также плохо плодить портянки, содержащие разношёрстую тематику.

Базовое правило: Одна проблема - одна тема.
Если тема уже существует и не даёт решения проблемы - продолжай в ней.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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_* @ 2.5.2013, 0:23) *
Благодарю, получилось.


О5 же, ИМХО, "прямое" использование формы, завязанной непосредственно на таблицу - тупиковый путь. Когда встанет вопрос о многопользовательском использовании, блокировках, длинных транзакциях - вернетесь в начало своих "изысканий" :rolleyes:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
magoldnew
  опции профиля:
сообщение 6.5.2013, 18:31
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 29.4.2013
Пользователь №: 3816

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Majestio @ 5.5.2013, 17:06) *
Цитата(Гость_magoldnew_* @ 2.5.2013, 0:23) *
Благодарю, получилось.


О5 же, ИМХО, "прямое" использование формы, завязанной непосредственно на таблицу - тупиковый путь. Когда встанет вопрос о многопользовательском использовании, блокировках, длинных транзакциях - вернетесь в начало своих "изысканий" :rolleyes:


т.е. Вы считаете что лучше сразу заморочиться с динамическими формами, может порекомендуете какой-нибудь материал для изучения, желательно на русском? Одна бд у меня однопользовательская, полностью функциональная в msaccess, я ее просто перевожу на другие рельсы и так сказать "учусь стучать в новый бубен", в той которую планирую делать одновременный доступ нескольких пользователей может понадобиться, но до нее еще далеко, я пока с этой довольно простой бд не разобрался.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 7.5.2013, 12:05
Сообщение #8


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Цитата
О5 же, ИМХО, "прямое" использование формы, завязанной непосредственно на таблицу - тупиковый путь. Когда встанет вопрос о многопользовательском использовании, блокировках, длинных транзакциях - вернетесь в начало своих "изысканий" :rolleyes:

Ну тогда и мое небольшое ИМХО, надеюсь никто не против :lol:
Все перечисленные вопросы должны решаться на уровне БД. Решать их на уровне приложения - строить свою СУБД. А как раз для своей задачи - соединении с БД, получение данных/редактирование - общение с БД на уровне запросов - как раз хорошо подходят.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 10:43