[Gelöst] Data Type in Belegen für Texte unbestimmter Länge

21. Mai 2010 13:29

Hallo!

Ich muss auf den Verkaufsbelegen alle Seriennummern andrucken.

Wie ich die Seriennummern bekomme ist so weit klar (Aus den Artikelposten, entsprechende Filter setzen mit Setfilter, Daten in einer Schleife abrufen.)

Die Frage ist: Wo schreibe ich die Nummern rein?

DataType Text ist ja endlich per Definition, taugt daher nicht da die Stellenzahl nicht reichen kann.

Ob BigText das richtige ist, da habe ich Zweifel.

Bleibt als noch ein Array. Hat C/AL einen Array?

oder

ein Satz von Variablen, die während der Laufzeit erzeugt werden, aber in der Source Expression kann ich immer nur 1 Variable angeben, das taugt also auch nicht, sofern es ginge.

Danke für Tipps
Zuletzt geändert von tortelinski am 25. Mai 2010 16:10, insgesamt 1-mal geändert.

Re: Data Type in Belegen für Texte unbestimmter Länge

21. Mai 2010 13:37

Die Cside-Hilfe müsste doch allerhand zum Thema Array raus spucken?

Re: Data Type in Belegen für Texte unbestimmter Länge

21. Mai 2010 13:45

Stimmt unter C/AL Datay Types ganz unten, aber ein gescheites Beispiel, überhaupt ein Beispiel, wie man die Dinger definiert, hat es nicht.

Arrays of Variables
You can create 10-dimensional variables, using the simple and complex data types. There are no limitations on how many elements a dimension can contain but an array variable can never have more than 1,000,000 elements. The physical size of an array is limited to 2 GB (or available memory). Arrays are always indexed with a number for each dimension that ranges from 1 to (and including) the size of the dimension. If you accidently index outside the range of the dimensions of an array, a runtime error occurs.

For example, assume that SampleArrayVariable is a one-dimensional array variable of data type integer, with the dimension 10. To index the first element, use SampleArrayVariable[1]. To index the last element, use SampleArrayVariable[10].

As another example, assume that SampleArrayVariable2 is an array variable of data type Date with the dimensions 2x3x4. SampleArrayVariable2 has 24 elements. To index the first element, use SampleArrayVariable2[1,1,1]. To index the last element, use SampleArrayVariable2[2,3,4].

Re: Data Type in Belegen für Texte unbestimmter Länge

21. Mai 2010 13:56

Suchst du die Einstellungen für die Dimensionen, oder wo liegt das Problem?

Ein Beispiel für ein Array findest du auf fast jedem VK-Beleg im Kopf. Da gibt es ein Array, in dem die Adresse gedruckt wird.

Re: Data Type in Belegen für Texte unbestimmter Länge

21. Mai 2010 16:55

Guten Tag

tortelinski hat geschrieben:Die Frage ist: Wo schreibe ich die Nummern rein?

Wo Du sie haben willst und abfragen kannst (z.B. aus T6507 "Item Entry Relation" oder T32 "Item Ledger Entry").
Daher stellt sich für uns die Frage: Wo willst Du diese Information denn haben?

Bezüglich der Frage nach der Formatierung: Das Feld [Serial No.] ist Data Type = CODE, Length = 20.
Schau Dir doch mal R208 "Sales - Shipment" an; die Section "ItemTrackingLine" hilft Dir evtl. weiter.

Viel Erfolg!

EDIT: Bin nicht sicht, ob wir alle Deine Frage richtig verstanden haben; wegen Deinem Betreff "...Texte unbestimmter Länge". Der grösste zulässige von einem Textfeld ist 250 Zeichen.

Re: Data Type in Belegen für Texte unbestimmter Länge

22. Mai 2010 09:32

Hallo,

ich denke tortelinski möchte eine Belegzeile etwa wie diese haben:
Code:
12345  Bohrmaschine xyz0815       10 Stück
       Seriennummern:
       1234,1235,1236,1237,
       1238,1239,1240,1241,
       1242,1243


Die Lösung mit dem Array ist dann schon die richtige. Du baust dir die Arrayzeilen auf, indem du jeden Index des Textarrays mit Seriennummern auffüllst bis er voll ist (Strlen und MAXSTRLEN sollten hier gute Dienste leisten). Das ganze wiederholst mit den folgenden indexen bis du alle Seriennummern untergebracht hast. Nun merkst du dir, wieviele Arrayeelemente du gefüllt hast.
Um das ganze auf Papier (respektive Bildschirm) zu bringen, musst du nur noch eine "Integer"-Sektion in deinen Bericht einbauen, die von 1 bis Anz. gefüllte Arrayelemente läuft. Dort musst du nur noch Array[Number] ausgeben.

Gruß, Fiddi

Re: Data Type in Belegen für Texte unbestimmter Länge

23. Mai 2010 08:46

fiddi hat geschrieben: *snip*
... die von 1 bis Anz. gefüllte Arrayelemente läuft...


Allerdings muß man beachten, daß man in NAV immer VORHER angeben muß, wie groß das Array NACHHER pro Dimension sein wird. Man kann nicht wie in Java oder C# ein Array:
=> z.B. int n; long [] array1 = new long [n]; n= Integer.parseInt(); System.out.printl("Bitte geben Sie eine 32-Bit Integerzahl ein damit die Länge des Array1 dynamisch zur Laufzeit bestimmt wird !"); erzeugen und abhängig von der Usereingabe in einer Maske das n zur Laufzeit definieren.

edit: für bessere Lesbarkeit für McLane das Quoting gekürzt ;-)
Zuletzt geändert von Freestyler am 23. Mai 2010 12:42, insgesamt 1-mal geändert.

Re: Data Type in Belegen für Texte unbestimmter Länge

23. Mai 2010 11:52

Es dürfte gemeint sein, dass man sein Array großzügig genug wählen und abfangen sollte, falls es voll läuft. Sollte das trotz maximaler Größe wirklich passieren, kann man immer noch auf ein temporäres Record umsteigen.

Re: Data Type in Belegen für Texte unbestimmter Länge

23. Mai 2010 22:16

Also das mit der Arraygröße sollte man sicherlich groß genug dimensionieren. Wenn das nicht geht, muss man die Integer- Sechtion etwas aufwendiger gestallten, aber ich glaube nicht das man unbedingt einen temporären Record dafür braucht.

Gruß, Fiddi

Re: Data Type in Belegen für Texte unbestimmter Länge

23. Mai 2010 22:57

Glaub ich ja auch nicht; wie viele Zeilen sollen das schon werden. War nur allgemein gesagt.

Re: [Gelöst] Data Type in Belegen für Texte unbestimmter Län

25. Mai 2010 16:28

Richtig, das obige Beispiel ist genau meine gesuchte Lösung.

Zunächst gegeben: Kaufzeile über 10 Endprodukte. Seriennummern ausgewählt. Lieferung gebucht.

Gesucht: Ich will alle 10 verkauften Seriennummern andrucken auf unserem Lieferschein und später auch der Rechnung.

Lösung:
Array mit Dimension 1 und Länge 10 erstellen.
In jeden Index oder das jeweilige Arrayfeld die Nummer reinschreiben.
Auf gleiche Weise andrucken.

Prozedural klar, codetechnisch noch zu schreiben.

Gelesen werden sollen die Nummern aus den Artikelposten T32. Weil die da drinstehen mit der Verkaufsmeldung. Oder?

Re: [Gelöst] Data Type in Belegen für Texte unbestimmter Län

27. Mai 2010 10:45

Hallo!

Das Problem ist nun folgendes:

In der Source Expression kann ich nur immer einen Wert angeben: z.B. Seriennummer[1]

Wie erreiche ich, dass in ein konkretes Control alle Seriennummern mehrzeilig abgedruckt werden?

Re: [Gelöst] Data Type in Belegen für Texte unbestimmter Län

27. Mai 2010 10:48

tortelinski hat geschrieben:Gesucht: Ich will alle 10 verkauften Seriennummern andrucken auf unserem Lieferschein und später auch der Rechnung.

Lösung:
Array mit Dimension 1 und Länge 10 erstellen.


Damit dein Array 10 verschiedene Werte speichern kann, braucht er Dimension 10, nicht 1.
Die Länge bemisst sich nach der max. Länge eurer Seriennr.

Wird der Array von Index 1 bis 10 befüllt, kannst du die 10 Werte über
DeinArray[1]
DeinArray[2]
...
andrucken

Re: [Gelöst] Data Type in Belegen für Texte unbestimmter Län

27. Mai 2010 11:27

Ja, richtig, die Länge ist die Dimension, es stehen bei Dimension 10 auch 10 Seriennummern drin.

Ich hätte nur gerne, dass über 1 Control alle Seriennummern gedruckt werden.

Aber in der SourceExpression-Property kann ich nur Seriennummer[1] oder Seriennummer[2] etc eintragen.

Wie man ein Control mit einem Array beffüllt und mehrzeilig macht, habe ich nicht herausgefunden.

Re: [Gelöst] Data Type in Belegen für Texte unbestimmter Län

27. Mai 2010 11:44

tortelinski hat geschrieben:Ich hätte nur gerne, dass über 1 Control alle Seriennummern gedruckt werden.

Aber welchen Vorteil hast du davon? Warum nicht pro Array-Index eine Textbox?

Die einzige Möglichkeit, wenn du das auf Biegen und Brechen umsetzen möchtest:
Nimm eine Textbox, setze Eigenschaft MultiLine = Yes, VertAlign = Top. Ziehe die Textbox so in die Länge, dass 10 Zeilen hineinpassen würden.
Nimm als SourceExpr: DeinArray[1] + '\' + DeinArray[2] + '\' + .... + DeinArray[10]
\ heißt Zeilenumbruch

Re: [Gelöst] Data Type in Belegen für Texte unbestimmter Län

27. Mai 2010 14:11

Ne, dann ist es leider nicht die Lösung. Weil: Bei den Textbausteinen ist es ja so, dass so viele Zeilen angedruckt werden, wie es Textbausteine gibt. Ich kann aber vorab für eine Verkaufslieferung gar nicht sagen, wie viele Seriennummern verkauft werden. Es kann 1 sein, es können auch 30 sein. Daher kann ich vorab die Anzahl der benötigten Zeilen nicht wissen.

Re: [Gelöst] Data Type in Belegen für Texte unbestimmter Län

27. Mai 2010 14:33

Du weißt doch, wie viele Teile des Arrays gefüllt sind.

Re: [Gelöst] Data Type in Belegen für Texte unbestimmter Län

27. Mai 2010 14:41

tortelinski hat geschrieben:Ne, dann ist es leider nicht die Lösung. Weil: Bei den Textbausteinen ist es ja so, dass so viele Zeilen angedruckt werden, wie es Textbausteine gibt. Ich kann aber vorab für eine Verkaufslieferung gar nicht sagen, wie viele Seriennummern verkauft werden. Es kann 1 sein, es können auch 30 sein. Daher kann ich vorab die Anzahl der benötigten Zeilen nicht wissen.

Die Idee mit dem Array hast du doch erst ins Spiel gebracht?
Bei den Textbausteinen verhält es sich wie mit allem Merhzeiligen im NAV-Standard: 1 Zeile angedruckt = 1 Datensatz einer Tabelle = 1 nur eine Body-Section im Report...!
Und genau diese Struktur hast du doch:
Im Report erstellst du ein DataItem Artikelposten, filterst da entsprechend drauf, sodass du an deine Seriennummern kommst.
Jetzt brauchst du nur noch eine Textbox für die Seriennr. in die Body-Section vom Artikelposten-DataItem stellen: Es werden genauso vielen Seriennr.-Zeilen gedruckt wie es Seriennummern laut deinem Filter auf die Artikelposten gibt.

Re: [Gelöst] Data Type in Belegen für Texte unbestimmter Län

27. Mai 2010 15:13

Natalie hat geschrieben: Nimm eine Textbox, setze Eigenschaft MultiLine = Yes, VertAlign = Top. Ziehe die Textbox so in die Länge, dass 10 Zeilen hineinpassen würden.


Das habe ich gemacht, nur stehen in dem Auftrag nur 3 Seriennummern und ich hab jetzt 7 Leerzeilen auf dem Beleg. Das will ich ja nicht haben. Ich will, dass sich die Höhe der Textbox eben auf die Anzahl der Seriennummern anpasst, aber das scheint dieses Multiline ncht zu machen. Diese Multiline-Property hat ja dann nur einen Sinn, wenn die Boxhöhe dynamisch an die benötigte Zeilenzahl angepasst wird.

Re: [Gelöst] Data Type in Belegen für Texte unbestimmter Län

27. Mai 2010 15:27

tortelinski hat geschrieben:Das habe ich gemacht, nur stehen in dem Auftrag nur 3 Seriennummern und ich hab jetzt 7 Leerzeilen auf dem Beleg. Das will ich ja nicht haben. Ich will, dass sich die Höhe der Textbox eben auf die Anzahl der Seriennummern anpasst, aber das scheint dieses Multiline ncht zu machen. Diese Multiline-Property hat ja dann nur einen Sinn, wenn die Boxhöhe dynamisch an die benötigte Zeilenzahl angepasst wird.


Hast du meinen letzten Beitrag überlesen?
Arbeite mit einem neuen DataItem statt einem Array.

Re: [Gelöst] Data Type in Belegen für Texte unbestimmter Län

27. Mai 2010 15:32

Nicht überlesen, ich habs nicht richtig verstanden, wie auch immer.

Weil ich ja schon eine Body-Sektion für die Textbausteine habe und darunter/darüber noch eine mache kommt nur Misch-Masch raus. Dann hat man 1 Zeile Textbox, 1 Seriennummer, 1 Zeile Textbox.

Ich schaffe es nicht dieses Dataitem irgendwo richtig unterzubringen.

Dataitem ist z.B. ein langer Text wo alle Nummern mit Zeilenumbruch drinstehen?

So sieht es aus, vor dem Textboxbody noch ein Body, dann hast Du Salat:

Body (2) ATLAS Storage Dispenser Drawer,
ATLAS Storage Dispenser Drawer,
Body (2) 4 runners pitch heigt,
4 runners pitch heigt,
Body (2) for storage of liquid contents,
for storage of liquid contents,
Body (2) temperature range -80ºC through +120ºC
temperature range -80ºC through +120ºC
Body (2) Empty weight: 6,2 kg
Empty weight: 6,2 kg
Body (2) Capacity: ~12,5 litres
Capacity: ~12,5 litres
Body (2) Gross weight: ~20 kg
Gross weight: ~20 kg
Zuletzt geändert von tortelinski am 27. Mai 2010 15:38, insgesamt 1-mal geändert.

Re: [Gelöst] Data Type in Belegen für Texte unbestimmter Län

27. Mai 2010 15:37

tortelinski hat geschrieben:Dataitem ist z.B. ein langer Text wo alle Nummern mit Zeilenumbruch drinstehen?

Nein: Wenn du bei einem Report in den Design-Modus gehts, siehst du zu allererst ein Gebilde mit zwei Spalten und mehreren Zeilen.
Links steht immer ein Tabellenname, rechts die Bezeichnung.
Jede Zeile = 1 Auslelsung einer bestimmten Tabelle = 1 DataItem.

Pro DataItem kannst Header-, Body, und Footer-Sections anlegen.
Header- und Footer-Sections werden nur angedruckt, wenn für die entspr. Tabelle mind. 1 Datensatz gefunden worden ist.
Eine Body-Section wird für jeden gefundenen Datensatz neu angedruckt

Re: [Gelöst] Data Type in Belegen für Texte unbestimmter Län

30. Mai 2010 11:50

Hallo,

@Natalie,

wenn ich nichts überlesen habe, oder ich da falsch informiert bin, haben Multiline Textboxen einen gravierenden Nachteil: Sie haben eine feste Größe. Du musst vorher wissen, wieviele Zeilen es werden, und das ist gerade das, was tortelinski eben nicht weiß.

Ich habe jetzt mal mein Besipiel in Code gebracht und den Report als Beispiel angehängt. Statt der Artikelposten, habe ich allerdngs die Tabelle integer für die Seriennummern benutzt. Ich hoffe, das ist kein Problem.

Gruß, Fiddi
R50053.txt
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: [Gelöst] Data Type in Belegen für Texte unbestimmter Län

30. Mai 2010 20:37

fiddi hat geschrieben:wenn ich nichts überlesen habe, oder ich da falsch informiert bin, haben Multiline Textboxen einen gravierenden Nachteil: Sie haben eine feste Größe. Du musst vorher wissen, wieviele Zeilen es werden, und das ist gerade das, was tortelinski eben nicht weiß.

Richtig, darum schrieb ich ja:
Natalie hat geschrieben:wenn du das auf Biegen und Brechen umsetzen möchtest

Ich schrieb bewusst nicht: So geht es ohne weitere Probleme ;-)
Die Frage war ja: Ich hab einen Array und möchte alles in eine Textbox - et voilà ...