Datatype Option

14. Oktober 2009 10:28

Guten Morgen,

ich glaube ich habe ein Problem :-(
gibt es ein begrenzung des Datatypes Option?
Ich habe in einer Tabelle ein Optionfeld in dem 16 Opitonen definiert sind, nun brauche ich eine Option mehr
habe sie hinten dran gehängt und im Code der Tabelle versucht diese 17. Option aufzurufen...
beim Speichern bekomme ich dann die Fehlermeldung das es die Option nicht gibt.
Liegt das daran das man nur 16 Strings in so einem Option Feld hinterlegen kann?

MFG

John

Re: Datatype Option

14. Oktober 2009 10:32

Nein, der Fehler muss woanders her kommen.

Wobei: weiß jemand die Grenzen eines Optionstrings (Länge, Anzahl der Optionen)?

Re: Datatype Option

14. Oktober 2009 10:37

Es gibt zwar keine Begrenzung, was die Anzahl Optionen angeht, jedoch kann der OptionString nur eine begrenzte Anzahl Zeichen aufnehmen.

Praktisches Beispiel: Das Feld "Usage" in der Tabelle "Report Selection" enthält mittlerweile soviele Zeichen, dass für die DACH-Region eine eigene Report Selection angelegt wurde, da die zusätzlichen Optionen Zeichen nicht mehr in die ursprüngliche Tabelle passen.

(Leider weiß ich gerade nicht, wieviele Zeichen effektiv in den OptionString passen.)

Re: Datatype Option

14. Oktober 2009 10:46

bei mir hat das Optionfeld 207 Zeichen, das ist die Länge aller Strings zusammen,
wenn ich meine Option noch mit dranhänge sind es 217 Zeichen,
könnte das schon im kritischen Bereich liegen?

Re: Datatype Option

14. Oktober 2009 10:54

Ist kein Problem. Der erste mögliche Wert als Grenze käme wohl bei 256, schätze ich.

Re: Datatype Option

14. Oktober 2009 10:57

Ergänzend zu diesem Thema, möchte ich auf das hier hinweisen:
Typ: Option. Wieviele Optionen?

So wie ich den Beitrag interpretiere, scheint die ML Funktionalität auch noch mit "reinzuspielen". Gut die 140 Zeichen je Sprache werden wohl mehr geworden sein!

Re: Datatype Option

14. Oktober 2009 11:08

danke erstmal für die schnellen antworten.
aber woran kann es denn noch liegen das bei der Fehlermeldung nicht die letzte Option erscheint, ich habe
die Opiton genau wie die vorherigen eingetragen

Re: Datatype Option

14. Oktober 2009 11:14

Hast du zufällig ein Leerzeichen zwischen dem Komma und deinem Optionswert?
Optionswerte müssen ohne Leerzeichen durch Komma getrennt eingetragen werden, da sonst das Leerzeichen schon zum Namen des Optionswertes gezählt wird.

Falls dies nicht der Fall ist, dann wäre es am einfachsten, wenn du hier mal sowohl den OptionString, als auch die dazugehörigen OptionCaptionML posten würdest.

Re: Datatype Option

14. Oktober 2009 11:14

Sollen wir raten, oder gibst du uns mehr Futter? :wink:

Re: Datatype Option

14. Oktober 2009 11:23

Also hier erstmal der OptionString:

Code:
Kundenbefragung Mai 09,Focusgruppe,CCInfas,Beauty Mailing 09,Beauty eGutschein 09,SyltMagazin,SyltFlyerPW,SyltFlyer,SyltEmpfehler,Treue1,Treue2,GutHerz10,GutHerz50,
GutHerzEmp,MagnesiumGratis,KatalogEmpfehler,GutConjoint


OptionCaption

Code:
Kundenbefragung Mai 09,Focusgruppe,CCInfas,Beauty Mailing 09,Beauty eGutschein 09,SyltMagazin,SyltFlyerPW,SyltFlyer,SyltEmpfehler,Treue1,Treue2,GutHerz10,GutHerz50,
GutHerzEmp,MagnesiumGratis,KatalogEmpfehler,GutConjoint


und dann wäre da noch der OptionCaptionML

Code:
DEU=Kundenbefragung Mai 09,Focusgruppe,CCInfas,Beauty Mailing 09,Beauty eGutschein 09,SyltMagazin,SyltFlyerPW,SyltFlyer,SyltEmpfehler,Treue1,Treue2,GutHerz10,GutHerz50,
GutHerzEmp,MagnesiumGratis,KatalogEmpfehler,GutConjoint


hier noch die Fehlermeldung...

navfehler.png


und der Code der zu der Fehlermeldung führt...

Code:
      IF  GAktion=GAktion::GutConjoint           THEN
      BEGIN
            recSalesPrice.RESET;
            recSalesPrice.SETCURRENTKEY(recSalesPrice."Item No.");
            recSalesPrice.SETRANGE(recSalesPrice."Item No.",'GUTCON');
            recSalesPrice.SETRANGE(recSalesPrice."Sales Code",'Privat');
            IF recSalesPrice.FINDFIRST THEN
            BEGIN
                  GWert:=GAnzahl*recSalesPrice."Unit Price";
            END;
      END;
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Datatype Option

14. Oktober 2009 12:40

Ich seh soweit nix ... das kann aber nicht daran liegen, dass du das Objekt, das auf die Tabelle zugreift, schon geöffnet hattest, bevor du die Tabelle mit der neuen Option gespeichert hast?

Re: Datatype Option

14. Oktober 2009 12:49

hmmm... :?:

was wäre denn wenn ich einfach die blanks aus den OptionString entferne damit dürfte ich ja dann schonmal ein paar Zeichen einsparen,
ich verwende die Optionen aber auch an anderen Stellen im Code, ich greife an diesen Stellen immer auf den Namen zu, nicht auf den Index
des OptionStrings.
Was ist denn wenn ich die Blanks entferne und somit den Namen der Optionen verändere, werden die dann Automatisch an anderer Stelle im
Code aktualisiert oder hagelt es dann Fehlermeldungen?

Re: Datatype Option

14. Oktober 2009 13:00

Ich meinte: falls dein Code in einem anderen Objekt als der Tabelle aufgerufen wird und dieses schon im Designer geöffnet war, bevor du die Tabelle mit der neuen Option gespeichert hattest, musst du das andere Objekt erst schließen und neu öffnen.

Re: Datatype Option

14. Oktober 2009 13:04

der Code wird direkt auf der Tabelle ausgeführt, also an einem 2. Objekt kann es nicht liegen.
Weißt du was passiert wenn man den Namen einer Option ändert wird er dann überall aktualisiert?

Re: Datatype Option

14. Oktober 2009 13:24

John Wayne hat geschrieben:Weißt du was passiert wenn man den Namen einer Option ändert wird er dann überall aktualisiert?

Ich möchte nicht meine Eckzähne darauf verwetten, bin aber reichlich sicher, dass die Option intern nur als Zahlenwert gespeichert wird; somit dürfte das kein Problem geben.

Nichtsdestotrotz dürfte das aber auch nicht helfen ....

Re: Datatype Option

14. Oktober 2009 13:40

Kannst du die Fehlermeldung auf einen anderen Server legen oder hier als Text rein schreiben (Fehlermeldung anklicken und Ctrl-C)? Die kann ich nämlich nicht sehen.

Re: Datatype Option

14. Oktober 2009 14:06

McClane hat geschrieben:Ich möchte nicht meine Eckzähne darauf verwetten, bin aber reichlich sicher, dass die Option intern nur als Zahlenwert gespeichert wird

Deine Zähne dürfen bleiben ;-)
Option-Werte sind in Wirlichkeit integer-Werte (beginnend bei 0), die (nur!) innerhalb der Anwendung in Strings übersetzt werden. Daher gibt es theoretisch keine Beschränkung der Optionswerte (bis auf das int-Maximum) - sehr wohl aber des Übersetzungsstrings.

Wenn du den Quelltext vorüber gehend ausklammerst (wobei die Ergänzung GutConjoint schon gespeichert ist),und dann die Tabelle "run"st - ist GutConjoint im Lookup des Feldes enthalten?

McClane hat geschrieben:kannst du die Fehlermeldung auf einen anderen Server legen oder hier als Text rein schreiben (Fehlermeldung anklicken und Ctrl-C)? Die kann ich nämlich nicht sehen.

Besser: Wenn die Fehlermeldung erscheint, mit Strg+C speichern und dann hier als Text einfügen. Wird dann auch über die Forensuche gefunden.

Re: Datatype Option

14. Oktober 2009 14:33

McClane hat geschrieben:...Ich möchte nicht meine Eckzähne darauf verwetten, bin aber reichlich sicher, dass die Option intern nur als Zahlenwert gespeichert wird; somit dürfte das kein Problem geben..


Du kannst ruhig Deine Zähne drauf verwetten, es wird intern mit einem Integer gearbeitet 8-)
Der String fäng wie in der Programmierung üblich mit 0 (Null) an.
(Siehe auch Online-Hilfe)
z.B. gegeben eine Option opt1 (OptionString = Angebot,Auftrag,Rechnung)
Code:
// Das klappt
opt1 := opt1::Auftrag;

//Genauso wie
opt1 := opt1::"1";


**Edit by Mikka**
Ok, Natalie war schneller. Ich Poste das Beispiel mal trotzdem.

Es gibt aber eine Einschränkung (ich habe den Thread heute als Anregung für ein paar Tests genommen).
Der Option String darf nicht länger als 1024 Zeichen sein, jedoch abzüglich ca. 4 Zeichen (Byte) je OptionValue.

Das Maximum war z.B. wenn ich diesen Text "T1" fortlaufen durchnummeriert einfüge (bis "T118"), kann ich dieses 118 x machen.
(dann kommt eine Fehlermeldung, das der String nicht länger als 1024 Zeichen sein darf!)

opt.jpg

Je länger die einzelnen Texte (je OptionValue), desto weniger Optionvalues können angelegt werden!
Wenn ich z.B. einen Text wie diesen DiesesIsteinLangerTextMitDerNummer1 fortlaufen durchnummeriert einfüge, kann ich dieses 24 x machen

Navision scheint für die Interne Verwaltung auch noch Platz zu benötigen (oder ich übersehe noch etwas!), da ich in Summe der Zeichen + 4 Byte je Option Value nie über "rechnerische" Werte von 1000 komme.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Datatype Option

14. Oktober 2009 15:02

mikka hat geschrieben:Der Option String darf nicht länger als 1024 Zeichen sein, jedoch abzüglich ca. 4 Zeichen (Byte) je OptionValue.

Das Maximum war z.B. wenn ich diesen Text "T1" fortlaufen durchnummeriert einfüge (bis "T118"), kann ich dieses 118 x machen.
(dann kommt eine Fehlermeldung, das der String nicht länger als 1024 Zeichen sein darf!)

Die Fehlermeldung ist also mal wieder ein Knüller :mrgreen:

Super, vielen Dank für deine Mühe :-)

Re: Datatype Option

14. Oktober 2009 15:31

McClane hat geschrieben:Die Fehlermeldung ist also mal wieder ein Knüller :mrgreen:
Super, vielen Dank für deine Mühe :-)


Gern geschehen, ich freu mich, wenn ich "auch mal was" zu Community beitragen kann :-)
Die Fehlermeldung ist "quasie" Korrekt, aber zumindest ein 'hint' in die richtige Richtung.

Leider haben wir immer noch keine Lösung für :greenarrow: John Wayne´s Problem.
(Hab leider auch keine Zeit zum Experimentieren im Moment)

Re: Datatype Option

14. Oktober 2009 15:37

mikka hat geschrieben:Leider haben wir immer noch keine Lösung für John Wayne´s Problem.
(Hab leider auch keine Zeit zum Experimentieren im Moment)

Siehste, das habe ich dafür übernommen. Eine Tabelle mit einem Feld, das den oben angegebenen Optionstring hat, klappt problemlos.

Re: Datatype Option

14. Oktober 2009 17:58

McClane hat geschrieben:Kannst du die Fehlermeldung auf einen anderen Server legen oder hier als Text rein schreiben (Fehlermeldung anklicken und Ctrl-C)? Die kann ich nämlich nicht sehen.
Ich habe die Datei nun von Imageshack auf unseren Server "umgezogen", damit wir nicht von der Verfügbarkeit/Performance fremder Server abhängig sind.

Re: Datatype Option

14. Oktober 2009 19:22

McClane hat geschrieben:Der erste mögliche Wert als Grenze käme wohl bei 256, schätze ich.

Das war die Grenze bei 2.x Versionen, wurde dann auf 1024 erhöht (technisches Upgrade reicht ggf.).