![]() |
|
![]() ![]() ![]() |
|
CuteBunny |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 14.2.2008 Репутация: 1 Всего: 1 |
Hello, world! Есть две таблицы. Таблицы связаны - в второй имеется поле, которое связано с ключевым полем первой.
На ui одна таблица находится под другой . При навигации по записям в первой таблице, во второй отображаются записи, связанные только с текущей записей первой таблицы, если проще то, "select * from table2 where id="+table1Query.value(0).toString(), думаю всем итак понятно, что к чему. Для первой таблицы я написал свою модель, унаследованную от QSqlTableModel, там все нормально, никаких проблем нет. Хочу теперь написать модель на основе QSqlRelationalTableModel, для второй таблицы. Вопрос, как мне эти две модели связать между собой??? И можно ли так в обще сделать? |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
||||
|
||||
CuteBunny |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 14.2.2008 Репутация: 1 Всего: 1 |
По подробнее - это создать отношение между таблицами типа 1:М. Вроде, теперь перешел на mysql, там уже вроде таблицы можно создавать с внешними ключами и проблемы решаться, сейчас, новая блин проблема, причем тоже часто встречается в нете, но никто не дает четкого ответа, проблема с кодировкой, делаю запрос на вставку записи в бд (в самом мускуле везде, где только нужно установил кодировку cp1251), отображаются ??????? - ки, и кодек на tr и locale и CString устанавливал, не помогает. Говорят, это можно решить переводом на utf8 - не знаю с чего начать?
|
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Начни с перевода базы данных на utf-8 вместо cp1251. Откуда вставляется русский текст из GUI или из исходников ? Это принципиально, т.к. если из GUI, то русский текст представляется в UTF-8 кодировке, если из исходников (напр. sqlquery.exec("INSERT INTO tbl (msg) values ('привет мир');"), то в cp1251. А в этом случае надо преобразовать кодировку в Utf-8. Сделать это можно командой QString::fromLocal8Bit, которая определяет кодировку локали (cp1251 по умолчанию для винды) и преобразует в Unicode.
|
|||
|
||||
CuteBunny |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 14.2.2008 Репутация: 1 Всего: 1 |
clientsQuery.prepare("insert into clients("
"fio, ps, pn, address, phone) " "values(" ":fio, :ps, :pn, :address, :phone)"); clientsQuery.bindValue(0, ui.lineEditFIO->text().toLocal8Bit()); //попробовал через Local8Bit(), бд пока не перевел в utf8 - результат вместо ???? - àààààà clientsQuery.bindValue(1, ui.lineEditPS->text()); clientsQuery.bindValue(2, ui.lineEditPN->text()); clientsQuery.bindValue(3, ui.lineEditAddress->text()); clientsQuery.bindValue(4, ui.lineEditPhone->text()); clientsQuery.exec(); Добавлено через 12 минут и 57 секунд Qt4.3.1+VisualCppEE+MySql4.1.22, поменял my.cnf в следующих местах [client] #password = my_password port = 3306 socket = /tmp/mysql.sock character-sets-dir = C:/MySQL/share/charsets/ default-character-set = utf8 [mysqld] character-sets-dir = C:/MySQL/share/charsets/ default-character-set = utf8 port = 3306 socket = /tmp/mysql.sock skip-locking key_buffer = 16M max_allowed_packet = 1M table_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M skip-character-set-client-handshake [mysql] no-auto-rehash default-character-set = utf8 clientsQuery.prepare("insert into clients(" "fio, ps, pn, address, phone) " "values(" ":fio, :ps, :pn, :address, :phone)"); clientsQuery.bindValue(0, ui.lineEditFIO->text().toUtf8()); //попробовал таким образом, результат еще хуже - вававвава clientsQuery.bindValue(1, ui.lineEditPS->text()); clientsQuery.bindValue(2, ui.lineEditPN->text()); clientsQuery.bindValue(3, ui.lineEditAddress->text()); clientsQuery.bindValue(4, ui.lineEditPhone->text()); clientsQuery.exec(); |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |