0

Skript beschleunigen

Hallo zusammen,

wie kann man das skript besser bauen, da es lange braucht? Ist für eine Ansicht. Datensätze ca 700 aufsteigend.

let aa := Jahr;
let bb := KW;
do as server
    let cc := date(number(aa), 1, 4) - weekday(date(number(aa), 1, 4)) + number(bb) * 7 - 1;
    let gg := date(number(aa), 1, 4) - weekday(date(number(aa), 1, 4)) + number(bb) * 7 + 6;
    select 'Aufträge' where date(Kalenderdatum) = date(cc) or date(Kalenderdatum) < today() or date(Kalenderdatum) = date(gg)
end

5 Antworten

null
    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hi Michi. Ich hab mir mal Dein Script heute angeschaut. Ganz schlau werde ich daraus nicht. Du willst alle Datensätze anzeigen die kleiner als today() sind und noch zwei Datensätze extra deren Datum Du bei cc und bei gg deklarierst. Also wenn das so sein soll, dann ist hier nicht so viel zu optimieren. Ich würde nur die Abfragereihenfolge ändern (wie unten) und mal vergleichen, wenn Du "do as server" wegläßt, weil es sein kann, dass es bei einer Ansicht nicht so optimal ist. Außerdem würde sich vielleicht ein Versuch mit "do as transaction" lohnen, wenn Du in einer App (Mac, IPhone,Android) arbeitest. Ob das die Laufzeit entscheidend verkürzt weiß ich nicht. Mirko

    ...

    select 'Aufträge' where date(Kalenderdatum) = date(cc) or date(Kalenderdatum) = date(gg) or date(Kalenderdatum) < today()

    ...

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko danke dir. Es zeigt mir die kunden an welche noch nicht terminiert sind aus der vergangenheit plus diejenigen welche für die folgewoche zu verplanen sind. Das klappte alles soweit. 

      Bin nur fast blöde geworden beim fehler suchen, da ja Ansichten eigentlich meistens schnell angezeigt werden.

      den "fehler" warum es so lange gedauert hat bis zur Anzeige hab ich gefunden. Hatte mir ein fx in der Ansicht mit anzeigen lassen. Das wiederum über eine for schleife aus einer anderen Tabelle gefüllt wurde. Blöd ist nur wenn es nicht angezeigt wird fehlen mir immer Infos auf den ersten blick,  die bekomm ich jetzt immer erst wenn ich in den Datensatz gehe.

      Werde mir den Inhalt vom fx aber vielleicht bei änderung in ein textfeld schreiben lassen, muss halt dann jedesmal bei änderung gelöscht und neu beschrieben werden. So kann ich es mit anzeigen lassen. Ohne auf eine andere Tabelle zugreifen zu müssen.

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko kannst du mir helfen, wie ich das einmalig für alle Datensätze machen kann?

      Skript zum beschreiben eine Text Feldes im Datensatz funktioniert.

      let me := 'Aufträge';
          'Aufträge'.('Info Text' := null);
          'Aufträge'.('Info Text' := join(for i in (select Historie where 'Aufträge' = me and 'diesen Eintrag hervorheben ????' = true and 'Aktion oder Info text eingeben') order by -'Änderungsdatum' do
                  "(  " + i.'Änderungsdatum' + " > " + i.'Aktion oder Info text eingeben' + "  )"
              end, "
      "));

      Wie bekomm ich das für alle in der DB einmalig hin?

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Michi. Also gefühlt und ungeprüft stelle ich es mir so vor. Wenn es aber nicht klappt, bräuchte ich wahrscheinlich eine leere TestDB an level1(at)online.de. Habe aber nicht gleich Zeit. Mirko

    for j in 'Aufträge' do
           j.('Info Text' := join(
                for i in (select Historie where 'Aufträge' = j and 'diesen Eintrag hervorheben ????' = true and 'Aktion oder Info text eingeben') order by -'Änderungsdatum' do
                        "(  " + i.'Änderungsdatum' + " > " + i.'Aktion oder Info text eingeben' + "  )"
                    end, "
                "));
    end
    
      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko Perfekt 👍Danke dir.

Content aside

  • vor 1 JahrZuletzt aktiv
  • 5Antworten
  • 87Ansichten
  • 2 Folge bereits