Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Wundersamer Aufruf von Modulen
Forum Updated to NodeBB v4.3 + New Features

Wundersamer Aufruf von Modulen

Scheduled Pinned Locked Moved Unsolved German
6 Posts 3 Posters 960 Views 1 Watching
  • 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
    kahemenne
    wrote on last edited by
    #1

    Hallo allerseitz,
    ich hätte da gerne ein Problem.
    In meine Programm(ausschnitt):

                tmp = self.arbzei[2]        # Datum
                if self.DEBUG:
                    print(f'tmp: {tmp}')
                    print(f'{tmp[:4]} {tmp[5:7]} {tmp[8:]}')
                j = int(tmp[:4]); m = int(tmp[5:7]); t = int(tmp[8:])
                m = m
                print(f'j: {j}, m: {m}, t: {t}')
                try:
                    self.ui.arbzeiDEDatum.setDate(QDate(j, m, t))
                except Exception as e:
                    print('Exception: ', e)
    
                von = self.arbzei[3]; von = von.replace(' ', '0'); von = '0' + von
                von =  von[von.find(':')-2:]
                if self.DEBUG:
                    print(f'von: {von}')
                    print(f'{von[:2]} {von[3:5]} {von[6:]}')
                self.ui.arbzeiTEAnfang.setTime(QTime(int(von[:2]),
                                           int(von[3:5]), 0))
    

    wobei self.ui.arbzeiDEDatum ein QDateEdit ist. Wenn das Läuft kommt das heraus

    jhr: 2023
    tmp: 2023-01-20
    2023 01 20
    j: 2023, m: 1, t: 20
    
    ArbZeiPfl DatumVerarb(self: <__main__.ArbZeiPfl(0x12f2fa2f500, name="ArbPflDialog") at 0x0000012F300C3740>)datum=None: PySide6.QtCore.QDate(2023, 1, 20)
    
    abr_DB ZeitraumViaDatum(self: <Abr_DB.abr_DB object at 0x0000012F32654A90>, datum: PySide6.QtCore.QDate(2023, 1, 20))
    
    abr_DB db_connect(self, user, password, host, database) <-
    Traceback (most recent call last):
      File "F:\Python\DRK-OV-SueWo\ArbeitsZeitPflegen.py", line 306, in DatumVerarb
        self.arbrec = self.abrdb.ZeitraumViaDatum(tmp)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "F:\Python\DRK-OV-SueWo\Abr_DB.py", line 500, in ZeitraumViaDatum
        sql += ' WHERE `von` <= "' + datum + '" AND `bis` >= "'
               ~~~~~~~~~~~~~~~~~~~~^~~~~~~
    TypeError: can only concatenate str (not "PySide6.QtCore.QDate") to str
    von: 09:00:00
    09 00 00
    
    

    Ich habe keine Ahnung was da abgeht.
    Die Auffrufe DatumVerarb() und ZeitraumViaDatum() werden eigentlich im laufenden Modul am Anfang aufgerufen. db_connect ist ein Aufruf im Modul in ZeitraumViaDatum.
    Die Fehlermeldungen unter den Aufrufen sind nicht relevant.
    Mir geht es nur darum, das die aufgerufen werden.

    Selbst der in Einschluß in einem try/connect Block brachte keine Erkentnisse.
    Hat jemand so etwas schon mal gesehen oder dafür eine Erklärung?
    Gruß
    Karl-Heinz

    JonBJ Pl45m4P 2 Replies Last reply
    0
    • K kahemenne

      Hallo allerseitz,
      ich hätte da gerne ein Problem.
      In meine Programm(ausschnitt):

                  tmp = self.arbzei[2]        # Datum
                  if self.DEBUG:
                      print(f'tmp: {tmp}')
                      print(f'{tmp[:4]} {tmp[5:7]} {tmp[8:]}')
                  j = int(tmp[:4]); m = int(tmp[5:7]); t = int(tmp[8:])
                  m = m
                  print(f'j: {j}, m: {m}, t: {t}')
                  try:
                      self.ui.arbzeiDEDatum.setDate(QDate(j, m, t))
                  except Exception as e:
                      print('Exception: ', e)
      
                  von = self.arbzei[3]; von = von.replace(' ', '0'); von = '0' + von
                  von =  von[von.find(':')-2:]
                  if self.DEBUG:
                      print(f'von: {von}')
                      print(f'{von[:2]} {von[3:5]} {von[6:]}')
                  self.ui.arbzeiTEAnfang.setTime(QTime(int(von[:2]),
                                             int(von[3:5]), 0))
      

      wobei self.ui.arbzeiDEDatum ein QDateEdit ist. Wenn das Läuft kommt das heraus

      jhr: 2023
      tmp: 2023-01-20
      2023 01 20
      j: 2023, m: 1, t: 20
      
      ArbZeiPfl DatumVerarb(self: <__main__.ArbZeiPfl(0x12f2fa2f500, name="ArbPflDialog") at 0x0000012F300C3740>)datum=None: PySide6.QtCore.QDate(2023, 1, 20)
      
      abr_DB ZeitraumViaDatum(self: <Abr_DB.abr_DB object at 0x0000012F32654A90>, datum: PySide6.QtCore.QDate(2023, 1, 20))
      
      abr_DB db_connect(self, user, password, host, database) <-
      Traceback (most recent call last):
        File "F:\Python\DRK-OV-SueWo\ArbeitsZeitPflegen.py", line 306, in DatumVerarb
          self.arbrec = self.abrdb.ZeitraumViaDatum(tmp)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "F:\Python\DRK-OV-SueWo\Abr_DB.py", line 500, in ZeitraumViaDatum
          sql += ' WHERE `von` <= "' + datum + '" AND `bis` >= "'
                 ~~~~~~~~~~~~~~~~~~~~^~~~~~~
      TypeError: can only concatenate str (not "PySide6.QtCore.QDate") to str
      von: 09:00:00
      09 00 00
      
      

      Ich habe keine Ahnung was da abgeht.
      Die Auffrufe DatumVerarb() und ZeitraumViaDatum() werden eigentlich im laufenden Modul am Anfang aufgerufen. db_connect ist ein Aufruf im Modul in ZeitraumViaDatum.
      Die Fehlermeldungen unter den Aufrufen sind nicht relevant.
      Mir geht es nur darum, das die aufgerufen werden.

      Selbst der in Einschluß in einem try/connect Block brachte keine Erkentnisse.
      Hat jemand so etwas schon mal gesehen oder dafür eine Erklärung?
      Gruß
      Karl-Heinz

      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by JonB
      #2

      @kahemenne said in Wundersamer Aufruf von Modulen:

      ArbZeiPfl DatumVerarb(self: <main.ArbZeiPfl(0x12f2fa2f500, name="ArbPflDialog") at 0x0000012F300C3740>)datum=None: PySide6.QtCore.QDate(2023, 1, 20)

      datum ist None?

                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "F:\Python\DRK-OV-SueWo\Abr_DB.py", line 500, in ZeitraumViaDatum
          sql += ' WHERE `von` <= "' + datum + '" AND `bis` >= "'
                 ~~~~~~~~~~~~~~~~~~~~^~~~~~~
      TypeError: can only concatenate str (not "PySide6.QtCore.QDate") to str
      

      datum muesst vielleicht str(datum) oder datum.toString(...) sein? Oder vielleicht ein Python nicht ein Qt date-type sein, dass weiss ich nicht.

      1 Reply Last reply
      0
      • K kahemenne

        Hallo allerseitz,
        ich hätte da gerne ein Problem.
        In meine Programm(ausschnitt):

                    tmp = self.arbzei[2]        # Datum
                    if self.DEBUG:
                        print(f'tmp: {tmp}')
                        print(f'{tmp[:4]} {tmp[5:7]} {tmp[8:]}')
                    j = int(tmp[:4]); m = int(tmp[5:7]); t = int(tmp[8:])
                    m = m
                    print(f'j: {j}, m: {m}, t: {t}')
                    try:
                        self.ui.arbzeiDEDatum.setDate(QDate(j, m, t))
                    except Exception as e:
                        print('Exception: ', e)
        
                    von = self.arbzei[3]; von = von.replace(' ', '0'); von = '0' + von
                    von =  von[von.find(':')-2:]
                    if self.DEBUG:
                        print(f'von: {von}')
                        print(f'{von[:2]} {von[3:5]} {von[6:]}')
                    self.ui.arbzeiTEAnfang.setTime(QTime(int(von[:2]),
                                               int(von[3:5]), 0))
        

        wobei self.ui.arbzeiDEDatum ein QDateEdit ist. Wenn das Läuft kommt das heraus

        jhr: 2023
        tmp: 2023-01-20
        2023 01 20
        j: 2023, m: 1, t: 20
        
        ArbZeiPfl DatumVerarb(self: <__main__.ArbZeiPfl(0x12f2fa2f500, name="ArbPflDialog") at 0x0000012F300C3740>)datum=None: PySide6.QtCore.QDate(2023, 1, 20)
        
        abr_DB ZeitraumViaDatum(self: <Abr_DB.abr_DB object at 0x0000012F32654A90>, datum: PySide6.QtCore.QDate(2023, 1, 20))
        
        abr_DB db_connect(self, user, password, host, database) <-
        Traceback (most recent call last):
          File "F:\Python\DRK-OV-SueWo\ArbeitsZeitPflegen.py", line 306, in DatumVerarb
            self.arbrec = self.abrdb.ZeitraumViaDatum(tmp)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          File "F:\Python\DRK-OV-SueWo\Abr_DB.py", line 500, in ZeitraumViaDatum
            sql += ' WHERE `von` <= "' + datum + '" AND `bis` >= "'
                   ~~~~~~~~~~~~~~~~~~~~^~~~~~~
        TypeError: can only concatenate str (not "PySide6.QtCore.QDate") to str
        von: 09:00:00
        09 00 00
        
        

        Ich habe keine Ahnung was da abgeht.
        Die Auffrufe DatumVerarb() und ZeitraumViaDatum() werden eigentlich im laufenden Modul am Anfang aufgerufen. db_connect ist ein Aufruf im Modul in ZeitraumViaDatum.
        Die Fehlermeldungen unter den Aufrufen sind nicht relevant.
        Mir geht es nur darum, das die aufgerufen werden.

        Selbst der in Einschluß in einem try/connect Block brachte keine Erkentnisse.
        Hat jemand so etwas schon mal gesehen oder dafür eine Erklärung?
        Gruß
        Karl-Heinz

        Pl45m4P Offline
        Pl45m4P Offline
        Pl45m4
        wrote on last edited by Pl45m4
        #3

        @kahemenne said in Wundersamer Aufruf von Modulen:

        Ich habe keine Ahnung was da abgeht.

        Das ist meist schlecht :)

        Die Fehlermeldungen unter den Aufrufen sind nicht relevant.

        Doch sind sie. Immer. Fehlermeldungen und Abstürze können und sollten nicht ignoriert werden. Das Programm läuft ja auch sonst nicht.
        An den Fehlermeldungen erkennt man was ungefähr das Problem ist oder kann es eingrenzen.

        Mir geht es nur darum, das die aufgerufen werden.

        Funktionen aufzurufen, wo man weiß, dass sie nicht 100% funktionieren bzw. erst halb implementiert sind, führt unweigerlich zum Crash...


        Zum eigentlichen Problem:
        Der Code-Ausschnitt oben zeigt nicht alle relevanten Stellen.
        Da wir den Rest der Module und des Codes nicht kennen, kann man auch nur (anhand der Fehlermeldung) spekulieren, was passiert.

        self.ui.arbzeiTEAnfang.setTime(QTime(int(von[:2]), int(von[3:5]), 0))
        

        wobei self.ui.arbzeiDEDatum ein QDateEdit ist

        Ist arbzeiTEAnfang auch ein QDateEdit?

        Funktioniert das noch? Denn der eigentliche Crash kommt ja in abr_DB db_connect aus Abr_DB.py.

        Dort versuchst du die SQLQuery zusammenzusetzen und einen Python string (str) mit einem datum (vom Typ PySide6.QtCore.QDate) zu verknüpfen, was nicht funktioniert, ohne das Datum als String zu interpretieren.
        Steht ja auch so in der Fehlermeldung.

        Hier in der Dokumentation steht wie es geht:
        (Ist @JonB oben ja auch schon drauf eingegangen)

        • https://doc.qt.io/qtforpython/PySide6/QtCore/QDate.html#PySide6.QtCore.PySide6.QtCore.QDate.toString

        Bevor irgendwas in eine Datenbank eingetragen wird, könnte man ggfs. noch prüfen (wenn auch nur zu Debug-Zwecken), ob alle QDate, QTime usw. valide sind und sie korrekt ge-"parsed" worden sind.

        Zum "Wundersamen Aufruf von Modulen":

         ArbZeiPfl DatumVerarb(self: <__main__.ArbZeiPfl(0x12f2fa2f500, name="ArbPflDialog") at 0x0000012F300C3740>)datum=None: PySide6.QtCore.QDate(2023, 1, 20)
         
         
         
         abr_DB ZeitraumViaDatum(self: <Abr_DB.abr_DB object at 0x0000012F32654A90>, datum: PySide6.QtCore.QDate(2023, 1, 20))
        

        Das scheinen print Ausgaben von Objekten zu sein, die irgendwo noch im Code stehen.
        Oder was genau erscheint dir an all dem so "wundersam"?


        If debugging is the process of removing software bugs, then programming must be the process of putting them in.

        ~E. W. Dijkstra

        K 1 Reply Last reply
        0
        • Pl45m4P Pl45m4

          @kahemenne said in Wundersamer Aufruf von Modulen:

          Ich habe keine Ahnung was da abgeht.

          Das ist meist schlecht :)

          Die Fehlermeldungen unter den Aufrufen sind nicht relevant.

          Doch sind sie. Immer. Fehlermeldungen und Abstürze können und sollten nicht ignoriert werden. Das Programm läuft ja auch sonst nicht.
          An den Fehlermeldungen erkennt man was ungefähr das Problem ist oder kann es eingrenzen.

          Mir geht es nur darum, das die aufgerufen werden.

          Funktionen aufzurufen, wo man weiß, dass sie nicht 100% funktionieren bzw. erst halb implementiert sind, führt unweigerlich zum Crash...


          Zum eigentlichen Problem:
          Der Code-Ausschnitt oben zeigt nicht alle relevanten Stellen.
          Da wir den Rest der Module und des Codes nicht kennen, kann man auch nur (anhand der Fehlermeldung) spekulieren, was passiert.

          self.ui.arbzeiTEAnfang.setTime(QTime(int(von[:2]), int(von[3:5]), 0))
          

          wobei self.ui.arbzeiDEDatum ein QDateEdit ist

          Ist arbzeiTEAnfang auch ein QDateEdit?

          Funktioniert das noch? Denn der eigentliche Crash kommt ja in abr_DB db_connect aus Abr_DB.py.

          Dort versuchst du die SQLQuery zusammenzusetzen und einen Python string (str) mit einem datum (vom Typ PySide6.QtCore.QDate) zu verknüpfen, was nicht funktioniert, ohne das Datum als String zu interpretieren.
          Steht ja auch so in der Fehlermeldung.

          Hier in der Dokumentation steht wie es geht:
          (Ist @JonB oben ja auch schon drauf eingegangen)

          • https://doc.qt.io/qtforpython/PySide6/QtCore/QDate.html#PySide6.QtCore.PySide6.QtCore.QDate.toString

          Bevor irgendwas in eine Datenbank eingetragen wird, könnte man ggfs. noch prüfen (wenn auch nur zu Debug-Zwecken), ob alle QDate, QTime usw. valide sind und sie korrekt ge-"parsed" worden sind.

          Zum "Wundersamen Aufruf von Modulen":

           ArbZeiPfl DatumVerarb(self: <__main__.ArbZeiPfl(0x12f2fa2f500, name="ArbPflDialog") at 0x0000012F300C3740>)datum=None: PySide6.QtCore.QDate(2023, 1, 20)
           
           
           
           abr_DB ZeitraumViaDatum(self: <Abr_DB.abr_DB object at 0x0000012F32654A90>, datum: PySide6.QtCore.QDate(2023, 1, 20))
          

          Das scheinen print Ausgaben von Objekten zu sein, die irgendwo noch im Code stehen.
          Oder was genau erscheint dir an all dem so "wundersam"?

          K Offline
          K Offline
          kahemenne
          wrote on last edited by
          #4

          Hallo @Pl45m4,
          es geht nicht darum das diese Aufrufe schief gehen.
          es geht darum das ich ein QDateEDIT.setDate aufrufe aber etwas ganz anderes wird aufgerufen. Wenn ich das setDate auskomentiere funktioniert alles andere so wie es soll.
          Ich verstehe nicht wie diese Aufrufe zustande kommen?
          Gruß
          Karl-Heinz

          Pl45m4P 1 Reply Last reply
          0
          • K kahemenne

            Hallo @Pl45m4,
            es geht nicht darum das diese Aufrufe schief gehen.
            es geht darum das ich ein QDateEDIT.setDate aufrufe aber etwas ganz anderes wird aufgerufen. Wenn ich das setDate auskomentiere funktioniert alles andere so wie es soll.
            Ich verstehe nicht wie diese Aufrufe zustande kommen?
            Gruß
            Karl-Heinz

            Pl45m4P Offline
            Pl45m4P Offline
            Pl45m4
            wrote on last edited by
            #5

            @kahemenne said in Wundersamer Aufruf von Modulen:

            es geht darum das ich ein QDateEDIT.setDate aufrufe aber etwas ganz anderes wird aufgerufen

            Um welchen "Aufruf" geht es denn?
            setDate macht auch nichts anderes als "setDate". Also daran kann es nicht liegen. Dann sind es Teile vom Code, die hier nicht zu sehen sind.


            If debugging is the process of removing software bugs, then programming must be the process of putting them in.

            ~E. W. Dijkstra

            K 1 Reply Last reply
            0
            • Pl45m4P Pl45m4

              @kahemenne said in Wundersamer Aufruf von Modulen:

              es geht darum das ich ein QDateEDIT.setDate aufrufe aber etwas ganz anderes wird aufgerufen

              Um welchen "Aufruf" geht es denn?
              setDate macht auch nichts anderes als "setDate". Also daran kann es nicht liegen. Dann sind es Teile vom Code, die hier nicht zu sehen sind.

              K Offline
              K Offline
              kahemenne
              wrote on last edited by
              #6

              Hallo allerseitz,
              ich bitte um Entschuldigung für meine Aufregung.
              Ich hatte eine Aufruf beim Signal Datum changed übersehen.
              Also alles zurück.
              Wer lesen kann ist klar im Vorteil.
              Bevor man sich über etwas wundert, erst mal alles kontrolieren.

              Gruß
              Karl-Heinz

              1 Reply Last reply
              1

              • Login

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