Python Forum
[PyQt] How to print a QtSql.QSqlQuery() from python
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[PyQt] How to print a QtSql.QSqlQuery() from python
#1
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:

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)
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  PyQt5, QtSql: connection to database does not work gradlon93 4 1,673 Jan-12-2023, 05:26 PM
Last Post: deanhystad
  [PyQt] [Solved]Make certain columns Un-editable in QtSql Extra 7 3,097 May-28-2022, 05:19 PM
Last Post: Extra

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020