Verkaufsbelegdruck Feld nicht anzeigen wenn leer und aufücken

dreamar

Mitglied
Hallo,

ich fange gerade erst mit dem Appdesigner für den Verkaufsbelegdruck an und habe eine Frage wie das zu handhaben ist.
Ich möchte gerne, das wenn ein Feld im Angebot leer ist, das dieses Feld nicht angezeigt wird und aber auch das nachfolgende aufrücken.
Sonst würde dort ja eine Platzhalterlücke entstehen. Also unter Verhalten das "Aktiviert" in Abhängigkeit vom Inhalt. Ist das machbar?
Danke
 
Zuletzt bearbeitet:
Hi dreamer,

Ich nehme an, du meinst die AppDesigner- Berichte (Stimulsoft Report-Designer).

In der Regel sind zusammengehörige Elemente mit einem "Andock-Stil" in "panels" gruppiert.
Werden solche Elemente ausgeblendet (Aktiviert = Falsch), dann werden die nachgeordneten Elemente gemäß "Andock-Stil" "nachgerutscht".

Das (De-)Aktivieren geschieht dabei idealerweise direkt in den Eigenschaften des Elements "Aktiviert = Falsch / Wahr".
In den Eingenschaften kann man für "Aktiviert" auch einen Ausdruck hinterlegen von dem das "Faslch oder Wahr" abhängig gemacht wird.

Man muss allerdings beachten, dass die Aktivierung von Elementen oftmals auch per Code (z.B.: lblxxx.Enabled = False) in einzelnen Ereignissen beeinflusst wird und die vorbelegten Eigenschaften des Elements übersteuern.
Im Code kann man die Aktivierung natürlich auch von Bedingungen abhängig machen.
 
Hi dreamer,

Das (De-)Aktivieren geschieht dabei idealerweise direkt in den Eigenschaften des Elements "Aktiviert = Falsch / Wahr".
In den Eingenschaften kann man für "Aktiviert" auch einen Ausdruck hinterlegen von dem das "Faslch oder Wahr" abhängig gemacht wird.
Hallo cmayer,

genau das suche ich. Das ich eine Abhängigkeit bilden kann. nur ich finde die Stelle nicht, bei der ich das eingeben kann. Ich kenne wohl die Bedingungen unter Darstellung, aber nicht die Bedingungen für das Verhalten.
 
Hallo cmayer,

genau das suche ich. Das ich eine Abhängigkeit bilden kann. nur ich finde die Stelle nicht, bei der ich das eingeben kann. Ich kenne wohl die Bedingungen unter Darstellung, aber nicht die Bedingungen für das Verhalten.
Welches Feld soll denn ausgeblendet werden?
Was ist die Bedingung für das Anzeigen - bzw. für das Ausblenden?
 
Guten Morgen,

ich habe eine Eigenschaft als Userfeld an einem Artikel. Diesen möchte ich im Druck als Textfeld hinzufügen. Wenn dieses Feld leer ist, soll das Feld deaktiviert sein, oder halt nicht gedruckt werden und das da runter liegende um eins nach oben rutschen.
 
Guten Morgen,

ich habe eine Eigenschaft als Userfeld an einem Artikel. Diesen möchte ich im Druck als Textfeld hinzufügen. Wenn dieses Feld leer ist, soll das Feld deaktiviert sein, oder halt nicht gedruckt werden und das da runter liegende um eins nach oben rutschen.
Guten Morgen,

Wenn du ein "Benutzerdefiniertes Feld" (User-Feld) in der Klasse "Artikel" angelegt hast, ist es sinnvoll die Sage-Bordmittel zu nutzen um das Feld auch in der Klasse "Verkaufsbelegpositionen" und / oder "Einkaufsbelegpositionen" automatisch übertragen zu bekommen.

Wenn du im Sage-Administrator in der Klasse "Verkaufsbelegpositionen" und/oder "Einkaufsbelegpositionen" ein namensgleiches User-Feld mit gleichem Datentyp / Einstellungen anlegst, dann wird dies in der Belegerfassung automatisch mit den Daten aus dem Artikelstamm gefüllt.
(das macht man im Sage-Administrator idealerweise mit "drag an drop" - das in der Klasse Artikel angelegte Feld eben in die Klasse Einkaufsbelegpositionen und/oder Verkaufsbelegpositionen ziehen)
Auf diese Art hast du die Felder auch in den temporären Tabellen zur Verfügung - und diese werden automatisch in die Datenquelle für den Belegdruck eingebunden. Nebenbei kannst du diese Felder auch in der Belegerfassung (Positionen) anzeigen lassen.

In deinem Bericht (Stimulsoft Report-Designer) musst du an entsprechender Stelle ein neues Textfeld einfügen "txtMeinNeuesFeld" und diesem dann in den Eigenschaften die Datenspalte tKHKPrintPositionArtikel?K_USER_MeinNeuesFeld zuweisen.

Die Bedingung könnte lauten: (ohne Gewähr - nur mal so aus dem Ärmel geschütelt)
txtMeinNeuesFeld.Enabled = Not IsNull(dts?KSubPositionArtikel.tKHKPrintPositionArtikel?K_USER_MeinNeuesFeld"

Das Platzieren kann an der ein- oder anderen Stelle im Bericht etwas tricky sein - gerade, wenn Panel in Panel in Panel angelegt sind - und du mit einem Andock-Stil arbeiten willst.
Da musst du möglicherweise die Größe deines Datenbandes und der Panel anpassen.
Das braucht etwas Übung / Erfahrung und auch ein paar Versuche... ;)

Ich hoffe das hilft dir weiter,

C.Mayer
 
Hallo cmayer,

vielen Dank für deine Hilfe. Bis zu dieser Stelle kenne ich die Vorgehensweise und habe es auch so umgesetzt.

"Die Bedingung könnte lauten: (ohne Gewähr - nur mal so aus dem Ärmel geschütelt)
txtMeinNeuesFeld.Enabled = Not IsNull(dts?KSubPositionArtikel.tKHKPrintPositionArtikel?K_USER_MeinNeuesFeld"

Ich frage mich nur wo ich die Bedingung

txtMeinNeuesFeld.Enabled = Not IsNull(dts?KSubPositionArtikel.tKHKPrintPositionArtikel?K_USER_MeinNeuesFeld"
eintragen muss.
 
Das Feld muss einfach nur die Eigenschaft "Kann schrumpfen" = "Wahr" haben. Wenn das Feld keine Daten enthält und die darunter liegenden Komponenten angedockt sind, wandern diese nach oben.

Wenn ein Feld per Bedingung ausblendet werden soll, geht das auch ohne Code. Es kann dazu über die Bedingungen in den Eigenschaften eine "Hervorhebungs-Bedingung" hinzufügt werden.
 
In der Eigenschaft "Aktiviert" können Ausdrücke eigegeben werden (Abhängigkeiten von anderen Feldern etc.):

1734369171657.png
 
Zuletzt bearbeitet:
wenn es nur darum geht, daß "leere" Felder nicht gedruckt werden - und nachfolgende Felder aufrücken - dann wird das wie diakh richtig schreibt einfach mit der Eigenschaft "Kann schrumpen" = "Wahr" gemacht - und die folgenden Felder mit einem "Andocken-Stil" füllen den Platz auf.

Dazu werden solche Felder in einem Panel "zusammengefasst".
Teilweise werden mehrere Panels (mit einem Andock-Stil) in ein übergeordnetes Panel gelegt, damit man auch hier wieder "zusammenrutschen" kann.
 
Dank eurer Hilfe blicke ich schon deutlich mehr durch. Ich bekomme es auch hin das Sachen hochrücken wenn das Feld drüber leer ist.
Nur habe ich noch ein Problem mit dem Ausdruck beim Aktiviertfeld. Ich habe ein Feld in dem ich folgenden Eintrag im Ausdruck habe:

Name: {dtsVKSubPositionArtikel.****}

Das heißt ich habe erst ein Text mit anschließendem Wert. Das Schrumpfen funktioniert hier ja nicht da der Text als Inhalt fungiert.
Wenn ich das über den Aktiviertausdruck regeln möchte hapert es noch an der genauen Syntax.

Versucht habe ich folgendes:

1) txtMedium.Enabled = Not IsNull(dtsVKSubPositionArtikel.tKHKPrintPositionArtikel"VK_USER_Medium")
2) txtMedium.Enabled = Not IsNull(dtsVKSubPositionArtikel.tKHKPrintPositionArtikelVK_USER_Medium)
 
Du kannst dies auch über eine "Hervorhebungs-Bedingung" lösen (in den Eigenschaften vom Textfeld unter "4. Darstellung": "Bedingungen").
Dann brauchst Du Dich nicht mit der Syntax beschäftigen:

Bedingung.png
 
Dank eurer Hilfe blicke ich schon deutlich mehr durch. Ich bekomme es auch hin das Sachen hochrücken wenn das Feld drüber leer ist.
Nur habe ich noch ein Problem mit dem Ausdruck beim Aktiviertfeld. Ich habe ein Feld in dem ich folgenden Eintrag im Ausdruck habe:

Name: {dtsVKSubPositionArtikel.****}

Das heißt ich habe erst ein Text mit anschließendem Wert. Das Schrumpfen funktioniert hier ja nicht da der Text als Inhalt fungiert.
Wenn ich das über den Aktiviertausdruck regeln möchte hapert es noch an der genauen Syntax.

Versucht habe ich folgendes:

1) txtMedium.Enabled = Not IsNull(dtsVKSubPositionArtikel.tKHKPrintPositionArtikel"VK_USER_Medium")
2) txtMedium.Enabled = Not IsNull(dtsVKSubPositionArtikel.tKHKPrintPositionArtikelVK_USER_Medium)
Hi,
Ich denke da fehlt womöglich noch ein „Komma“ - siehe mein Screenshot mit dem Code- Beispiel.
(Sorry hatte ich wohl in meinen Beispielen vergessen)
txtMeinNeuesFeld.Enabled = Not IsNull(dts?KSubPositionArtikel.tKHKPrintPositionArtikel?,“VK_USER_MeinNeuesFeld"
Ich sitze aber aktuell nicht vor dem AppDesigner - hier musst du dir die korrekte Syntax von „IsNull“ und den Aufbau der USER-Feldern nochmals anschauen.
 
Zurück
Oben