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
Forum Updated to NodeBB v4.3 + New Features

Put data in TableView after SQl query

Scheduled Pinned Locked Moved Qt for Python
29 Posts 4 Posters 3.7k 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.
  • Karoluss96K Offline
    Karoluss96K Offline
    Karoluss96
    wrote on last edited by
    #21

    OK, now I have at beginning:

    q= QSqlQueryModel()
      table = QSqlTableModel()
    
    JonBJ 1 Reply Last reply
    0
    • Karoluss96K Karoluss96

      OK, now I have at beginning:

      q= QSqlQueryModel()
        table = QSqlTableModel()
      
      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on 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
      • Karoluss96K Offline
        Karoluss96K Offline
        Karoluss96
        wrote on 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'

        jsulmJ 1 Reply Last reply
        0
        • Karoluss96K Karoluss96

          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'

          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on 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
          • Karoluss96K Offline
            Karoluss96K Offline
            Karoluss96
            wrote on last edited by Karoluss96
            #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'

            jsulmJ 1 Reply Last reply
            0
            • Karoluss96K Karoluss96

              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'

              jsulmJ Offline
              jsulmJ Offline
              jsulm
              Lifetime Qt Champion
              wrote on 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
              • Karoluss96K Offline
                Karoluss96K Offline
                Karoluss96
                wrote on 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?

                jsulmJ 1 Reply Last reply
                0
                • Karoluss96K Karoluss96

                  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?

                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on 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
                  • Karoluss96K Offline
                    Karoluss96K Offline
                    Karoluss96
                    wrote on last edited by Karoluss96
                    #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

                    • Login

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