Home › Forum › Allgemeines › Allgemeines zu Nuclos › Subform zählen
- Dieses Thema hat 15 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 6 Jahren, 10 Monaten von
K. Struckmeier.
-
AutorBeiträge
-
9 Januar 2017 um 11:59 Uhr #9315
K. Struckmeier
TeilnehmerHallo,
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?9 Januar 2017 um 19:25 Uhr #9325Ramin Goettlich
Teilnehmer.get().size()
10 Januar 2017 um 11:28 Uhr #9329K. Struckmeier
TeilnehmerDanke, das werde ich dann gleich mal ausprobieren 🙂
10 Januar 2017 um 11:58 Uhr #9334K. Struckmeier
TeilnehmerGibt 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.
10 Januar 2017 um 12:05 Uhr #9335Nick Röder
TeilnehmerNein das geht nicht. Sie können im Layouteditor beim entsprechenden Feld (Eigenschaft: Aktiv (dynamisch)) mittels Groovy nur einstellen ob es aktiv ist oder nicht.
10 Januar 2017 um 12:07 Uhr #9336K. Struckmeier
TeilnehmerOk 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 hiera=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);}
}10 Januar 2017 um 12:16 Uhr #9340Nick Röder
TeilnehmerDas 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=81982110 Januar 2017 um 12:16 Uhr #9341K. Struckmeier
TeilnehmerWie schreibt man da Regeln?
Im Layout, wenn ich das Feld dynamisch mache?10 Januar 2017 um 12:28 Uhr #9345Nick Röder
TeilnehmerMit Groovy. Beispiel steht im Wiki
10 Januar 2017 um 13:13 Uhr #9347K. Struckmeier
TeilnehmerUnd dann erhalte ich ein Integer den ich dann weiter benutzen kann?
Oder brauche ich Ihren Code und den Code von nuclosian (Ihr Kollege)?10 Januar 2017 um 13:19 Uhr #9348Nick Röder
TeilnehmerIn 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.10 Januar 2017 um 13:23 Uhr #9349K. Struckmeier
Teilnehmerja, 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.
10 Januar 2017 um 13:46 Uhr #9350Nick Röder
TeilnehmerSie 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.
10 Januar 2017 um 13:48 Uhr #9351K. Struckmeier
TeilnehmerUnd dann schreibe ich noch den Befehl „size()“ darunter, um dann die Anzahl der eingetragenen Objekte zu bekommen?
10 Januar 2017 um 16:11 Uhr #9353Nick Röder
Teilnehmersize() 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.
-
AutorBeiträge