0

Fehlende Nummern per Join ausgeben

Hallo zusammen,

ich würde gern ein FX mit den Fehlenden Nummern anzeigen lassen. Hierbei sollen immer die Nummern des betreffenden Jahres (Datum) über join ausgegeben werden. Komm aber partu nicht weiter.

let Jahr := format(Datum, "YY");
let Wo := ((select Telefonieren where substr(Nummer, 4, 2) = Jahr) order by Nummer).substr(Nummer, 0, 3);
let Ist := concat(Wo);
let letzte := number(last(Wo));
for x from 1 to letzte do
let form := format(x, "000");
if index(Ist, form) < 0 then form + "/" + Jahr end
end

Format für Nummer ist: 000/YY (fängt bei neuem Jahr immer mit 000 an und zählt dann hoch)

Datum ist im Datensatz immer vermerkt (DD:MM:YY) 

9 Antworten

null
    • Michi.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hat keiner ne Idee? 

    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Idee:

    *

    let jahrArray := sort(unique((select Telefonieren).substr(Nummer, 4, 2)));

    let result := for j in jahrArray do

    let allNr := concat((select Telefonieren)[substr(Nummer, 4, 2) = j].substr(Nummer, 0, 3));

    let maxNr := max((select Telefonieren)[substr(Nummer, 4, 2) = j].number(substr(Nummer, 0, 3)));

    let reihe := for i in range(1, maxNr + 1) do

    lpad(text(i), 3, "0")

    end;

    concat(for i in reihe do

    if not contains(allNr, text(i)) then

    i + "/" + j

    end

    end)

    end;

    join(split(replace(concat(result), " ", ""), ","), "

    ")

     *

    • Michi.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Guten morgen,

    perfekt danke dir. Hab nur noch das Datum mit eingefügt um nur das betrefende Jahr anzeigen zu lassen.

    let Jahr := format(Datum, "YY");
    let jahrArray := sort(unique((select Telefonieren where substr(Nummer, 4, 2) = Jahr).substr(Nummer, 4, 2)));
    let result := for j in jahrArray do
    let allNr := concat((select Telefonieren)[substr(Nummer, 4, 2) = j].substr(Nummer, 0, 3));
    let maxNr := max((select Telefonieren)[substr(Nummer, 4, 2) = j].number(substr(Nummer, 0, 3)));
    let reihe := for i in range(1, maxNr + 1) do
    lpad(text(i), 3, "0")
    end;
    concat(for i in reihe do
    if not contains(allNr, text(i)) then
    i + "/" + j
    end
    end)
    end;
    join(split(replace(concat(result), " ", ""), ","), "
    ")

    • Michi.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Blöde frage, 

    Kannst mir eventuell die join Zeile erklären? Abschreiben ist das eine, jedoch verstehen das andere , vor allem  bessere.

    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Michi. Die Zeile ist nicht rühmlich, weil ein concat zuviel, weil unnütz. Von innen nach aussen: result ist das Ergebnis als String (hier lag ich falsch und dachte es wäre noch ein Array), durch replace konnte ich ein paar Leerzeichen entfernen (die bei join ab der zweiten Zeile am Anfang standen), dann mit split wieder in ein Array gewandelt und durch join angezeigt mit Zeilenumbruch. Das fehlen jeglicher Eleganz wird durch das Ergebnis hoffentlich wettgemacht. Wenn Dich die Leerzeichen nicht stören wäre es ausreichend:

    join(split(result, ","), "
    ")

    schicker ist:

    join(split(replace(result, " ", ""), ","), "
    ")

    Gruß Mirko

    • Michi.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Danke dir Miko,,

    Das ergebniss passt. Das ist das  a und o. Hab nur noch ein minimum in range eingefügt. 

    • Michi.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Noch ne blöde Frage, 

    Das  hier hat natürlich nichts mir telefonieren zum Tun.  Es bezieht sich auf rechnungsnummern die als Rückversicherung auf Vollständigkeit geprüft werden. Das minimum ist für die erste eingegebene nummer,  da ich keine Lust habe aus dem laufenden Jahr alle Rechnungen  hinzuzufügen.  Nun meine Frage. Ist es eigentlich möglich den admin auszuschalten wenn ich die DB weiter geb? Bekomm dafür nichts,  jedoch ist mir die Gefahr zu groß das was gelöscht oder verändert wird. 

    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hi Michi. Bei dieser Frage, wenn ich sie denn überhaupt richtig verstanden habe, wäre ich kein Experte. Meines Wissens kannst Du den Adminstatus, wenn Du eine DB weitergibst, nicht ausschalten. Ich verstehe auch nicht, wofür das gut sein soll, die DB weiterzugeben und nicht nur eine Kopie.

    • Michi.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hab sie für nen freund gebaut, will da auch keinen einblick haben. Hab es aber jetzt selbst raus gefunden, man muss die DB schützen, erst dann kann man mit dem Passwort den Admin-modus aktivieren.

    Hab halt angst das die flinken und am anfang unwissenden finger was kaput machen. 

    😎

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 9Antworten
  • 217Ansichten