Название: Пропадают данные из TableView Отправлено: masha от Август 18, 2009, 16:23 Подскажите, пожалуйста, что нужно сделать, чтобы не возникали следующие проблемы: Qt 4.3, коннект через ODBC 1) отображая данные из БД (QSqlTableModel / QTableView) при отключении сервера или соединения (mDatabase.close()) данные из view пропадают; 2) имею на форме три модели ( QSqlTableModel и две QSqlQueryModel для комбобоксов ), выполняя ПРОСТОЙ запрос на редактирование 1ой таблицы - всё проходит нормально, а если (как мне необходимо) оформить запрос в виде транзакции (transaction(), commit(), rollback()), данные опять пропадают, причем во всех трёх вьюшках!! Для tableModel спасает select(), а с queryModel() всё как-то грустно :( :( Я что-то упускаю?? Может где-то хеширование надо применить, а где не пойму... Название: Re: Пропадают данные из TableView Отправлено: chu от Декабрь 07, 2010, 16:53 Цитировать если (как мне необходимо) оформить запрос в виде транзакции (transaction(), commit(), rollback()), данные опять пропадают у меня такая же же проблема. есть ответ?Название: Re: Пропадают данные из TableView Отправлено: twp от Декабрь 13, 2010, 19:46 открываем асистент и читаем:
bool QSqlDatabase::commit () Commits a transaction to the database if the driver supports transactions and a transaction() has been started. Returns true if the operation succeeded. Otherwise it returns false. Note: For some databases, the commit will fail and return false if there is an active query using the database for a SELECT. Make the query inactive before doing the commit. Вполне возможно, что это и является причиной пропадания данных, хотя явно об этом ничего не сказано Название: Re: Пропадают данные из TableView Отправлено: QuAzI от Декабрь 14, 2010, 01:02 Принципиально использовать ODBC? Без него проще ловить ошибки как правило, если речь про реальную SQL-базу.
Название: Re: Пропадают данные из TableView Отправлено: chu от Декабрь 14, 2010, 15:56 Принципиально использовать ODBC? Без него проще ловить ошибки как правило, если речь про реальную SQL-базу. А разве можно работать с БД без подключения драйвера?Название: Re: Пропадают данные из TableView Отправлено: QuAzI от Декабрь 14, 2010, 17:14 Можно работать с БД используя нормальный драйвер. ODBC это насколько помню не сам драйвер, а что-то типа обёртки. Причём давно протухшей и заброшенной MS так же, как BDE заброшено борландом - эти два костыля обычно ставились вместе и всесте сводили своими глюками. Есть ещё unixODBC, но при его наличии некоторый софт отказывается работать. Особенно радовало что поведение ODBC в отношении таблиц dBase(DBF) и Paradox различалось в зависимости от того, стоит драйвер или нет. Начиная с выбора кодировок, заканчивая некоторыми трудноуловимыми фичами. Из-за чего народ ломился на любые сторонние разработки - начиная с любимого всеми дельфистами tDbf (который сейчас включен в Lazarus), заканчивая всякими платными монстрилками типа Ado Data Suite.
Название: Re: Пропадают данные из TableView Отправлено: crossly от Декабрь 14, 2010, 19:31 какая у вас СУБД?
Название: Re: Пропадают данные из TableView Отправлено: chu от Декабрь 15, 2010, 14:40 ms sql server 2005
Название: Re: Пропадают данные из TableView Отправлено: crossly от Декабрь 15, 2010, 23:37 по поводу первого пункта.. это нормально поведение... так и должно быть... по поводу второго... что возвращает commit() и lastError().text() ??
Название: Re: Пропадают данные из TableView Отправлено: chu от Январь 24, 2011, 16:17 по поводу первого пункта.. это нормально поведение... так и должно быть... по поводу второго... что возвращает commit() и lastError().text() ?? commit() и lastError().text() ничего не возвращают, программа продолжает работать, но записи в ячейках не отображаются, остается только прорисовка таблицы.Функция: Код: void Limitcard_Form::deleteLDet() |