none
XSD - Schema - XML Datei 1:n RRS feed

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:

      <?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>
      
      b) Falsch: "in matlabel.Field". Richtig dann IMHO: "in matlabelRow.GetFieldRows()"
      (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
    Dienstag, 1. Februar 2011 06:37

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
    Montag, 31. Januar 2011 19:55
  • Hallo Frank,

    ja richtig, es kommen aber dennoch keine 2 Einträge. Der Counter ist 1.

    Grüße Andreas

    Montag, 31. Januar 2011 20:12
  • 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:

      <?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>
      
      b) Falsch: "in matlabel.Field". Richtig dann IMHO: "in matlabelRow.GetFieldRows()"
      (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
    Dienstag, 1. Februar 2011 06:37
  • Was Du willst ist wohl: diejenigen "Fields", die zu jeweils einem "Label" gehören.

    • .
      
      b) Falsch: "in matlabel.Field". Richtig dann IMHO: "in matlabelRow.GetFieldRows()"
      (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

    Dienstag, 1. Februar 2011 06:42