Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt for Python
  4. Put data in TableView after SQl query

Put data in TableView after SQl query

Scheduled Pinned Locked Moved Qt for Python
29 Posts 4 Posters 3.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K Offline
    K Offline
    Karoluss96
    wrote on 8 Jul 2022, 06:53 last edited by
    #21

    OK, now I have at beginning:

    q= QSqlQueryModel()
      table = QSqlTableModel()
    
    J 1 Reply Last reply 8 Jul 2022, 07:22
    0
    • K Karoluss96
      8 Jul 2022, 06:53

      OK, now I have at beginning:

      q= QSqlQueryModel()
        table = QSqlTableModel()
      
      J Offline
      J Offline
      JonB
      wrote on 8 Jul 2022, 07:22 last edited by
      #22

      @Karoluss96
      Why do you have both a QSqlQueryModel and a QSqlTableModel? Why two models?

      And you are assigning each of these to a function-local variable now. You will not be able to access these outside of this function, and they may be destroyed when they go out of scope.

      1 Reply Last reply
      0
      • K Offline
        K Offline
        Karoluss96
        wrote on 8 Jul 2022, 07:54 last edited by
        #23

        Both I catch in one funtion, so I needn't put them global.
        Now I have that:

         q= QSqlQueryModel()
                table = QSqlTableModel()
                self.dlg.tableView_3.show()
                if con == Zest[0]:
                   sql2 = "SELECT * FROM ZARZADZANIE.ZAMOWIENIA_WG_STATUS_V"
                   q=query.exec_(sql2)
                   a=table.setQuery(q)
                   self.dlg.tableView_5.setModel(a)  
                   print (a)
        

        with an error: TypeError: setQuery(self, QSqlQuery): argument 1 has unexpected type 'bool'

        J 1 Reply Last reply 8 Jul 2022, 08:13
        0
        • K Karoluss96
          8 Jul 2022, 07:54

          Both I catch in one funtion, so I needn't put them global.
          Now I have that:

           q= QSqlQueryModel()
                  table = QSqlTableModel()
                  self.dlg.tableView_3.show()
                  if con == Zest[0]:
                     sql2 = "SELECT * FROM ZARZADZANIE.ZAMOWIENIA_WG_STATUS_V"
                     q=query.exec_(sql2)
                     a=table.setQuery(q)
                     self.dlg.tableView_5.setModel(a)  
                     print (a)
          

          with an error: TypeError: setQuery(self, QSqlQuery): argument 1 has unexpected type 'bool'

          J Offline
          J Offline
          jsulm
          Lifetime Qt Champion
          wrote on 8 Jul 2022, 08:13 last edited by
          #24

          @Karoluss96 said in Put data in TableView after SQl query:

          q= QSqlQueryModel()
          table = QSqlTableModel()

          I'm wondering how often we need to write that you are creating local variables which are destroyed as soon as the method finishes?

          And did you actually read what @JonB wrote? Again: why do you have QSqlQueryModel AND QSqlTableModel?

          Why are you overwriting q here:

          q=query.exec_(sql2)
          

          ?
          You should really think more about what you are doing...

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • K Offline
            K Offline
            Karoluss96
            wrote on 8 Jul 2022, 08:20 last edited by Karoluss96 7 Aug 2022, 08:22
            #25

            OK, I read his suggestion, but still don't what is a problem in 'creating local variables which are destroyed as soon as the method finishes' - this variables exist only in this function

            q=query.exec_(sql2) come from different function in my app, which execute query in assigned variable, that have the SQL command as a string.

            Now the error is little different: TypeError: setQuery(self, QSqlQuery): argument 1 has unexpected type 'str'

            J 1 Reply Last reply 8 Jul 2022, 08:25
            0
            • K Karoluss96
              8 Jul 2022, 08:20

              OK, I read his suggestion, but still don't what is a problem in 'creating local variables which are destroyed as soon as the method finishes' - this variables exist only in this function

              q=query.exec_(sql2) come from different function in my app, which execute query in assigned variable, that have the SQL command as a string.

              Now the error is little different: TypeError: setQuery(self, QSqlQuery): argument 1 has unexpected type 'str'

              J Offline
              J Offline
              jsulm
              Lifetime Qt Champion
              wrote on 8 Jul 2022, 08:25 last edited by
              #26

              @Karoluss96 said in Put data in TableView after SQl query:

              but still don't what is a problem in 'creating local variables which are destroyed as soon as the method finishes'

              Simple: your models (q and table) will be destroyed as soon as the method finishes, so your tableView_5 will not show anything.

              "q=query.exec_(sql2) come from different function in my app" - don't just copy/paste something without thinking about what you are doing.

              "Now the error is little different" - please, if you get an error show also the code causing this error!

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              1 Reply Last reply
              0
              • K Offline
                K Offline
                Karoluss96
                wrote on 8 Jul 2022, 08:33 last edited by
                #27

                Problem is in last line of this code:

                sql2 = "SELECT * FROM ZARZADZANIE.ZAMOWIENIA_WG_STATUS_V"
                           q=query.exec_(sql2)
                           print (q)
                           c=self.dlg.tableView_5.setModel(q)  
                

                I don't know why q is converted from string to bool.
                If I put in setModel sql2 instead of q it shout that here can be the string

                about sentance: " models (q and table) will be destroyed as soon as the method finishes, so your tableView_5 will not show anything." what do you propose?

                J 1 Reply Last reply 8 Jul 2022, 08:34
                0
                • K Karoluss96
                  8 Jul 2022, 08:33

                  Problem is in last line of this code:

                  sql2 = "SELECT * FROM ZARZADZANIE.ZAMOWIENIA_WG_STATUS_V"
                             q=query.exec_(sql2)
                             print (q)
                             c=self.dlg.tableView_5.setModel(q)  
                  

                  I don't know why q is converted from string to bool.
                  If I put in setModel sql2 instead of q it shout that here can be the string

                  about sentance: " models (q and table) will be destroyed as soon as the method finishes, so your tableView_5 will not show anything." what do you propose?

                  J Offline
                  J Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on 8 Jul 2022, 08:34 last edited by
                  #28

                  @Karoluss96 said in Put data in TableView after SQl query:

                  I don't know why q is converted from string to bool.

                  Because you copy pasted code without thinking.
                  What do you think this line of code is doing?

                  q=query.exec_(sql2)
                  

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  0
                  • K Offline
                    K Offline
                    Karoluss96
                    wrote on 8 Jul 2022, 08:44 last edited by Karoluss96 7 Aug 2022, 08:51
                    #29

                    It should execute the sql in a different functions eg.

                          sql9 = 'SELECT * FROM ZARZADZANIE.STATUS_PRZEK_SLO'
                            query.exec_(sql9)
                    

                    It works, but here the result of query (by while query.next():)
                    goes to ComboBox not TableView

                    and earlier query is declared global as:

                    global query
                    query = QSqlQuery(db)
                    
                    1 Reply Last reply
                    0

                    21/29

                    8 Jul 2022, 06:53

                    • Login

                    • Login or register to search.
                    21 out of 29
                    • First post
                      21/29
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • Users
                    • Groups
                    • Search
                    • Get Qt Extensions
                    • Unsolved