1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
import csv
import os
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import Qt, QModelIndex, QSortFilterProxyModel, QRegExp, QThread
from PyQt5.QtSql import (QSqlDatabase, QSqlQuery, QSqlRelationalTableModel, QSqlRelation, QSqlTableModel)
from PyQt5.QtWidgets import (QMainWindow, QMessageBox, QFileDialog, QAbstractItemView)
from UI.c2trl_ui import Ui_MainWindow
CONFIG_DATABASE_PATH = "../Data"
CONFIG_DATABASE_NAME = "releves.db"
# ---------------------------------Connexion à la BD------------------------------------
def ouvrecnx(self):
basedonnee = os.path.join(CONFIG_DATABASE_PATH, CONFIG_DATABASE_NAME)
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName(basedonnee)
if not db.open():
QMessageBox.critical(None, "Problème d'accès à la base de données \n",
"Impossible d'établir une connexion à la base de données.\n"
"Cliquer Annuler pour sortir.",
QMessageBox.Cancel)
return False
else:
return db
# ---------------------------------Déconnexion de la BD-------------------------
def fermecnx(db):
if db is not None:
db.close()
# ---------------------------Menu principal -------------------------------------
class Fenetre(QMainWindow):
def __init__(self, parent=None):
super(Fenetre, self).__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
ouvrecnx(self)
# ---------------------------------------------------------------------------------
t1 = QThread.thread(name='Création Tables Temporaires1, target=self.creation_tables_tmp1)
t2 = QThread.thread(name='Création Tables Temporaires2', target=self.creation_tables_tmp2)
t3 = QThread.thread(name='Création Combobox', target=self.cb_periode)
t4 = QThread.thread(name='Création Tableaux Analyses', target=self.analyse)
t1.start()
print(t1.name)
t2.start()
print(t2.name)
t3.start()
print(t3.name)
t4.start()
print(t4.name)
# ---------------------------------------------------------------------------------
def creation_tables_tmp1(self):
...
...
def creation_tables_tmp2(self):
...
...
def cb_periode(self):
# ComboBox periode clients
self.liste_periode = QSqlTableModel(self)
self.liste_periode.setTable('tmp_periode')
self.liste_periode.select()
self.ui.cb_periode.setModel(self.liste_periode)
self.ui.cb_periode.setModelColumn(self.liste_periode.fieldIndex('periode'))
self.ui.cb_periode.setCurrentIndex(-1)
...
...
def analyse(self):
self.model_analyse_clients = QSqlRelationalTableModel(self)
self.model_analyse_clients.setTable("tmp1")
self.model_analyse_clients.setEditStrategy(QSqlRelationalTableModel.OnManualSubmit)
self.model_analyse_clients.select()
self.model_analyse_clients.setHeaderData(0, Qt.Horizontal, "ID")
self.model_analyse_clients.setHeaderData(1, Qt.Horizontal, "INTITULE")
self.ui.tableView_analyse_clients.setModel(self.model_analyse_clients)
self.ui.tableView_analyse_clients.setSortingEnabled(True)
self.ui.tableView_analyse_clients.sortByColumn(1, Qt.AscendingOrder)
self.ui.tableView_analyse_clients.setSortingEnabled(False)
self.ui.tableView_analyse_clients.resizeColumnsToContents()
self.ui.tableView_analyse_clients.resizeRowsToContents()
self.ui.tableView_analyse_clients.hideColumn(0)
self.model_analyse_clients.setRelation(0, QSqlRelation('tmp_ventes', 'ID', ' '))
# ----------------------------------------------------------------------------------------------
# Affichage Liste Releve par Phases
self.model_analyse_ventes = QSqlRelationalTableModel(self)
self.model_analyse_ventes.setTable("tmp_ventes")
self.model_analyse_ventes.setEditStrategy(QSqlRelationalTableModel.OnManualSubmit)
self.model_analyse_ventes.select()
self.model_analyse_ventes.setHeaderData(0, Qt.Horizontal, "ID")
self.model_analyse_ventes.setHeaderData(1, Qt.Horizontal, "FACTURE")
self.model_analyse_ventes.setHeaderData(2, Qt.Horizontal, "PERIODE")
self.model_analyse_ventes.setHeaderData(3, Qt.Horizontal, "MONTANT")
self.model_analyse_ventes.setSort(0, Qt.AscendingOrder)
self.ui.tableView_ventes.setModel(self.model_analyse_ventes)
self.ui.tableView_ventes.setSortingEnabled(True)
self.ui.tableView_ventes.resizeColumnsToContents()
self.ui.tableView_ventes.resizeRowsToContents()
self.ui.tableView_analyse_clients.selectionModel().currentRowChanged.connect(self.setfilter_ventes)
# ----------------------------------------------------------------------------------------------
def setfilter_ventes(self, index):
ident = self.model_analyse_clients.data(self.model_analyse_clients.index(index.row(), 0, QModelIndex()))
self.model_analyse_ventes.setFilter("ident = {}".format(ident))
while self.model_analyse_ventes.canFetchMore():
self.model_analyse_ventes.fetchMore() |