Benutzer mit den meisten Antworten
XSD - Schema - XML Datei 1:n

Frage
-
Hallo Frank,
ich habe jetzt doch gefallen an XSD gefunden.
Wenn's geht ist es ja auch editierbar, erweiterbar. Man halt halt Funktionen.Nichts desto trotz haberts mal wieder.
Problem 1:N Verknüpfung.
Kannst Du mal kurz drüberschauen, vielleicht siehst du was.Je nach ID möchte ich die Felder auslesen.
Danke für Tipps.
Bild: http://www1.minpic.de/bild_anzeigen.php?id=136927&key=66277909&ende
Projekt:
http://www.materialordner.de/SImJjixhhEIIwb7yO3EUbJtPFzWILDat.html
Oder ist die XML Datei falsch, wenn 2 ID's da sind?
<Label>
<SupplierID>884566</SupplierID>
<Field>
<Name>LabelVersion</Name>
<Label>
<SupplierID>000222</SupplierID>
<Field>
<Name>LabelVersion</Name>
Grüße Andreas
Antworten
-
Hallo Andreas,
Was Du willst ist wohl: diejenigen "Fields", die zu jeweils einem "Label" gehören.
- a) In Deiner XML-Datei ist nicht korrekt definiert, welches Feld zu einem Label gehört.
Du solltest also IMHO die XML-Datei anpassen ... denn Du willst (so vermute ich), dass die beiden ersten Felder zu einem Label gehören. Ich habe mal einfach beim zweiten Feld den </Label> geschlossen. Im DataSet ist ja eine PK- und ForeignKey-Relation eingefügt, die durch den AutoIncrement die Label_ID dann automatisch setzt:
b) Falsch: "in matlabel.Field". Richtig dann IMHO: "in matlabelRow.GetFieldRows()"<?xml version="1.0" standalone="yes"?> <MatLabelConfig> <SupportedVersions> <Version>0002</Version> </SupportedVersions> <Label> <SupplierID>884566</SupplierID> <Field> <Name>LabelVersion</Name> <Position>1</Position> <Prefix>12S</Prefix> <Length>4</Length> <Format>D4</Format> <Required>false</Required> <ReadOnly>true</ReadOnly> <RegExprValid>@12S0002@</RegExprValid> <RegExprInvalid>\b12S\d*\b</RegExprInvalid> </Field> <Field> <Name>CustomerPartNumber</Name> <Position>2</Position> <Prefix>P</Prefix> <Length>18</Length> <Format>AN</Format> <Required>true</Required> <ReadOnly>true</ReadOnly> <RegExprValid>@P[A-Z0-9]{10}@</RegExprValid> <RegExprInvalid>\bP\b|\bP\w{1,9}\b|\bP\w{11,}\b</RegExprInvalid> </Field> </Label> <Label> <SupplierID>000222</SupplierID> <Field> <Name>LabelVersion</Name> <Position>1</Position> <Prefix>12STTTTTTTTTT</Prefix> <Length>4</Length> <Format>D4</Format> <Required>false</Required> <ReadOnly>true</ReadOnly> <RegExprValid>@12S0002@</RegExprValid> <RegExprInvalid>\b12S\d*\b</RegExprInvalid> </Field> </Label> </MatLabelConfig>
(Die Methode entsteht automatisch durch die Foreign-Key-Relation).
... denn Du willst ja wahrscheinlich nur die Felder, die zu dem Label gehören.
ciao Frank- Als Antwort markiert Andreas Bauer2 Dienstag, 1. Februar 2011 06:42
- a) In Deiner XML-Datei ist nicht korrekt definiert, welches Feld zu einem Label gehört.
Alle Antworten
-
Hallo Andreas,
im Projekt gibt es in Form1.cs eine Stelle, wo Du in einer for Schleife folgendes machst:
string id = matlabelRow.Label_Id.ToString();
das muss wahrscheinlich einfach so heissen (der id-Abfrage nach) :
string id = matlabelRow.SupplierID.ToString();
ciao Frank -
Hallo Frank,
ja richtig, es kommen aber dennoch keine 2 Einträge. Der Counter ist 1.
Grüße Andreas
- Bearbeitet Andreas Bauer2 Montag, 31. Januar 2011 20:13 Format
-
Hallo Andreas,
Was Du willst ist wohl: diejenigen "Fields", die zu jeweils einem "Label" gehören.
- a) In Deiner XML-Datei ist nicht korrekt definiert, welches Feld zu einem Label gehört.
Du solltest also IMHO die XML-Datei anpassen ... denn Du willst (so vermute ich), dass die beiden ersten Felder zu einem Label gehören. Ich habe mal einfach beim zweiten Feld den </Label> geschlossen. Im DataSet ist ja eine PK- und ForeignKey-Relation eingefügt, die durch den AutoIncrement die Label_ID dann automatisch setzt:
b) Falsch: "in matlabel.Field". Richtig dann IMHO: "in matlabelRow.GetFieldRows()"<?xml version="1.0" standalone="yes"?> <MatLabelConfig> <SupportedVersions> <Version>0002</Version> </SupportedVersions> <Label> <SupplierID>884566</SupplierID> <Field> <Name>LabelVersion</Name> <Position>1</Position> <Prefix>12S</Prefix> <Length>4</Length> <Format>D4</Format> <Required>false</Required> <ReadOnly>true</ReadOnly> <RegExprValid>@12S0002@</RegExprValid> <RegExprInvalid>\b12S\d*\b</RegExprInvalid> </Field> <Field> <Name>CustomerPartNumber</Name> <Position>2</Position> <Prefix>P</Prefix> <Length>18</Length> <Format>AN</Format> <Required>true</Required> <ReadOnly>true</ReadOnly> <RegExprValid>@P[A-Z0-9]{10}@</RegExprValid> <RegExprInvalid>\bP\b|\bP\w{1,9}\b|\bP\w{11,}\b</RegExprInvalid> </Field> </Label> <Label> <SupplierID>000222</SupplierID> <Field> <Name>LabelVersion</Name> <Position>1</Position> <Prefix>12STTTTTTTTTT</Prefix> <Length>4</Length> <Format>D4</Format> <Required>false</Required> <ReadOnly>true</ReadOnly> <RegExprValid>@12S0002@</RegExprValid> <RegExprInvalid>\b12S\d*\b</RegExprInvalid> </Field> </Label> </MatLabelConfig>
(Die Methode entsteht automatisch durch die Foreign-Key-Relation).
... denn Du willst ja wahrscheinlich nur die Felder, die zu dem Label gehören.
ciao Frank- Als Antwort markiert Andreas Bauer2 Dienstag, 1. Februar 2011 06:42
- a) In Deiner XML-Datei ist nicht korrekt definiert, welches Feld zu einem Label gehört.
-
Was Du willst ist wohl: diejenigen "Fields", die zu jeweils einem "Label" gehören.
-
.
(Die Methode entsteht automatisch durch die Foreign-Key-Relation).
... denn Du willst ja wahrscheinlich nur die Felder, die zu dem Label gehören.
Guten Morgen Frank,
ja richtig erkannt.
.GetFieldRows
OK als wenn ich Primär- zu Fremdschlüssel habe. 1:n
Danke.
Grüße Andreas
-