6 Antworten Neueste Antwort am May 31, 2017 10:50 AM von erolst

    Hole (AnzahlGefundeneDatensätze) in Schleife zählen

    olivervollmer

      Hallo,
      folgende Situation:
      Ich habe eine Kontaktliste. Ich wähle unterschiedliche Kontakte aus und speichere die PK in einem globalen Feld.
      Danach habe ich ein Script auf einer Schaltfläche, das in eine neue Tabelle geht und die Werte per Schleife der Tabelle hinzufügt.
      Bevor ich diese Werte in die Tabelle schreibe prüfe ich, ob dieser Wert schon in der Tabelle vorhanden ist.
      Wenn ja, erstelle ich keinen neuen Datensatz.

      Jetzt möchte ich die Anzahl der NICHT erstellten neuen Datensätze zählen.
      Wie kann ich mir diese Anzahl in einer Variable speichern.
      Anbei mein kleines Script, das ich verwende. Wahrscheinlich gibt es einen eleganteren und einfacheren Weg diese Aufgabe zu erledigen.

      Über Tipps und Ratschläge, wie man so etwas besser machen kann, freue ich mich sehr.

       

      AnwenderAbbruchZulassen setzen [ Ein ]

      Fehleraufzeichnung setzen [ Ein ]

           Variable setzen [ $$pkFav ; Wert: Auswahl_FAVORITEN::ID ]

           Variable setzen [ $$FavName ; Wert: Auswahl_FAVORITEN::Listenname ]

      Fenster schließen [ Name: "Favoritenliste auswählen" ; Aktuelle Datei ]

      Gehe zu Layout [ “FAVORITEN_kontakte” (FAVORITEN_kontakte) ]

      Alle Datensätze anzeigen

           Variable setzen [ $liste ; Wert: KONTAKTE::gSelectedContacts // Einlesen der Liste in eine Variable ]

           Variable setzen [ $anz ; Wert: ElementeAnzahl ( $liste ) // Anzahl der Werte in der Liste ]

      Ergebnismenge suchen [ Wiederherstellen ]

      Schleife (Anfang)

             Variable setzen [ $i ; Wert: $i + 1 // Zähler ( wird immer um 1 erhöht ) ]

             Variable setzen [ $zeile ; Wert: HoleWert ( $liste ; $i )  // i. Wert aus der Liste entnehmen und in Variable speichern ]

             Ergebnismenge einschränken [ Wiederherstellen ]

        Wenn [ Hole ( AnzahlGefundeneDatensätze ) = 0 ]

             Alle Datensätze anzeigen

             Gehe zu Datens./Abfrage/Seite [ Erste(r) ]

             Neuer Datensatz/Abfrage

             Feldwert setzen [ FAVORITEN_kontakte::IDKONTAKTLISTE ; $$idFav ]

             Feldwert setzen [ FAVORITEN_kontakte::IDKONTAKT ; $zeile ]

        Ende (wenn)

      Verlasse Schleife wenn [ LiesAlsZahl ( $i ) ≥  LiesAlsZahl ( $anz ) ]

      Schleife (Ende)

      Alle Datensätze anzeigen

      Gehe zu Layout [ “KONTAKTLISTE” (KONTAKTE) ]

      Formatierungsleiste zulassen [ Ein ]

      Menüleiste ein-/ausblenden [ Einblenden ]

      Werkzeugleisten ein-/ausblenden [ Einblenden ]

      Textlineal ein-/ausblenden [ Einblenden ]

           Feldwert setzen [ KONTAKTE::gFavoritenname ; "" ]

           Feldwert setzen [ KONTAKTE::gSelectedContacts ; "" ]

      Eigenes Dialogfeld anzeigen [ "Favoriten gespeichert" ; "Ihre Kontaktauswahl wurde erfolgreich in die Liste " & $$FavName & " gespeichert." ]

      Aktuelles Script verlassen [ Textergebnis:    ]

        • 1. Re: Hole (AnzahlGefundeneDatensätze) in Schleife zählen
          erolst

          Wow, das ist ja noch länger als die andere Version ... 

           

          Ich habe dir im englischsprachigen Forum ein Beispiel-Skript geschrieben.

          • 2. Re: Hole (AnzahlGefundeneDatensätze) in Schleife zählen
            olivervollmer

            Ja, verdammt hätte ich im englischen auch so machen sollen   

            Habe das Script eingebaut, jedoch schreibt er die Datensätze nicht in die Tabelle.
            Habe da noch einen Fehler...

             

            Versuche erstmal zu verstehen was du da für ein script geschrieben hast, schon beeindruckend.

            Ich bin leider nicht der Entwickler, um das gleich (ggf. überhaupt) nachvollziehen zu können.
            Wie kommt man auf so einen Lösungsweg ?

            Ich werde es mir nochmal genau ansehen und mich dann nochmal hier melden mit einem Ergebnis.

            Jetzt ist es leider zu spät dafür.


            Vielen Dank vorab für Deine Hilfe.

            • 3. Re: Hole (AnzahlGefundeneDatensätze) in Schleife zählen
              olivervollmer

              Script funktioniert tadellos!

              Nur am Ende des scripts möchte ich ein Dialogfeld anzeigen, das die Anzahl der NICHT erstellten Datensätze als Info ausgibt. Also wieviele Einträge waren bereits vorhanden.

              Die Variable $newCount liefert das nicht.

              Habe schon mal danach gesucht, jedoch habe ich nur die MBS Funktion List.unequals gefunden. Habe aber kein MBS  

              • 4. Re: Hole (AnzahlGefundeneDatensätze) in Schleife zählen
                erolst

                Da gibt es den Block

                 

                If [ not IsEmpty ( Filtervalues ...]

                  do stuff

                End if

                 

                Füge in diesem Block – also zwischen If und End if – die Zeile

                 

                Set Variable [ $createdCount ; $createdCount 1 ]

                 

                ein. Du kannst dann am Ende etwas in dieser Richtung machen:

                 

                Set Variable [ $duplicateCount ; $newCount - $createdCount ]

                If [ $duplicateCount ]

                  Show Custom Dialog [ "Titel" ; Let ( n = $duplicateCount ; n & Case ( n = 1 ; " Datensatz" ; " Datensätze" ) & " wurden nicht als Favoriten angelegt, da sie bereits Favoriten sind." ]

                Else

                  Show Custom Dialog [ "Titel" ; Let ( n = $newCount ; Case ( n = 1 ; "Der ausgewählte Kontakt wurde als Favorit gespeichert." ; "Die " & n & " ausgewählten Kontakte wurden als Favoriten gespeichert." ]

                End if

                1 von 1 Personen fanden dies hilfreich
                • 5. Re: Hole (AnzahlGefundeneDatensätze) in Schleife zählen
                  olivervollmer

                  Ja, nun ist erstmal alles gut !!
                  Script funktioniert, ich musste nur

                   

                  Set Variable [ $createdCount ; $createdCount 1 ]
                  umändern in

                  Set Variable [ $createdCount ; $createdCount + 1 ]

                   

                  Es funktioniert, hoffe es war auch so gedacht.

                   

                   

                  Vielen, vielen Dank !!

                  • 6. Re: Hole (AnzahlGefundeneDatensätze) in Schleife zählen
                    erolst

                    olivervollmer wrote:

                    Set Variable [ $createdCount ; $createdCount + 1 ]

                     

                    Es funktioniert, hoffe es war auch so gedacht.

                    Wenn es funktioniert, immer. Ich hab das "aus der Lameng" am iPad geschrieben, halt ohne Syntax-Check ...

                     

                    Show Custom Dialog [ "Titel" ; $duplicateCount & Case ( $duplicateCount = 1 ; " Kontakt wurde nicht als Favorit angelegt, da er bereits ein Favorit ist." ; " Datensätze wurden nicht als Favoriten angelegt, da sie bereits Favoriten sind." ) ]

                    Ändere den Text im ersten Dialogfenster wie o.a.. Die beiden Sätze sind so unterschiedlich, dass man auf Klein-Klein verzichten sollte.

                     

                    olivervollmer wrote:

                    Vielen, vielen Dank !!

                    Gerne. Schöne Pfingsten!