Default Option Wert wird ignoriert

15. April 2008 10:59

Hallo zusammen,

wir haben eine Tabelle in der Artikelgruppen definiert sind. Hier ein Beispiel:

Katalog Gruppe Untergruppe
0 Hund Leinen
1 Katze Näpfe
2 Maus Laufrad
3 Pferd Sattel

Wir haben einen Report geschrieben der uns aus diesen Kategorien eine Art Baumstruktur bastelt. In etwa so:

0
0Hund
0HundLeinen
1
1Katze
1KatzeNäpfe

Der Katalog ist ein Optionfeld und eigentlich klappt das auch ganz gut. Nur ignoriert er leider den ersten Optionwert. Also die 0.
Das ganze sieht dann so aus:

0Hund
0HundLeinen
1
1Katze
1KatzeNäpfe

Er vergisst also nur vom ersten Wert die oberste "Baumstruktur".
Der Code im Report sieht so aus:

Code:
IF SiteFüllen.Shop = 0 THEN BEGIN
re_ProdExp.INIT;

re_ProdExp.g_name := FORMAT(SiteFüllen.Site);
re_ProdExp.g_PrimaryParentCategory := '';
re_ProdExp.g_DisplayName := FORMAT(SiteFüllen.Site);

IF NOT re_ProdExp2.GET(re_ProdExp.g_name) THEN
  re_ProdExp.INSERT;


Wir sind im Moment etwas ratlos. Einen Programmierfehler kann ich darin nun nicht erkennen.
Wobei man hier noch erwähnen sollte das in einem anderen Report der ähnlich funktioniert die 0 korrekt ausgegeben wird. Wobei dieser sich konkret auf einen Artikel bezieht.
Hatte jemand ein ähnliches Problem? Jemandem zu dieser Sache etwas bekannt (Bug oder ähnliches)?

15. April 2008 11:22

Könntest du deine Variablen bitte erklären? Was davon ist z.B "1 Katze Näpfe", und wo wird "1" oder "1Katze" etc. daraus?
Ich hätte eine REPEAT-Schleife o.ä. erwartet.

15. April 2008 11:55

Also wie oben beschrieben ist 1 der Katalog. Katze ist die Gruppe und Näpfe ist Untergruppe. Vielleicht hätte ich die Überschriften mehr hervorheben sollen. Entschuldige bitte.
Katalog ist vom Typ Option. Gruppe und Untergruppe sind vom Typ Text und der Länge 150.

Die Zieltabelle re_ProdExp hat nur Felder des Typs Text.
Der Report hat 3 DataItems. Das erste DataItem (siehe Code oben) soll die erste Baumstruktur in die Tabelle schreiben also:
0
1
2
3

Das zweite DataItem ist für die 2. Ebene zuständig
0Hund
1Katze
2Maus
3Pferd

Und das dritte DataItem ist für die 3. Ebene zuständig:

0HundLeinen
1KatzeNäpfe
2MausLaufrad
3PfedSattel

In der Zieltabelle sähe das dann ungefähr so aus:

g_name g_PrimaryParentCategory g_DisplayName
0................................ '' ............................................0
0Hund .........................0 ............................................0Hund
0HundLeinen ................0Hund .....................................0HundLeinen

Aber anstatt es so auszugeben fängt er erst bei 0Hund an und lässt die Zeile mit 0 weg. Dies macht er aber nur bei 0 bei 1,2,3 etc. macht er es korrekt.
Ich hoffe das war jetzt verständlich :?:

15. April 2008 12:26

Was ist SiteFüllen bzw. SiteFüllen.Site?
Wo wird SiteFüllen gesetzt?

Könnte das Fehlen der 1. Ebene mit "IF SiteFüllen.Shop = 0" zusammen hängen, weil SiteFüllen nicht richtig gesetzt ist? Hast du das gedebuggt?

15. April 2008 12:34

SiteFüllen ist das DataItem also die Tabelle in der die Artikelgruppen drinne stehen. SiteFüllen.Site ist der Katalog.

SiteFüllen.Shop = 0 dürfte eigentlich nicht der Fehler sein. Da der Katalog(Site) NUR in diesem Shop vorhanden ist. Gedebuggt habe ich das deswegen nicht.

Ich sehe den Code ansich nicht als Fehlerquelle. Wenn ich zum Beispiel einen neuen Report mache der auf die Tabelle mit den Artikelgruppen verweist. Und ich dann nur per MESSAGE die Kataloge ausgeben lasse gibt er auch nur ab Katalog 1 aus. Die 0 ignoriert er.

Wir haben das nun mal so geändert das wir den Optionstring von 0,1,2,3,4,5,6,7 auf ,0,1,2,3,4,5,6,7 geändert haben. Anschließend einen Report drüber laufen lassen der die Zuordnung wieder richtet und nun funktioniert es auch. Also die 0 wird ausgegeben. Also vermute ich das da was mit dem Default-Wert (also dem Integer Wert 0 des Optionfeldes) was nicht stimmt.