bonjour,
J'ai un petit souci avec l'utilisation d'un QSqlRecord et l'insertion dans une qsqltablemodel:
a partir d'un même formulaire, je crée un nouveau record ou je modifie un record existant. Quand j'appuie sur le bouton sauver, j'appelle indifféremment la fonction SaveButtonClicked ci-dessous.
S'il s'agit d'un nouveau record, j'affecte à la variable globale Op un record de la table Operations et le renseigne avec les champs du formulaire. S'il s'agit de la modification d'un record existant, je passe directement au renseignement.
la modification d'un record existant fonctionne correctement, mais pas la création d'un nouveau. le renseignement ne fonctionne pas très bien, les champs restent à None. En utilisant la fonction clearValues, ça fonctionne un peu mieux sauf pour le champs "Poste" qui reste à None.
J'ai testé différentes bricoles, notamment par rapport au type de variable, mais int ou str, ça ne fonctionne pas mieux donc je fais appel au forum parce que là, je n'ai plus d'idées!
Si quelqu'un peut m'expliquer en détail le fonctionnement le QSqlTableModel.Record notamment à l'initialisation qu'y-a-t-il dans le record ?

voici ma fonction en python 3 et QT4
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
    def SaveButtonClicked(self, checked=False):
        #permet de sauvegarder les données entrées dans la BDD
        #autorise la MAJ des bilans
 
        if self.Op is None:
            print("affecte un enregistrement vide à Op")
            model = QSqlTableModel(self)
            model.setTable("Operations")            
            self.Op = model.record()
            self.Op.clearValues() #s'assure que le record est vide, le remplit de valeurs NULL
            print("idposte = {}".format(self.Op.value("Poste")))
            print("Date {}".format(self.Op.value("Date")))
            print("type {}".format(self.Op.value("Operation")))
            print("libelle {}".format(self.Op.value("Libelle")))
            print("cheque {}".format(self.Op.value("Cheque")))
            print("montant {}".format(self.Op.value("Montant")))
            print("realise {}".format(self.Op.value("Realise")))
            if self.Op.isEmpty() == True:
                print("op est vide")
            else:
                print("op n'est pas vide mais contient des valeurs null")
 
        self.IDPoste = self.FG.RequeteIDPoste("{}".format(self.ui.comboBox_Poste.currentText()))
        print("avant affectation, idposte :{}".format(self.IDPoste))
 
        self.Op.setValue("Poste", self.IDPoste)
        self.Op.setValue("Operation", self.ui.comboBox_type.currentText())
        self.Op.setValue("Date", self.ui.Edit_date.date().toString("yyyy-MM-dd"))
        self.Op.setValue("Libelle", self.ui.Edit_Libelle.text())
        self.Op.setValue("Cheque", self.ui.Edit_cheque.text())
        self.Op.setValue("Montant", self.ui.Edit_montant.text())
        if self.ui.checkBox_solde.isChecked() == True: #0 = False = unchecked, 1 = True = checked
            self.Op.setValue("Realise", 1)
        else:
            self.Op.setValue("Realise", 0)
 
        print("idposte = {}".format(self.Op.value("Poste")))
        print("Date {}".format(self.Op.value("Date")))
        print("type {}".format(self.Op.value("Operation")))
        print("libelle {}".format(self.Op.value("Libelle")))
        print("cheque {}".format(self.Op.value("Cheque")))
        print("montant {}".format(self.Op.value("Montant")))
        print("realise {}".format(self.Op.value("Realise")))
merci d'avance pour votre aide et bon week-end