5701
|
Qt / Печать / Re: Проблемы с печатью.
|
: Октябрь 11, 2007, 11:36
|
Да западло в том, что ОДНОВРЕМЕННО работают и моя софтина, и досовская. Пока решение или выходить из БД и входить заново, или выключить/включить принтер. Второй способ быстрее.
|
|
|
5702
|
Qt / Базы данных / Помощь по model\view
|
: Октябрь 11, 2007, 11:26
|
Только не отсылайте меня сразу в ассистент, его я читал, но не помогло. Просто очень трудно понять данную технологию. В общем такая задача: 1. Есть БД с таблицей, в которой 7 полей. 2. Создаю QSqlQueryModel и соединяюсь SELECT * FROM table 3. Создаю QTableView и подключаю к нему модель. 4. Редактирую данные через дополнительное окно и после добавления опять делю в модели SELECT * FROM table Теперь трудности: 1. Как установить курсор на последнюю запись? 2. Как установить курсор на нужную запись (при редактировании)? 3. Нужно ли каждый раз после изменений обновлять всю модель? 4. Как вообще правильно работать с model\view??? Буду рад любой помощи.
|
|
|
5709
|
Qt / Печать / Проблемы с печатью.
|
: Октябрь 09, 2007, 11:29
|
В общем пишу проект под масдаем и приходится выводить информацию на принтер. Делаю это через QPrinter и QTextDocument. Все отлично, но.... Одновременно приходится работать в досовской БД и печатать из нее. Так вот после печати из моей софтины, из БД печатается другим шрифтом (это красиво, но очень долго), приходится выключать и опять включать принтер. Так вот как мне сохранять до и восстанавливать состояние принтера после печати? Принтер матричный Epson.
|
|
|
5712
|
Qt / Базы данных / Re: Проблема с переходом от SQlite к Firebird
|
: Октябрь 01, 2007, 19:41
|
Ну таки чего ты от него хочешь ? Запрос выполнен без ошибок и все хорошо А число записей count(*) и читать чего вернет А вообще - IBE умеет создавать для таблицы(в птице) процедурку вида insert_or_update Не знал. А как пользоваться ентой функцией?
|
|
|
5713
|
Qt / Базы данных / Проблема с переходом от SQlite к Firebird
|
: Октябрь 01, 2007, 18:08
|
Р Жизнь заставила сделать такой переход. Структуру таблиц сделал вручную, теперь требуется импортировать данные. Причем общий переход пока не планирую и нужно периодически подгружать данные из SQlite базы. Код такой: QSqlDatabase qsdBase_sqlite = QSqlDatabase::addDatabase("QSQLITE","lite"); qsdBase_sqlite.setDatabaseName(qsBaseName);
QSqlDatabase qsdBase_ibase= QSqlDatabase::addDatabase("QIBASE","ibase"); qsdBase_ibase.setHostName("avtomat"); qsdBase_ibase.setUserName("USER"); qsdBase_ibase.setPassword("password"); qsdBase_ibase.setDatabaseName("REFERENCEASP");
QSqlQuery* qsqReadQuery=new QSqlQuery(qsdBase_sqlite); QSqlQuery* qsqWriteQuery=new QSqlQuery(qsdBase_ibase);
qsqReadQuery->exec("SELECT COUNT(ID) FROM reftbl"); qsqReadQuery->first(); int iCount=qsqReadQuery->value(0).toInt(); qsqReadQuery->exec("SELECT * FROM reftbl"); if (!qsqReadQuery->isActive()) { QMessageBox::critical(0, QCoreApplication::applicationName(),qsqReadQuery->lastError().text()); return 0; } QProgressDialog* qpdProgress=new QProgressDialog("Loading...", "Cancel", 0, iCount); qpdProgress->setWindowModality(Qt::WindowModal); while (qsqReadQuery->next()) { qpdProgress->setValue(qpdProgress->value()+1); qsqWriteQuery->prepare(QString("SELECT * FROM REFTBL WHERE ID=")+qsqReadQuery->value(0).toString()); bool bResult=qsqWriteQuery->exec(); if (bResult) qsqWriteQuery->prepare("UPDATE REFTBL SET NUMBERDELO=:NUMBERDELO,FAMIL=:FAMIL,NAME=:NAME,OTCH=:OTCH,REFTYPE=:REFTYPE,UID=:UID,REFDATE=:REFDATE,REFTEXT=:REFTEXT WHERE ID=:ID"); else qsqWriteQuery->prepare("INSERT INTO REFTBL (ID,NUMBERDELO,FAMIL,NAME,OTCH,REFTYPE,UID,REFDATE,REFTEXT) VALUES (:ID,:NUMBERDELO,:FAMIL,:NAME,:OTCH,:REFTYPE,:UID,:REFDATE,:REFTEXT)"); qsqWriteQuery->bindValue(":ID",qsqReadQuery->value(0)); qsqWriteQuery->bindValue(":NUMBERDELO",qsqReadQuery->value(1)); qsqWriteQuery->bindValue(":FAMIL",qsqReadQuery->value(2)); qsqWriteQuery->bindValue(":NAME",qsqReadQuery->value(3)); qsqWriteQuery->bindValue(":OTCH",qsqReadQuery->value(4)); qsqWriteQuery->bindValue(":REFTYPE",qsqReadQuery->value(5)); qsqWriteQuery->bindValue(":UID",qsqReadQuery->value(6)); qsqWriteQuery->bindValue(":REFDATE",qsqReadQuery->value(7).toDateTime()); qsqWriteQuery->bindValue(":REFTEXT",qsqReadQuery->value(8).toString().toUtf8()); if (!qsqWriteQuery->exec()) { QMessageBox::critical(0, QCoreApplication::applicationName(),qsqWriteQuery->lastError().text()); return 0; } }
Проблемное в том, что bResult всегда true. Что не так?
|
|
|
5715
|
Qt / Общие вопросы / Re: Помогите неучу
|
: Сентябрь 30, 2007, 18:26
|
#include <sys/stat.h> #include <sys/types.h> #include <dirent.h> ................................................ QString qsDirName=// Имя папки register struct dirent *dirbuf; DIR *fddir; if ((fddir=opendir(qsDirName.toLocal8Bit()))==NULL) { return; } while ((dirbuf=readdir(fddir))!=NULL) { Вот тут делаешь с файлом что хочешь. Его имя QString qsName=QString().fromLocal8Bit(dirbuf->d_name); Только нужно отсеять ненужные файлы }
|
|
|
|
|