Inaktiv Variable die mitzählt, möglich?

K3Ks

Gut bekanntes Mitglied
26. März 2008
186
10
Hallo,

ist es möglich im Formulareditor eine eigene Variable zu nutzen, die beim Lieferschein zB mitzählt?

Beispiel: 3 Positionen am Lieferschein zu jeweils 5 Stk. Nun soll nach/während des Abarbeitens des Berichtscontainers in einer Variable die Zahl 15 gespeichert bzw. verfügbar sein?

Ist so etwas möglich oder sind derartige Berechnungen nicht im Formulareditor drinnen?


Danke & LG,
Christian
 

K3Ks

Gut bekanntes Mitglied
26. März 2008
186
10
Hallo!

So, ich bin fündig geworden mit SetVar und GetVar, aber das Verhalten dieser beiden Variablen verstehe ich nicht.
Wenn ich folgendes im Formulareditor in der Datenzelle einer Tabelle eingebe, kann ich das Verhalten nicht nachvollziehen:

SetVar("TMP",54,True) + ... SetVar("VP2"),GetVar("TMP"),True)

Kommt raus 54 .. klar

So, und nun das Phänomen:

SetVar("TMP",54,True) + ... SetVar("VP2"),GetVar("VP2")+GetVar("TMP"),True)

Ergibt .. 108 .. ja, ne is klar?!

Sprich er liest zuerst VP2 aus, dies ist 0, schreibt dann 54 rein, und liest diese scheinbar nochmal aus und schreibt erneut 54 rein und somit kommt 108 raus?!
Wie kann ich dieses Phänomen bzw. Verhalten umgehen?

Danke
 

K3Ks

Gut bekanntes Mitglied
26. März 2008
186
10
Ja durch zwei Teilen ist eine Option, Problem sehe ich nur wenn dies über mehrere Zwischensummen läuft ;)
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
402
Hallo @K3Ks,

tut mir leid, aber hier kann ich Dir nicht helfen, denn die SetVar() und GetVar() Funktionen sind leider unbrauchbar. Da kannst Du lange rumprobieren und vielleicht klappt es sogar mal, dann solltest Du die Wawi aber am Besten nie wieder zumachen, denn beim nächsten Start werden die Karten wieder neu gemischt... :confused:

Am besten und einfachsten kannst Du solchen simplen Zählaufgaben durch eine JTL_DirectQuery() mit SQL Code erledigen. Dazu findest Du (auch) von mir hier im Forum einige Beispiele, teilweise auch mit direktem Bezug zum Ersatz für SetVar() und GetVar().

Nachtrag: Warum eine JTL_DirectQuery() und nicht zum Beispiel eine Summenvariable in List & Label? Weil die auch völlig seltsam zählen und ich noch nicht dahinter gestiegen bin, was da los ist. SQL funktioniert IMMER!!!

Gruß,
Ingmar
 

Eiko

Aktives Mitglied
26. Juni 2017
58
3
Hallo @K3Ks,

Am besten und einfachsten kannst Du solchen simplen Zählaufgaben durch eine JTL_DirectQuery() mit SQL Code erledigen. Dazu findest Du (auch) von mir hier im Forum einige Beispiele, teilweise auch mit direktem Bezug zum Ersatz für SetVar() und GetVar().

Gruß,
Ingmar

Das ist ja eine schöne Funktion. :)

Also in der Art JTL_DirectQuery ("SELECT (5+1)")?
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
402
@Eiko - Der war gut... :D

Aber nur für den Fall, dass Du das Ernst gemeint hast, klar, das ginge auch, aber ich meinte das Zählen und Sortieren, Aussortieren auf Basis der zugehörigen Bestellpositionen in der Datenbank. Meistens geht sowas dort ganz einfach, schwierig wird's erst dann wenn Stücklisten im Spiel sind, denn die sind in der Liste der Bestellpositionen zusätzlich zum Vaterartikel aufgelistet und dann muss man "intelligent" aussortieren, was nur über mehrere JOINs geht.

Ein anderer Forumsnutzer (@ThorstenR1) hat mir in der Zwischenzeit aber auch noch etwas gezeigt, das ich noch gar nicht kannte und zwar, dass die List & Label Befehle Sum(), Count() und CountIf() jeweils einen zweiten und optionalen Boolean Parameter, also True oder False akzeptieren, der festlegt, ob die gezählten oder summierten Werte nach der Ausgabe gelöscht werden sollen oder nicht.

Vielleicht läßt sich das Ganze damit ja sogar noch viel einfacher realisieren.
 

Eiko

Aktives Mitglied
26. Juni 2017
58
3
:D
Das war mehr beispielhaft gemeint. Ich müsste mal schauen, was mit JTL_DirectQuery so alles möglich ist, ob man also bspw. Variablen irgendwie speichern kann. Das zusätzliche Problem bei SetVar und GetVar ist mMn nämlich, dass die nicht innerhalb einer Tabelle funktionieren. Das in SetVar gespeicherte kann ich nur in einer anderen Tabelle abrufen.

Ich wollte letztens in der Positionsliste den Positionszähler dahingehend verändern, dass er für Freitextzeilen, Versandzeilen etc. keine Positionsnummer anzeigt und aber auch intern entsprechend 1 abzieht, damit der Zähler dann weiter fortlaufend ist. Ich habe über Summenvariablen, Get- und SetVar usw. keinen Weg gefunden und bin fast dran verzweifelt. Vielleicht geht es ja jetzt mit einer SQL-Query.
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
402
Hallo Eiko,

vergiss SetVar() und GetVar(), denn die funktionieren dann doch schon "eigentlich überall", nur nicht immer und nicht immer gleich gut. Mal geht's und mal nicht, aber die beiden Funktionen haben auch ganz grundsätzliche und gravierende Einschränkungen. Dazu habe ich mich an anderer Stelle hier im Forum ausgelassen. Die beiden Funktionen sind entweder schon von Combit schlecht in L&L angelegt, oder aber JTL hat's bei der Implementierung der eigenen Objekte vermasselt, kann ich nicht sagen, ist aber auch egal, weil meine langjährige Erfahrung mit JTL ganz klar zeigt, dass wir da zumindest nicht auf schnelle Abhilfe hoffen dürfen, also Plan B...

Mit den JTL_DirectQuery() und vor allem dem JTL_DirectTableQuery() Befehl geht viel!!! - Wenn man erst anfängt, sich damit zu beschäftigen, denkt man noch so in etwa String=1Zeile, also dass das, was man übergibt begrenzt ist, das ist aber definitiv nicht so. Letztlich ist hier ein Übergabestring nicht eine einzige Zeile bis zu einem "Return", sondern alles, was in die Anführungszeichen eingeschlossen ist und das kann auch ein komplettes SQL Programm über 100 Zeilen sein.

Die selektiven Positionsnummern sind z.B. ganz leicht mit einer JTL_DirectQuery() zu erschlagen, here we go...
Code:
Fstr$(JTL_DirectQuery("SELECT COUNT(nSort) FROM tbestellpos WHERE nSort<"+ToString$(Count(Auftragspositionen.InterneAuftragspositionnummer, false)+1)+" AND nType=1 AND tBestellung_kBestellung="+ToString$(Vorgang.InterneAuftragsnummer)),"##&")
... und damit dieser unhandliche Query-Text nicht überall in der Vorlage steht, erzeugst Du Dir im Bereich Projekt > Benutzervariablen eine Variable namens @PositionsNummer und schreibst da den Coden rein. Jedes Mal, wenn Du dann im Vorlagentext @PositionsNummer ansprichst, wird der Code ausgeführt und die aktuelle Positionsnummer geholt.

Dann bleibt nur noch das Problem, dass die Query immer den Zähler "bis hierher" zurückliefert, Du also noch dafür Sorge tragen mußt, dass die Positionsnummer auch nur für reguläre Artikel angezeigt wird. Die Abfrage, ob der aktuelle Artikel ein regulärer und keine Freiposition oder Versandposition ist, geht mit folgendem Code ...
Code:
JTL_DirectQuery("SELECT nType FROM tbestellpos WHERE kBestellPos="+ToString$(Auftragspositionen.InterneAuftragspositionnummer))<>1
... und auch hier legst Du Dir wieder eine Benutzervariable mit Namen @doNotShow an und gibst ihr den obigen Code.

Damit reduziert sich die Formel, die Du unten im Berichtscontainer für die Positionsnummern verwendest, auf gerade mal ...
Code:
Cond(@doNotShow,"",@PositionsNummer)

Das war's und alles was es dazu braucht ist ein guter portabler SQL Editor wie HeidiSQL und ein bißchen Zeit, um die Datenbankstruktur der Wawi zumindest in Grundzügen zu begreifen... :)

Gruß,
Ingmar
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Eiko

Eiko

Aktives Mitglied
26. Juni 2017
58
3
Das funktioniert perfekt, danke dir. :)

Ich hoffe, es ist ok, wenn ich hier abschweifend noch kurz weiterschreibe? Ich hab es noch an meine Bedürfnisse angepasst, weil Freipositionen ja schon eine Positionsnummer haben sollen. Was nicht dastehen soll sind die Versandpositionen und meine selbst definierten Freitextzeilen, also Zeilen/Texte innerhalb der Positionsliste, welche über die ganze Breite gehen. Hierfür habe ich mir einen Artikel gemacht und der Text steht im Hinweis.

Wenn ich die Tabelle tbestellpos richtig verstehe, dann sind Artikel nType=1, Versandpositionen nType=2 und Freipositionen nType=0?

HeidiSQL muss ich mir mal anschauen, bisher verwende ich eigentlich ausschließlich das Management Studio vom SQL-Server.
 

Eiko

Aktives Mitglied
26. Juni 2017
58
3
Hallo,

ist es möglich im Formulareditor eine eigene Variable zu nutzen, die beim Lieferschein zB mitzählt?

Beispiel: 3 Positionen am Lieferschein zu jeweils 5 Stk. Nun soll nach/während des Abarbeitens des Berichtscontainers in einer Variable die Zahl 15 gespeichert bzw. verfügbar sein?

Ist so etwas möglich oder sind derartige Berechnungen nicht im Formulareditor drinnen?


Danke & LG,
Christian

Damit das nicht ganz untergeht - Geht das nicht mit einer simplen Summenvariable, welche
Code:
Auftragspositionen.Menge/2
zum Inhalt hat? Die addiert doch dann bei jeder Berichtsposition die Menge zu der Variable und du hättest dein 3 Positionen zu 5 Artikeln=15 in der Summenvariable stehen.
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
402
@Eiko - Ja, die nTypes von oben sind korrekt. Ob es noch mehr gibt, kann ich nicht sagen. Das SQL Management Studio ist wirklich mächtig, aber auch mächtig groß und behäbig. HeidiSQL ist super klein, gibt es portabel und es kann trotzdem alles wichtige wie Favoriten, suchen, filtern, Code Schnipsel, etc. - In manchen Dingen gäbe es besseres, wie das auch erwähnte dBeaver, aber in der Summe ist HeidiSQL für mich inzwischen so eine Art Schweizer Messer geworden. Zum ernsten "SQL Coden" würde ich was anderes nehmen, aber bis ~20 Zeilen Code ist es wirklich gut ...

@K3Ks - Was die Frage nach den Summenvariablen angeht, hatte ich oben ja schon geschrieben, dass @ThorstenR1 mir gezeigt hat, dass die List & Label Funktionen Sum(Ausdruck,[Boolean]), Count(Ausdruck,[Boolean]) und CountIf(Ausdruck,[Boolean]) jeweils diesen in eckigen Klammern als optional deklarierten Boolean Parameter haben, mit dem man steuern kann, ob das Anzeigen einer dieser Funktionen die Zählung/Summierung zurücksetzt (True) oder nicht (False).

Der Defaultwert ist hierbei nämlich True, was Löschen/Zurücksetzen bedeutet und da der Parameter auch noch Optional ist und weder in der Online Hilfe noch im PDF Manual mehr als erwähnt wird, habe ich ihn bisher nicht wahrgenommen und die Funktionen deshalb als eher untauglich für diese Zwecke abgetan. Das ist aber weit gefehlt, denn gibt man z.B. ...
Code:
Sum(Lieferscheinpositionen.Menge,False)
... als Formel ein (also mit False), dann zählt die List & Label Funktion brav weiter auch wenn man zwischendurch ihren aktuellen Wert abfragt und/oder ausgibt. Das heißt, dass dieser klitzekleine Code wahrscheinlich die exakte Antwort auf Deine ursprüngliche Frage ist!

P.S. Man könnte sie auch für solche Sache, wie sie @Eiko haben will, verwenden, aber ich denke, sie sind dann am Besten geeignet, wenn die relevanten Variablen, die sie zählen oder summieren sollen, alle schon "einfach so" in der Vorlage vorliegen.

Gruß,
Ingmar
 
Zuletzt bearbeitet:

wawi-dl

Sehr aktives Mitglied
29. April 2008
6.477
745
Für nType gibt es verschiedene Codes, die man sich mühsam sammeln muss ... eine Doku seitens JTL wäre hierzu hilfreich.

nTypes:
0 = Freitext (auch Zusatzverpackung möglich?!)
1 = Artikel
2 = Versandposition
3 = Gutschein / Kupon
4 = ???
5 = Zahlungsrabatt (JTL Shop)
6 = Inselzuschlag / Spedition (JTL Shop)
7 = ???
8 = Zahlungsgebühr (JTL Shop, Nachnahme)
9 = Funktionsattribut
 

wawi-dl

Sehr aktives Mitglied
29. April 2008
6.477
745
MEGA, hatte ich schon mal als Wunsch geäußert ;)
Bitte dann die Liste ergänzen, das würde ungemein HELFEN!
 

SebastianB

Moderator
Mitarbeiter
6. November 2012
2.084
339
Hallo,

die Positionstypen werden letztlich vom Shopsystem festgelegt. Der Wawi sind die (bis auf wenige Ausnahmen) relativ egal. In der JTL-Wawi relevant sind
0 = Freiposition
1 = Artikel mit Bezug zu tArtikel
2 = Versandposition
und noch
11 = Gratisgeschenk

Alle anderen Positionstypen werden in der JTL-Wawi schlicht ignoriert (bzw. halt einfach durchgeschliffen).

Es kann also sein, dass manche Positionstypen mehrfach vorkommen, aktuell gar nicht mehr vorkommen oder neue hinzukommen.

Die Positionstypen die der JTL- Shop sendet kann man im Quelltext vom JTL-Shop nachschauen. Die Positionstypen die über Fremdconnectoren reinkommen kenne ich auch nicht.

Mein Stand ist (und der muss durchaus nicht korrekt oder vollständig sein, da es wie gesagt für die Wawi völlig egal ist):
3 = Coupon
4 = Gutschein
5 = Zahlungszuschlag
6 = Versandzuschlag
7 = Neukundencoupon
8 = Nachnahmegebühr
9 = Versandzuschlag für Artikel
10 = Verpackungsgebühr
11 = Gratisgeschenk
12 = TrustedShops
13 = Zinsaufschlag
14 = Bearbeitungsgebühr
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
402
... und ich auch nicht, aber Kunststück, ich habe mich ja auch lange nicht so weit aus dem Fenster gelehnt, wie Du... :rolleyes:
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Shop 5 globale Variable die aus der Wawi gefüllt wird? Allgemeine Fragen zu JTL-Shop 0
Buchhaltung vollautomatisiert für die Schweiz JTL-Wawi 1.10 4
Neu Gutscheine werden nicht an die WaWi übermittelt Modified eCommerce-Connector 0
Neu Kundenkonto verknüpfen > "Die Anforderung wird nicht unterstützt" Installation von JTL-Wawi 1
"Geisterplattformen" löschen bzw wo werden die einzelnen Plattformen gespeichert? JTL-Wawi 1.10 1
Neu JTL Wawi 1.10.14.3 / Unbehandelte Ausnahme im WaWi-Error-Log / Die Sammlung wurde geändert. Der Enumerationsvorgang kann möglicherweise .... JTL-Wawi - Fehler und Bugs 1
Neu Von 0.99923 auf aktuell - mir fehlen die 1.5.52. und die 1.8.10.0 Installation von JTL-Wawi 1
Neu In die Schweiz versenden Arbeitsabläufe in JTL-Wawi 0
Neu Wie kommen die Versandarten aus JTL-Wawi in den JTL-Shop? Betrieb / Pflege von JTL-Shop 7
Neu Dinge die mir fehlen.... JTL-Shop - Ideen, Lob und Kritik 3
Neu seit Montag werden die Versanddaten nicht mehr zu amazon übertragen Amazon-Anbindung - Fehler und Bugs 2
Neu bei bestimmten Kunden muss die Rechnung beigelegt werden / wie erfolgt dies? Arbeitsabläufe in JTL-Wawi 8
Neu Auf die Rechnung soll der normale Artikelname stehen, nicht Amazon Name Amazon-Anbindung - Fehler und Bugs 5
Neu Die folgenden Dateien sind nicht identisch mit den Dateien der aktuellen Version von JTL-Shop. Allgemeine Fragen zu JTL-Shop 0
Neu define('CONSISTENT_GROSS_PRICES', true) - wird nicht aktiv Sendungen in die Schweiz Betrieb / Pflege von JTL-Shop 0
Neu Bei allen Artikeln aus einer Execlliste die Lieferzeiten einheitlich setzen. JTL-Wawi 1.6 4
Neu Die Leiferantendaten bei Artikelstammdaten lassen sich per Ameise nicht ändern User helfen Usern - Fragen zu JTL-Wawi 6
Neu Paypal: Klappt bei euch die erweiterte Kreditkartenzahlung? Plugins für JTL-Shop 8
Neu Workflows: Wie genau funktioniert die Ausliefern-Aktion User helfen Usern - Fragen zu JTL-Wawi 4
Neu In welcher Datenbanktabelle findet sich die Sortiernummer? User helfen Usern - Fragen zu JTL-Wawi 4
Neu Artikel exportieren, die keine Verknüpfung bei Bild haben JTL Ameise - Eigene Exporte 5
Neu Suche Linux-Spezialisten für die Betreuung von unseren Servern Dienstleistung, Jobs und Ähnliches 1
Neu DHL Versenden 3.0 - Versand von US-Ware in die Schweiz blockiert JTL-ShippingLabels - Fehler und Bugs 0
Neu In welcher Tabelle werden die Daten für den Amazon Lister 2.0 gespeichert? Amazon-Lister - Fehler und Bugs 5
Neu Ich habe eben einen neuen Shop erstellt und alle Artikel übertragen, aber leider werden mir bei den Versandarten die Versandklassen nicht angezeigt User helfen Usern - Fragen zu JTL-Wawi 1
Anhänge - Wo liegen die? JTL-Wawi 1.8 2
Neu Ist es nicht möglich unter Plattformen - Neukunden sich die Mobilnummer anzeigen zu lassen, mit der die Kunden sich regsitriert haben? User helfen Usern - Fragen zu JTL-Wawi 2
Ebay Angebot mit Kindartikel die keinen Bestand haben per Ameise importieren JTL-Wawi 1.6 5
Neu Die Ticket-Shop-Spurnummer kommt an, nachdem die Bestellung bereits storniert wurde JTL-Wawi - Fehler und Bugs 0
Kunde haut mir die E-Rechnung um die Ohren. Länge des BT-131 sollte 2 Nachkommastellen haben JTL-Wawi 1.9 6
Neu Wie bringe ich die Anzeige der Lieferzeit in alle Artikelseiten? Allgemeine Fragen zu JTL-Shop 7

Ähnliche Themen