Mar-22-2017, 01:07 PM
hi,
i'm making a program where i read some tables from a mariadb server and show them on a QtreeView using QtSql. I would like to print the tables content. i'm using pyqt4 as gui.
I tried with QtextDocument but i'm not doing it right, maybe someone can help me. Thank you
This is my code:
i'm making a program where i read some tables from a mariadb server and show them on a QtreeView using QtSql. I would like to print the tables content. i'm using pyqt4 as gui.
I tried with QtextDocument but i'm not doing it right, maybe someone can help me. Thank you
This is my code:
import sys,os.path, os from PyQt4 import QtGui, uic,QtSql,QtCore import time class raport_vanzari(QtGui.QDialog): def __init__(self): QtGui.QDialog.__init__(self) file_path = os.path.abspath("ui/raport_vanzari.ui") uic.loadUi(file_path, self) # self.client_close_btn.pressed.connect(self.close) self.move(QtGui.QApplication.desktop().screen().rect().center() - self.rect().center()) # self.setFixedSize(self.size()) self.refresh_oper.pressed.connect(self.run_refresh_data_oper) self.rap_lista_oper() self.table_operatori.doubleClicked.connect(self.run_dublu_click) self.cauta_btn.pressed.connect(self.raport_pe_zile) self.raportlunar_btn.pressed.connect(self.rap_vanzari_lunar) self.print1_btn.pressed.connect(self.handlePreview) def handlePrint(self): dialog = QtGui.QPrintDialog() if dialog.exec_() == QtGui.QDialog.Accepted: self.handlePaintRequest(dialog.printer()) def handlePreview(self): dialog = QtGui.QPrintPreviewDialog() dialog.paintRequested.connect(self.handlePaintRequest) dialog.exec_() def handlePaintRequest(self, printer): document = QtGui.QTextDocument() cursor = QtGui.QTextCursor(document) model = self.table.model() table = cursor.insertTable(model.rowCount(), model.columnCount()) for row in range(table.rows()): for column in range(table.columns()): cursor.insertText(model.item(row, column).text()) cursor.movePosition(QtGui.QTextCursor.NextCell) document.print_(printer) def raport_pe_zile(self): date_start = self.start_date_line.displayText() date_stop = self.stop_date_line.displayText() query = QtSql.QSqlQuery() query.prepare("SELECT sum(valoare_totala) FROM documente_iesire WHERE data_emis BETWEEN '" + str(date_start) + " 00:00:00.00' AND '" + str(date_stop) + " 23:59:59.999' AND document='bon de casa'") query.exec_() while (query.next()): total_sum = str(query.value(0).toString()) self.total_perioada.setText(total_sum+" Lei") date_start = self.start_date_line.displayText() date_stop = self.stop_date_line.displayText() self.model = QtSql.QSqlQueryModel() self.model.setQuery("SELECT document,concat(valoare_totala,' Lei'),data_emis,user_emis FROM documente_iesire WHERE data_emis BETWEEN '"+str(date_start)+" 00:00:00.00' AND '"+str(date_stop)+" 23:59:59.999' AND document='bon de casa'") self.model.setHeaderData(0, QtCore.Qt.Horizontal, self.tr("Nume document")) self.model.setHeaderData(1, QtCore.Qt.Horizontal, self.tr("Valoare document")) self.model.setHeaderData(2, QtCore.Qt.Horizontal, self.tr("Data emitere")) self.model.setHeaderData(3, QtCore.Qt.Horizontal, self.tr("Utilizator")) self.table.setModel(self.model) self.table.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows) self.table.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) time_print = time.strftime("%d/%m/%Y-%H:%M:%S") self.status_v_1.setText('Raport executat: =====> ' + time_print) def run_dublu_click(self): self.select_row_operatori() self.rap_vanzari_oper() def run_refresh_data_oper(self): self.rap_lista_oper() def rap_lista_oper(self): self.model = QtSql.QSqlQueryModel() self.model.setQuery("SELECT nume,sec_lvl FROM operatori") self.model.setHeaderData(0, QtCore.Qt.Horizontal, self.tr("Nume operator")) self.model.setHeaderData(1, QtCore.Qt.Horizontal, self.tr("Nivel acces")) self.table_operatori.setModel(self.model) self.table_operatori.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows) self.table_operatori.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) time_print = time.strftime("%d/%m/%Y-%H:%M:%S") self.status_v_1.setText('Date citite: =====> ' + time_print) def select_row_operatori(self): index = self.table_operatori.selectionModel().selectedRows()[0] id_us = self.table_operatori.model().data(index).toString() den = unicode(str(id_us)) query = QtSql.QSqlQuery() query.prepare("SELECT nume FROM operatori WHERE nume=:den;") query.bindValue(":den", den) query.exec_() # column = query.record().count() # print (column) while (query.next()): numeOut = str(query.value(0).toString()) self.nume_oper_line.setText(numeOut) time_print = time.strftime("%d/%m/%Y-%H:%M:%S") self.status_v_1.setText('Operator selectat: =====> ' + time_print) def rap_vanzari_oper(self): time_query = time.strftime("%Y/%m/%d") self.model = QtSql.QSqlQueryModel() nume = self.nume_oper_line.displayText() query = QtSql.QSqlQuery() query.prepare("SELECT sum(valoare_totala) FROM documente_iesire WHERE document='bon de casa' AND user_emis='"+nume+"' AND data_emis BETWEEN '"+time_query+" 00:00:00.00' AND '"+time_query+" 23:59:59.999' ;") query.exec_() while (query.next()): suma_val = str(query.value(0).toString()) self.total_oper_line.setText(suma_val+" Lei") self.model.setQuery("SELECT document,concat(valoare_totala, ' Lei'),data_emis FROM documente_iesire WHERE document='bon de casa' AND user_emis='"+nume+"' AND data_emis BETWEEN '"+time_query+" 00:00:00.00' AND '"+time_query+" 23:59:59.999';") self.model.setHeaderData(0, QtCore.Qt.Horizontal, self.tr("Nume document")) self.model.setHeaderData(1, QtCore.Qt.Horizontal, self.tr("Valoare document")) self.model.setHeaderData(2, QtCore.Qt.Horizontal, self.tr("Data emitere")) self.table_vanzari.setModel(self.model) self.table_vanzari.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows) self.table_vanzari.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) time_print = time.strftime("%d/%m/%Y-%H:%M:%S") self.status_v_1.setText('Date vanzari citite: =====> ' + time_print) def rap_vanzari_lunar(self): time_query_1 = time.strftime("%Y/%m/1") time_query_2 = time.strftime("%Y/%m/31") self.model = QtSql.QSqlQueryModel() nume = self.nume_oper_line.displayText() query = QtSql.QSqlQuery() query.prepare( "SELECT sum(valoare_totala) FROM documente_iesire WHERE document='bon de casa' AND data_emis BETWEEN '" + time_query_1 + " 00:00:00.00' AND '" + time_query_2 + " 23:59:59.999' ;") query.exec_() while (query.next()): suma_val = str(query.value(0).toString()) self.total_lunar.setText(suma_val + " Lei") self.model.setQuery("SELECT document,concat(valoare_totala, ' Lei'),data_emis,user_emis FROM documente_iesire WHERE document='bon de casa' AND data_emis BETWEEN '" + time_query_1 + " 00:00:00.00' AND '" + time_query_2 + " 23:59:59.999';") self.model.setHeaderData(0, QtCore.Qt.Horizontal, self.tr("Nume document")) self.model.setHeaderData(1, QtCore.Qt.Horizontal, self.tr("Valoare document")) self.model.setHeaderData(2, QtCore.Qt.Horizontal, self.tr("Data emitere")) self.model.setHeaderData(3, QtCore.Qt.Horizontal, self.tr("Operator")) self.raport_lunar_table.setModel(self.model) self.raport_lunar_table.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows) self.raport_lunar_table.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) time_print = time.strftime("%d/%m/%Y-%H:%M:%S") self.status_v_1.setText('Raport lunar de vanzari creat: =====> ' + time_print)