none
Dataset zu befüllen RRS feed

Antworten

  • Hallo Andreas,

    evtl. solltest Du dich mehr mit dem Code und weniger mit der Klicki-Klacki Oberfläche beschäftigen.

    Ein DataSet kann man sehr einfach über einen DataAdapter füllen.

      http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqldataadapter.fill.aspx

      http://msdn.microsoft.com/de-de/library/zxkb3c3d.aspx

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 15. April 2011 08:36
    Moderator
  • Hallo Andreas,

    es gibt viele Methoden, ein DataSet zu erstellen/befüllen.
    Manuell, von Visual Studio automatisiert, aus einem Datanbank-Schema automatisiert abgeleitet, über eigene T4 Templates erzeugt, mit typsicherem Schema, ohne typsicheres Schema.  Es käme halt darauf an, was der Kontext Deines Wunsches ist. Das einmaligen Anlegen, dann nur noch auslesen lässt da noch zu viele Optionen offen, als dass ich Dir jetzt "eine spezielle" Methode empfehlen könnte.
    [Hier] habe ich zum Beispiel mal beschrieben, wie man ein leeres DataSet mit einem eigenen Schema erstellt. Auch das gäbe es andere Möglichkeiten - je nach Anforderung.

    Ansonsten kann man auch einfach manuell einen DataTable und Rows zufügen [Beispiele].


    ciao Frank
    Freitag, 15. April 2011 09:54
  • Hallo Andreas,

    ist schon ok, wenn der Kunde das mit einem eigenen DataSource auswählen kann.
    Lösung ok :-)

    Es gibt manchmal auch Lösungen, wo diese Auswahl aus den Daten automatisiert generiert wird, aber das passt nicht immer, denn ein bestimmter Auswahl-Wert ist ggf. nicht in den Daten, soll aber auswählbar sein.

     


    ciao Frank
    Montag, 18. April 2011 19:40
  • Hallo Andreas,
    Du meinst hier wahrscheinlich die Rows der Sicht und nicht der Datenquelle ... :
    in meinem Beispiel (Du hast ja jetzt anscheinend vieles wieder geändert) ist das zum Beispiel so:
       var angle = ds.tblAngle.DefaultView.Cast<DataRowView>().
        First(r => r["DisplayText"].ToString() == "180°").Row["AngleRef"];
    
    Für die Datenquelle selber wäre es einfach zum Beispiel:
    var angleD = ds.tblAngle.First(r => r.DisplayText == "180°").AngleRef;


    ciao Frank

    Dienstag, 19. April 2011 18:13

Alle Antworten

  • Hallo Andreas,

    evtl. solltest Du dich mehr mit dem Code und weniger mit der Klicki-Klacki Oberfläche beschäftigen.

    Ein DataSet kann man sehr einfach über einen DataAdapter füllen.

      http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqldataadapter.fill.aspx

      http://msdn.microsoft.com/de-de/library/zxkb3c3d.aspx

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 15. April 2011 08:36
    Moderator
  • Hallo Andreas,

    es gibt viele Methoden, ein DataSet zu erstellen/befüllen.
    Manuell, von Visual Studio automatisiert, aus einem Datanbank-Schema automatisiert abgeleitet, über eigene T4 Templates erzeugt, mit typsicherem Schema, ohne typsicheres Schema.  Es käme halt darauf an, was der Kontext Deines Wunsches ist. Das einmaligen Anlegen, dann nur noch auslesen lässt da noch zu viele Optionen offen, als dass ich Dir jetzt "eine spezielle" Methode empfehlen könnte.
    [Hier] habe ich zum Beispiel mal beschrieben, wie man ein leeres DataSet mit einem eigenen Schema erstellt. Auch das gäbe es andere Möglichkeiten - je nach Anforderung.

    Ansonsten kann man auch einfach manuell einen DataTable und Rows zufügen [Beispiele].


    ciao Frank
    Freitag, 15. April 2011 09:54
  •  Das einmaligen Anlegen, dann nur noch auslesen lässt da noch zu viele Optionen offen, als dass ich Dir jetzt "eine spezielle" Methode empfehlen könnte.

    Hallo Frank,

    die Grundidee ist einfach eine Liste von 30 Items einzulesen.

    Die müssen einmalig angelegt werden, und dann für den User über eine  Combobox auswählbar zur Verfügung stehen.

    Mehr nicht. Per Hand zu befüllen ist etwas mühselig, da ich 4 so Listen habe.

    Ändert sich nie, so eine Art Konfig eben.

    Grüße Andreas


    • Bearbeitet Andreas Bauer2 Sonntag, 17. April 2011 06:48 Formatierung
    Sonntag, 17. April 2011 06:47
  • Hallo Andreas,

    wo sollen denn die (Listen) Daten herkommen? Im Code definiert - in einer XML-Datei definiert?

    Wenn Du Konfig sagst, so hört sich das nicht so an, dass die Daten aus einer Datenbank kommen, und dann wäre der DataAdapter zum Beispiel eher ungeeignet.

     


    ciao Frank
    Sonntag, 17. April 2011 07:19
  • wo sollen denn die (Listen) Daten herkommen? Im Code definiert - in einer XML-Datei definiert?

    Wenn Du Konfig sagst, so hört sich das nicht so an, dass die Daten aus einer Datenbank kommen, und dann wäre der DataAdapter zum Beispiel eher ungeeignet.

    Hallo Frank,

    nein, typisch zum Beispiel.

       - Ref, Wert

        0, 0°

        1, 45°

        2, 90°

        3, 135°

        ....

        n 360°

    Das lade ich in eine Combobox. Das Hauptdataset sepcihert eben nur die Ref.

    Grüße Andreas

    Sonntag, 17. April 2011 08:14
  • Hallo Andreas,

    und die "Ref/Wert" Daten sind im Code (zum Beispiel über eigene Listen) gespeichert - oder wo (Datenbank, oder Datei, ...)  und womit?

     


    ciao Frank
    Sonntag, 17. April 2011 14:01
  • Hallo Frank,

    Tabelle Main
    Ref - Produkt - WinkelRef
     1 -  AA  -  0
     2 -  BB  -  0
     3 -  CC  -  1
    

    Grüße Andreas

     

     

    Sonntag, 17. April 2011 20:43
  • Hallo Andreas,

    ich muss leider das dritte mal das gleiche fragen.

    • und diese "Ref/Produkt/WinkelRef"-Daten (der Tabelle Main) - wo kommen die her?
      Sind die im Code (zum Beispiel über eigene Listen) gespeichert? 
      Oder wo sonst (Datenbank, oder Datei, ...) kommen sie her?
      Man könnte jetzt vermuten, die Speicher-Struktur ist ein DataTable (denn Du hast das Wort Tabelle benutzt).

     


    ciao Frank
    Montag, 18. April 2011 07:04
  • http://www1.minpic.de/bild_anzeigen.php?id=143799&key=37903250

    <?xml version="1.0" encoding="utf-8"?>
    <DataSetROptions xmlns="http://tempuri.org/DataSetROptions.xsd">
     <tblAngle>
      <AngleRef>0</AngleRef>
      <Value>0</Value>
      <DisplayText></DisplayText>
     </tblAngle>
     <tblAngle>
      <AngleRef>1</AngleRef>
      <Value>90</Value>
      <DisplayText>90°</DisplayText>
     </tblAngle>
     <tblAngle>
      <AngleRef>2</AngleRef>
      <Value>180</Value>
      <DisplayText>180°</DisplayText>
     </tblAngle>
    

    Hallo Frank,

    kein Problem, wenn es auch anders geht, gerne nehme ich Tipps entgegen.

      Ich möchte über eine Combobox Winkel, Variablen auswählen können. Mehr nicht.

    Grüße Andreas

    Montag, 18. April 2011 18:19
  • Hallo Andreas,

    Du hast zwar immernoch nicht gesagt, woher die Daten real kommen, aber jetzt lässt sich vermuten, dass es wohl eine XML-Datei ist, die in Deinem Projekt ist und wohl bei der Auslieferung ggf. ins Ausführungsverzeichnis gespielt wird. Wenn Du nur einen Winkel auswählen lassen willst, ist das dann sehr einfach, etwa:

     

       DataSetROptions ds = new DataSetROptions();
       ds.ReadXml(Path.Combine(Application.StartupPath, "Winkel.xml"));
       ComboBox cboWinkel = new ComboBox();
       Controls.Add(cboWinkel);
       cboWinkel.DataSource = ds.tblAngle;
       cboWinkel.DisplayMember = "DisplayText";
    
    

     

    wenn Du nach folgender Methode vorgehst:

    [Aus XML mittels XSD.exe automatisch Schreib-Lese-Zugriffe generieren]
    http://dzaebel.net/XmlXsdLesenSchreiben.htm

    BTW ... in Deiner XML-Datei fehlt das schliessende Tag:

    </DataSetROptions>


    ciao Frank

    Montag, 18. April 2011 18:43
  •  

      DataSetROptions ds = new DataSetROptions();
    
      ds.ReadXml(Path.Combine(Application.StartupPath, "Winkel.xml"));
    
      ComboBox cboWinkel = new ComboBox();
    
      Controls.Add(cboWinkel);
    
      cboWinkel.DataSource = ds.tblAngle;
    
      cboWinkel.DisplayMember = "DisplayText";
    


    Hallo Frank,

    ja es gibt ein Hauptdataset XML Datei halt. Diese hat eine Spalte 'RefAngle', die speichert den Wert der Combobox.

    Nur so wie oben bei Dir, geht es nicht. Beim Öffnen der XML Datei, wäre ja der RefAngle nicht hinterlegt.

    Es gibt auch noch eine Combobox mit 30 Werten, di am Anfang konfiguriert werden, dann in der Regel eine längere Laufzeit haben.

    Grüße Andreas.

    Montag, 18. April 2011 18:53
  • Hallo Andreas,

    was Du genau willst, ist noch nicht 100% klar.
    ich habe "DisplayText" genommen, weil da ein Winkel in Text-Form drin ist.
    Wenn Du den "AngleRef" benötigst, dann nimmst Du halt:

      cboWinkel.DisplayMember = "AngleRef";
    
    

    oder typsicher:

      cboWinkel.DisplayMember = ds.tblAngle.AngleRefColumn.ColumnName;
    

    und wenn nur "Wert": AngleRef und die Anzeige "DisplayText" sein soll, dann zum Beispiel:
      cboWinkel.DisplayMember = ds.tblAngle.DisplayTextColumn.ColumnName;
      cboWinkel.ValueMember = ds.tblAngle.AngleRefColumn.ColumnName;
    

     


    ciao Frank

    Montag, 18. April 2011 19:03
  • Hallo Andreas,

    was Du genau willst, ist noch nicht 100% klar.


    Hallo Frank,

    ich weiß nicht wie ich es sagen soll.

    Hauptdataset

           XML Datei

       Hat eine Spalte Angle, eine Spalte Variablen, eine Spalte Einheiten.

    Der Kunde will jetzt hier auswählen können. Was genau drin stehen soll möchtge er einmalig konfigurieren, um über die Combobox es wählbar anbieten zu können. Deshalb hat jede Combobox ein eigenes Dataset.

    Lösung, gut oder schlecht. Ich weiß es nicht, deshalb frage ich, ob es bessere Ansätze gibt.

    Gruß, Andreas

    Montag, 18. April 2011 19:10
  • Hallo Andreas,

    ist schon ok, wenn der Kunde das mit einem eigenen DataSource auswählen kann.
    Lösung ok :-)

    Es gibt manchmal auch Lösungen, wo diese Auswahl aus den Daten automatisiert generiert wird, aber das passt nicht immer, denn ein bestimmter Auswahl-Wert ist ggf. nicht in den Daten, soll aber auswählbar sein.

     


    ciao Frank
    Montag, 18. April 2011 19:40
  •  cboWinkel.DisplayMember = ds.tblAngle.AngleRefColumn.ColumnName;
    

    und wenn nur "Wert": AngleRef und die Anzeige "DisplayText" sein soll, dann zum Beispiel:
     cboWinkel.DisplayMember = ds.tblAngle.DisplayTextColumn.ColumnName;
     cboWinkel.ValueMember = ds.tblAngle.AngleRefColumn.ColumnName;
    

    Hallo,
    vielleicht noch abschließend.

    Wie könnte man das schneller einfacher abfragen?
    Ich weiß den Namen und möchte die Ref haben.

     public int GetVariableRefFromName(string name)
        {
          int variableRef = -1;
          System.Data.DataView dvVariables = tblVariables.DefaultView;
          foreach (System.Data.DataRowView drv in dvVariables)
          {
            tblVariablesRow tblVRow = (tblVariablesRow)drv.Row;
            if (tblVRow.Name == name)
            {
              variableRef = tblVRow.VariableRef;
              break;
            }
          }
          return variableRef;
        }

    Grüße Andreas

     




    Dienstag, 19. April 2011 17:48
  • Hallo Andreas,
    Du meinst hier wahrscheinlich die Rows der Sicht und nicht der Datenquelle ... :
    in meinem Beispiel (Du hast ja jetzt anscheinend vieles wieder geändert) ist das zum Beispiel so:
       var angle = ds.tblAngle.DefaultView.Cast<DataRowView>().
        First(r => r["DisplayText"].ToString() == "180°").Row["AngleRef"];
    
    Für die Datenquelle selber wäre es einfach zum Beispiel:
    var angleD = ds.tblAngle.First(r => r.DisplayText == "180°").AngleRef;


    ciao Frank

    Dienstag, 19. April 2011 18:13