Home Forum Allgemeines Allgemeines zu Nuclos Subform zählen

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 16)
  • Autor
    Beiträge
  • #9315
    K. Struckmeier
    Teilnehmer

    Hallo,
    wie mache ich es, dass wenn ich in ein Subform 3 Einträge gemacht habe, diese gezählt werden damit ich diese Zahl dann weiter verwenden kann?

    #9325
    Ramin Goettlich
    Teilnehmer

    .get().size()

    #9329
    K. Struckmeier
    Teilnehmer

    Danke, das werde ich dann gleich mal ausprobieren 🙂

    #9334
    K. Struckmeier
    Teilnehmer

    Gibt es einen Code der ein Eingabefeld ausblendet bzw. einblendet?

    Also es soll so sein dass wenn ich auf ein Checkfeld klicke und es true ist, soll eine Textbearbeitungsfeld angezeigt/sichtbar werden, und wenn es nicht angeklickt ist (false) soll das Textbearbeitungsfeld nicht angezeigt/ausgeblendet werden.

    #9335
    Nick Röder
    Teilnehmer

    Nein das geht nicht. Sie können im Layouteditor beim entsprechenden Feld (Eigenschaft: Aktiv (dynamisch)) mittels Groovy nur einstellen ob es aktiv ist oder nicht.

    #9336
    K. Struckmeier
    Teilnehmer

    Ok probiere ich mal, danke

    Hier habe ich noch ein Problem, mit dem oberem Code:

    Das ist meine Regel, wenn ich versuche sie abzuspeichern kommt die Meldung dass der Klassenname nicht gelesen worden konnte. Ich denke es liegt daran, wie ich das Subform im Code eingefügt habe:

    package org.nuclet.businessentity;
    import org.nuclos.api.provider.BusinessObjectProvider;
    import org.nuclos.api.rule.InsertRule;
    import org.nuclos.api.context.InsertContext;
    import org.nuclos.api.annotation.Rule;
    import org.nuclos.api.exception.BusinessException;

    /** @name
    * @description
    * @usage
    * @change
    */
    @Rule(name=“verfuegbar“, description=“addition“)
    public class Verfuegbar implements InsertRule {

    @Override
    public void insert(InsertContext context) throws BusinessException {

    //das ist das Haupt BO
    Wareneingang wareneingang = context.getBusinessObject(Wareneingang.class);
    //

    //das ist das Suform
    Bestellung bestellung = context.getBusinessObject(Bestellung.class);
    //

    Artikel artikel = wareneingang.getArtikelBO();

    int sn;
    int a,b,c,d,e,f,g;

    sn=wareneingang.getSeriennummer();
    Boolean fertig=wareneingang.getSeriennummerfertig();

    if(sn==0){wareneingang.setSerie(„ok“);}

    if(fertig==true){wareneingang.setSerie(„ok“);}
    //hier wurde geändert
    if(sn==1){b=wareneingang.getbestellung().size();
    //bis hier

    a=artikel.getVerfuegbar();
    e=artikel.getBestellt();
    if (sn==0){
    b=wareneingang.getMenge();}
    f=artikel.getGverf();
    c=a+b;
    d=e-b;
    g=c+d;

    artikel.setBestellt(d);
    artikel.setVerfuegbar(c);
    artikel.setGverf(g);
    BusinessObjectProvider.update(artikel);

    }
    }

    #9340
    Nick Röder
    Teilnehmer

    Das Subform müssen Sie sich aus dem BO Wareneingang holen.

    List lst Bestellung = wareneingang.getBestellung();

    dann per for schleife Durchiterieren.

    for (Bestellung bo Bestellung : lst Bestellung) {
    … jetzt bekommen Sie dann alle Bestellungen der Reihe nach, sie brauchen kein Update auf diese Objekte durchführen, das passiert über den Kontext des Wareneingangs
    }

    hier noch ein entsprechendes Beispiel aus dem Wiki
    http://wiki.nuclos.de/pages/viewpage.action?pageId=819821

    #9341
    K. Struckmeier
    Teilnehmer

    Wie schreibt man da Regeln?
    Im Layout, wenn ich das Feld dynamisch mache?

    #9345
    Nick Röder
    Teilnehmer

    Mit Groovy. Beispiel steht im Wiki

    #9347
    K. Struckmeier
    Teilnehmer

    Und dann erhalte ich ein Integer den ich dann weiter benutzen kann?
    Oder brauche ich Ihren Code und den Code von nuclosian (Ihr Kollege)?

    #9348
    Nick Röder
    Teilnehmer

    In Ihrem Thread sind ja drei Fragen Fragen.

    1. Frage: Wie deaktiviere (unsichtbar) ich ein Feld. Das geht mit Groovy.
    2. Frage: Wie bekomme ich die Anzahl der Datensätze im Subform. Mit size() auf eine Liste
    3. Wie berechne ich Werte in einem Subform. Das geht mit meinem Beispiel von oben. Sie erhalten in der For-Schleife nur die einzelnen Bestellungen und können dann auf deren Felder zugreifen. Und wenn gewünscht addieren etc.

    #9349
    K. Struckmeier
    Teilnehmer

    ja, danke für die Zusammenfassung. Zu Frage 2: Ich habe ja oben meine Regel gepostet. Da habe ich ja den Befehl „size()“ benutzt, aber dann kam ja die Fehlermeldung. Frage 4 ist dann, wie benutze ich diesen Befehl richtig.

    #9350
    Nick Röder
    Teilnehmer

    Sie müssen durch die Elemente des Subforms iterieren. Das machen Sie mit

    for (Bestellung boBestellung : lstBestellung) {
    … jetzt bekommen Sie dann alle Bestellungen der Reihe nach, sie brauchen kein Update auf diese Objekte durchführen, das passiert über den Kontext des Wareneingangs
    }

    nicht über den Context.

    Bei der Fehlermeldung sieht es danach aus, dass in Ihrem Code eine Klammer fehlt.

    #9351
    K. Struckmeier
    Teilnehmer

    Und dann schreibe ich noch den Befehl „size()“ darunter, um dann die Anzahl der eingetragenen Objekte zu bekommen?

    #9353
    Nick Röder
    Teilnehmer

    size() ist eine java-Methode, die Sie u.a. auf List-Objekte anwenden können.

    D.h. sobald sie die Liste der Bestellungen haben können Sie mittels

    lstBestellung.size()

    darauf zugreifen.

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 16)