Announcement

Collapse
No announcement yet.

Automatisieren von Multiple Records

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Automatisieren von Multiple Records

    Hallo,
    da bin ich schon wieder. - So langsam kriege ich ein erstes Gefühl für scriptcase. Aber natürlich stellen sich immer wieder neue Fragen.
    Ich versuche gerade einen Stundenzettel als Multiple Records Form zu erstellen.
    Darin sind entsprechend 7 Reihen, die bei einem Neueintrag automatisch vorgefüllt werden sollen.
    Also beispielsweise wählt man die Kalenderwoche aus (wahrscheinlich über ein Global vordefiniert) und die Form füllt sich mit den entsprechenden Tagen, oder (abgefragt aus einer separaten Datei) Voreinstellungen, ob ein Projekttag frei war, oder nicht (soll aber änderbar bleiben).
    Wie kann ich die einzelnen Zeilen im Formular ansprechen, um sie so oder ähnlich über ein script zu füllen?

    Ich bin gespannt, ob das geht.

  • #2
    Fuer jedes Record bekommst do ein event.
    Um alles besser zu verstehen stelle ich folgendes vor um alles besser zu verstehen.
    In event rufe entweder ein stueck php code and wo eine spalte Kommentar in ein log file geschrieben wirdt,
    oder mach einfach ein: echo "OnBeginInsert"; oder echo "OnValidate"; usw auf jedem event.
    Start das Programm und guck an was da dann so passiert. Dass hilft um alles besser zu verstehen.

    Comment


    • #3
      Hi rr, dank u wel für die schnell Antwort.
      Ich habe mir den event für MYSQL angeguckt, glaube aber, das hilft mir nicht weiter.
      Es sollen noch gar keine Daten übertragen werden. Vielmehr geht es darum die 'Initial Values' der einzelnen Felder als Startvorgaben individuell setzen zu können ohne dass schon ein Record entsteht.

      Als Beispiel hier ein Bild des Formulars:

      ATTACH=CONFIG]2108[/ATTACH]

      Die Presets des Status hängen vom Tag ab und werden separat abgerufen, das Tagesdatum errechnet und auch die Startzeiten sollen als Presets aus einer separaten Tabelle abgerufen werden.
      Wenn ich einen einzelnen Datensatz anlege, kann ich die Felder einfach über php ansprechen, aber wie mache ich das, wenn ich mehrere Zeilen von Feldern habe?

      Ich habe es einfach mal aufs Geratewohl so probiert:

      for($count = 0; $count < 7; $count++)
      {
      {Bemerkungen[$count]} = $count;
      }

      Aber das fühlt mir die Zeilen leider auch nicht... Lasse ich in der Schleife [$count] weg, erhalte ich in allen Feldern die 6, also nur den letzten Wert.
      Attached Files

      Comment


      • #4
        ein Stückchen weiter

        Ok, ich bin ein Stückchen weiter, da ich verstanden habe dass sich onLoadRecord auf den jeweiligen Datensatz bezieht.
        Damit kann ich das Datum schon einmal gut ausfüllen lassen.
        Nun möchte ich noch aus einer weiteren Tabelle Statusabfragen machen.

        Also der Status von Tag 1 soll aus einer anderen Datenbank-Tabelle als Wertvorschlag gelesen werden, die auch über ein Datumsfeld und ein Statusfeld verfügt, dann Tag 2 und so weiter.

        in onApplicationinit habe ich dafür dieses Global Array aufgesetzt.

        [Kalenderdaten] = mysql_query("SELECT
        FPID,
        PID,
        Status,
        Datum,
        Beginn,
        Ende,
        Bemerkung
        FROM
        Kalender
        WHERE
        (FPID = '2') AND
        (PID = '0') AND
        (Status = 'Schedule') AND
        (Datum >= CURRENT_DATE() - INTERVAL 7 DAY) AND
        (Datum <= CURRENT_DATE() + INTERVAL 7 DAY)
        ORDER BY
        Datum ");

        Die Daten davon will ich dann pro Record auslesen.
        Allerdings fängt es hier schon an: Die Datenbankverbindung, die scriptcase für die App aufgebaut hat, gilt hier nicht.
        Und selbst wenn ich eine eigene Verbindung herstelle und die Abfrage im SQL-Builder Ergebnisse erzeugt, bleibt das Array leer.
        Irgendwo hakt es bei mir im Kopf.

        Jemand eine Idee?

        Comment


        • #5
          Das Array musst Du in onScriptInit füllen.

          Code:
          [kalenderdaten] = array();
          $my_query = "SELECT FPID, PID, Status, Datum, Beginn, Ende, Bemerkung
                                    FROM Kalender
                                    WHERE (FPID = '2') AND (PID = '0') AND (Status = 'Schedule') AND (Datum >= CURRENT_DATE() - INTERVAL 7 DAY) AND (Datum <= CURRENT_DATE() + INTERVAL 7 DAY)
                                    ORDER BY Datum ";
          
          sc_lookup(ds,$my_query); //damit hast Du schon mal das Array
          if($ds === false)
          {
              echo "Mist! DB-Fehler";
          }
          else
          {   
              [kalenderdaten] = $ds; /mach mer's global;
          }
          Damit sollte es dann gehen.

          Du kannst aber auch pro Datensatz (onLoadRecord) eine Abrage machen und Dir nur die Daten für diesen Tag holen.
          Könnte dann so aussehen.

          Code:
          $my_query = "SELECT FPID, PID, Status, Datum, Beginn, Ende, Bemerkung
                                    FROM Kalender
                                    WHERE (FPID = '2') AND (PID = '0') AND (Status = 'Schedule') AND (Datum = '{datumsfeld}')";
          
          sc_lookup(ds,$my_query); 
          if($ds === false)
          {
              echo "Mist! DB-Fehler";
          }
          else
          {   
              {status} = {ds[0][2]};
              {bemerkung} = {ds[0][3]};
              usw...
          }
          Sollte ebenfalls funktionieren.

          jsb

          Comment


          • #6
            Vielen DAnk jsbinca,
            ich habe mich dann tatsächlich auch für die zweite Variante entschieden. Ich dachte zuerst, dass ich mit der ersten Variante Abfragezeit spare, aber die verbrauche ich dann doch wieder für die intensivere Analyse im Anschluss.
            Jetzt kämpfe ich mit der Zeitberechnung, aber das schreibe ich besser in einen neuen Thread.
            Danke jedenfalls für die schnelle Hilfe.

            Comment

            Working...
            X