0

Mehrfachauswahl für Nutzerzuteilung

Hallo zusammen 

Kann mir jemand bei folgendem helfen?

Ich habe ein Lager mit Produkten und Nutzern. Nun möchte ich gerne z.B. von dem Gleichen Produkt jeweils 1 Stück an verschiedene Benutzer ausgeben. Ich habe dies jetzt mit einem Beziehungsfeld zu Nutzer gemacht. Ich müsste aber diesen Vorgang nun 5 Mal wiederholen und das Produkt jedem Nutzer zuteilen. Ich müsste also ein Mehrfachauswahl-Feld haben damit ich die die Nutzer zusammen anwählen kann und so das Produkt zum Nutzer zugeordnet werden kann.

Was ist die Beste Lösung hierfür?

Besten Dank für Eure Hilfe

13 Antworten

null
    • Developer by Smartplanung
    • smartplanung
    • vor 5 Monaten
    • Gemeldet - anzeigen

    Bei Material/Lagerverwaltungen würde ich eine weitere Tabelle anlegen, welche als n:n dient. Darüber kann man dann 1:n auf das Produkt und 1:n auf den Nutzer verknüpfen.

    Also:

    Produkte <-- Warenverkehr --> Nutzer

    Im Warenverkehr kann man dann auch Datum, Mengen, aktuelle Preise, usw. festhalten. Darüber kann man dann auch den Wareneingang festhalten.

      • Clive
      • vor 5 Monaten
      • Gemeldet - anzeigen

       Besten Dank für deine schnelle Antwort. Jetzt habe ich eine Tabelle mit Nutzern und eine Tabelle mit Material gemacht. Als Verbindung nutzt mir die Tabelle Ausgabe.

      Dann muss ich wohl da was ändern...

    • Ninox-Professional
    • planoxpro
    • vor 5 Monaten
    • Gemeldet - anzeigen

    Eine mögliche Lösung hängt natürlich auch davon ab, welche Aktionen durch die Zuordnung der Nutzer ausgelöst werden sollen. Wenn aber immer wieder mal die selbe Menge an verschiedene Nutzer ausgegeben werden soll, könnte man mit einem Dynamischen Mehrfachauswahlfeld und einem Button arbeiten. Also den Artikel (1) und die Nutzer (2) auswählen, Menge eingeben (3) und dann mit dem Button (4) in einer Schleife die Verarbeitung vornehmen (z. B. Lagerbuchung erstellen und mit dem jeweiligen Nutzer verknüpfen). Es wäre dann auch egal, welche und wieviele Nutzer ausgewählt wurden. Im Screenshot sind beispielhaft die Einträge einer Tabelle namens 'Lagerbuchungen' in einer Ansicht dargestellt (5).

    Der Code für den Button in obigem Beispiel könnte in einfachster Form so aussehen:

    let me := this;
    let myNutzer := numbers(Nutzer);
    for i in myNutzer do
        let newLB := (create Lagerbewegungen);
        newLB.(
            Artikel := me.Artikel;
            Nutzer := record(Nutzer,i);
            Menge := me.Menge * -1;
            Wann := now()
        )
    end
      • Clive
      • vor 5 Monaten
      • Gemeldet - anzeigen

       Aktuell habe ich einen Butten zur Ausführung mit dem folgenden Code:

      let aktN := Nr;
      let al := (select Ausgabe_Liste where Ausgabe = aktN);
      for i in al do
          if i.'Einzelartikel auswählen' = null then
              let ef := (select Einzelerfassung where Material = i.Artikel and Nutzer != aktN.'Ausgabe an' and 'Bestandteil von' = null);
              let nj := (create Journal);
              for e from 0 to number(Ausgabe_Liste.'Stückzahl') do
                  item(ef, e).(Nutzer := aktN.'Ausgabe an');
                  nj.(Einzelerfassung := item(ef, e));
                  nj.(Zeitstempel := now() + ", " + userName());
                  nj.(Ereignis := "Artikel ausgegeben an " + aktN.'Ausgabe an'.Bezeichnug);
                  nj.(logged := true)
              end
          else
              let ef := (select Einzelerfassung where Nr = number(i.'Einzelartikel auswählen'));
              let nj := (create Journal);
              ef.(Nutzer := aktN.'Ausgabe an');
              nj.(Einzelerfassung := first(ef));
              nj.(Zeitstempel := now() + ", " + userName());
              nj.(Ereignis := "Artikel ausgegeben an " + aktN.'Ausgabe an'.Bezeichnug);
              nj.(logged := true)
          end
      end;
      importFile(this, printAndSaveRecord(this, "Ausgabe"), Datum + "_Ausgabe_" + 'Ausgabe an'.Bezeichnug + ".pdf");
      Log := "ausgeführt " + now() + ", " + userName();
      'ausgeführt' := true;
      closeAllRecords();
      openRecord(record(Dashboard,1))

      • Ninox-Professional
      • planoxpro
      • vor 5 Monaten
      • Gemeldet - anzeigen

      Ok, und wo genau liegt nun dein Problem?

      • Clive
      • vor 5 Monaten
      • Gemeldet - anzeigen

       Ich kriegs nicht hin zum ein dynamisches Mehrfachauswahlfeld zu generieren, die sich auf die Namen der Nutzer bezieht

      • Ninox-Professional
      • planoxpro
      • vor 5 Monaten
      • Gemeldet - anzeigen

      Clive 

      Benutzerspezifische Funktionen wie userName() beziehen sich immer auf den aktuellen Ninox-User, also quasi den Account. Auch im ninox-eigenen Auswahlfeld vom Typ 'Nutzer' lässt sich immer nur 1 User auswählen. Wenn du also mehrere Nutzer/Mitarbeiter auswählen und verarbeiten willst, dann solltest du das funktional trennen und eine eigene Tabelle für die Nutzer/Mitarbeiter erstellen. Das hätte zudem den Vorteil, dass sich auch Mitarbeiter/Personen als Empfänger der Warenausgabe angeben ließen, die über keinen eigenen Ninox-Account verfügen.

      In meinem Beispiel oben ist 'Nutzer' auch eine eigene Tabelle, die rein technisch gesehen erst mal nichts mit dem Ninox-User zu tun hat. So lassen sich die Einträge dann in dem Dynamischen Mehrfachauswahlfeld anzeigen.

      Das heißt, ich würde eine Tabelle für die Mitarbeiter/Personen anlegen, die bei der Warenausgabe berücksichtigt werden sollen. Und dann in der Lager-Tabelle über "Felder bearbeiten" ein "Mehrfachauswahl (dynamisch)" erstellen und dort bei "Dynamischer Wert" die Nutzer-/Mitarbeiter-Tabelle eintragen, z. B.:

      select Nutzer

      Oder wie die Tabelle bei dir dann eben heißt. In meinem Beispiel-Code oben lese ich mit numbers(Nutzer) die gewählten Einträge aus und verarbeite sie in der for-Schleife.

      • Clive
      • vor 5 Monaten
      • Gemeldet - anzeigen

       Dies habe ich getestet, bekomme aber lediglich die Zahlen der Tabelle

      • Developer by Smartplanung
      • smartplanung
      • vor 5 Monaten
      • Gemeldet - anzeigen

       Du musst in den Einstellungen vom Mehrfachauswahlfeld auch angeben, was er Dir anzeigen soll. Schau dort mal unter "Name des dynamischen Werts". Ansonsten werden nur die RecordIDs angezeigt.

      • Clive
      • vor 5 Monaten
      • Gemeldet - anzeigen

       Irgendwie stehe ich total auf dem Schlauch.... Es klappt nicht...😪

      • Developer by Smartplanung
      • smartplanung
      • vor 5 Monaten
      • Gemeldet - anzeigen

      Dynamischer Wert = select Nutzer

      Name des dynamischen Werts (eins darunter) = Name

      • Clive
      • vor 5 Monaten
      • Gemeldet - anzeigen

       Perfekt so hat es funktioniert. Jedoch war das vorherige Feld ein Beziehungsfeld und mit dem neuen wird mir das gebuchte Material nicht angezeigt...

      • Clive
      • vor 5 Monaten
      • Gemeldet - anzeigen

       Ich muss mich da nochmals reinknien... War eine eher komplexere Datenbank, für mich. 

      Wenn du Lust hast, kannst du sie gerne mal anschauen. Vielleicht habe ich auch einen komplett falschen Aufbau gemacht und diese Idee funktioniert so nicht.

      Ich danke dir aber für deine Geduld🙂

Content aside

  • vor 5 MonatenZuletzt aktiv
  • 13Antworten
  • 62Ansichten
  • 3 Folge bereits